/**
 * @author Josh
 */
var validator = {
	
	alphaRegxp 		: /^([-A-Za-z ]+)$/,
	nameRegxp 		: /^([-A-Za-z\-\_ ]+)$/,
	alphaNumRegxp 	: /^([0-9A-Za-z ]+)$/,
	numRegxp 		: /^([0-9 ]+)$/,
	emailRegxp 		: /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/,
	passwordRegxp	: /^([a-zA-Z0-9@*#]{6,15})$/,
	regexUse		: '',
	
	errorElements	: [],
	
	validate : function( element, type, errorMsg, addTo ) {
		switch( type ) {
			case 'alpha':
				this.regexUse = this.alphaRegxp;
			break;
			case 'num':
				this.regexUse = this.numRegxp;
			break;
			case 'name':
				this.regexUse = this.nameRegxp;
			break;
			case 'alphaNum':
				this.regexUse = this.alphaNumRegxp;
			break;
			case 'email':
				this.regexUse = this.alphaNumRegxp;
			break;
			case 'password':
				this.regexUse = this.passwordRegxp;
			break;
		}
		if( this.regexUse.test($(element).value) == false ){
			this.errorElements[element] = "error";
			if( addTo == false ) {
				//$(element).up().next().innerHTML = errorMsg;
			} else {
				//$(element).up().next().innerHTML += errorMsg;	
			}
			//$(element).up(1).addClassName('error_li');
			$(element).style.borderColor = 'Red';
		} else {
			//$(element).up().next().innerHTML = '';
			//$(element).up(1).removeClassName('error_li');
			$(element).style.borderColor = 'Silver';
		}	
		
	},
	
	
	passCheck : function() {
		var password = $('password').value;
		var multiply=0;
		if (password.match(/[a-z]+/)) multiply++;
		if (password.match(/[A-Z]+/)) multiply++;
		if (password.match(/\d+/)) multiply++;
		if (password.match(/\s+/)) multiply++;
		if (password.length > 0 && password.match(/\D\W\S/)) multiply++;
		
		var score = password.length*multiply;
		var strengthMeter = $('strength_meter')
		var text = $('password_strength');
		if (score<1) {
			//text.innerHTML = "";
			$('meter1').removeClassName('meter_filled');
			$('meter2').removeClassName('meter_filled');
			$('meter3').removeClassName('meter_filled');
			$('meter4').removeClassName('meter_filled');
			$('meter5').removeClassName('meter_filled');
		}
		else if (score<5) {
			//text.innerHTML = "";
			$('meter1').removeClassName('meter_filled');
			$('meter2').removeClassName('meter_filled');
			$('meter3').removeClassName('meter_filled');
			$('meter4').removeClassName('meter_filled');
			$('meter5').removeClassName('meter_filled');

		} else if (score<10) {
			//text.innerHTML = "Very Weak";
			$('meter1').addClassName('meter_filled');
			$('meter2').removeClassName('meter_filled');
			$('meter3').removeClassName('meter_filled');
			$('meter4').removeClassName('meter_filled');
			$('meter5').removeClassName('meter_filled');

		} else if (score<15) {
			//text.innerHTML = "Weak";
			$('meter1').addClassName('meter_filled');
			$('meter2').addClassName('meter_filled');
			$('meter3').removeClassName('meter_filled');
			$('meter4').removeClassName('meter_filled');
			$('meter5').removeClassName('meter_filled');
			
		} else if (score<20) {
			//text.innerHTML = "Medium";
			$('meter1').addClassName('meter_filled');
			$('meter2').addClassName('meter_filled');
			$('meter3').addClassName('meter_filled');
			$('meter4').removeClassName('meter_filled');
			$('meter5').removeClassName('meter_filled');

		} else if (score<25) {
			//text.innerHTML = "Strong";
			$('meter1').addClassName('meter_filled');
			$('meter2').addClassName('meter_filled');
			$('meter3').addClassName('meter_filled');
			$('meter4').addClassName('meter_filled');
			$('meter5').removeClassName('meter_filled');

		} else if (score >= 25) {
			//text.innerHTML = "Very Strong";
			$('meter1').addClassName('meter_filled');
			$('meter2').addClassName('meter_filled');
			$('meter3').addClassName('meter_filled');
			$('meter4').addClassName('meter_filled');			
			$('meter5').addClassName('meter_filled');
		}
	}
	
	
}
