var checkTerms = function(){
	if($('Terms')){
		if($('Terms').checked==false){
			$('contain_terms').addClassName('form-error');
			$('contain_terms').removeClassName('form-message');
		}else{
			$('contain_terms').removeClassName('form-error');
			$('contain_terms').addClassName('form-message');
		}
	}
}
var checkConduct = function(){
	if($('Conduct')){
		if($('Conduct').checked==false){
			$('contain_conduct').addClassName('form-error');
			$('contain_conduct').removeClassName('form-message');
		}else{
			$('contain_conduct').removeClassName('form-error');
			$('contain_conduct').addClassName('form-message');
		}
	}
}
var checkMember = function(){
	if($('MemberType')){
		if($('MemberType').checked==false){
			$('contain_membertype').addClassName('form-error');
			$('contain_membertype').removeClassName('form-message');
		}else{
			$('contain_membertype').removeClassName('form-error');
			$('contain_membertype').addClassName('form-message');
		}
	}
}

var checkField = function(fieldname,identify){
	if($(fieldname).value==""){
		$('contain_'+fieldname.toLowerCase()).addClassName('form-error');
		$('contain_'+fieldname.toLowerCase()).removeClassName('form-message');
		$(fieldname.toLowerCase()+'_check').innerHTML = "<img src='i/layout/cross.gif' alt='Empty' />Please enter "+identify;
	}else{
		$('contain_'+fieldname.toLowerCase()).removeClassName('form-error');
		$('contain_'+fieldname.toLowerCase()).addClassName('form-message');
		$(fieldname.toLowerCase()+'_check').innerHTML = "<img src='i/layout/tick.gif' alt='OK' />"+identify+" OK";
	}
}

var confirmPassword = function(){
	if($('ConfirmPassword').value){
		if($('Password').value==$('ConfirmPassword').value){
			$('contain_confirmpassword').addClassName('form-message');
			$('contain_confirmpassword').removeClassName('form-error');
			$('confirm_check').innerHTML = "<img src='i/layout/tick.gif' alt='Matches' />Passwords Match";
		}else{
			$('contain_confirmpassword').removeClassName('form-message');
			$('contain_confirmpassword').addClassName('form-error');
			$('confirm_check').innerHTML = "<img src='i/layout/cross.gif' alt='Do not match' />Passwords don't Match";
		}
	}else{
		$('contain_confirmpassword').removeClassName('form-message');
		$('contain_confirmpassword').removeClassName('form-error');
		$('confirm_check').innerHTML = "Please re-type your password";
	}
}

var checkPassword = function(password){
	if(password){
		if(password.length > 26 || password.length < 6){
			$('passtext').innerHTML = "";
			if($('contain_password')){
				$('contain_password').removeClassName('form-message');
				$('contain_password').addClassName('form-error');
			}else{
				$('contain_newpassword').removeClassName('form-message');
				$('contain_newpassword').addClassName('form-error');
			}
			$('pass_check').innerHTML = "<img src='i/layout/cross.gif' alt='Invalid' />Password invalid";
		}else{
			$('passtext').innerHTML = "";
			if($('contain_password')){
				$('contain_password').addClassName('form-message');
				$('contain_password').removeClassName('form-error');
			}else{
				$('contain_newpassword').addClassName('form-message');
				$('contain_newpassword').removeClassName('form-error');
			}
			$('pass_check').innerHTML = "<img src='i/layout/tick.gif' alt='Valid' />Password Valid";
		}
	}else{
		$('passtext').innerHTML = "Please note: Your password must be between 6 and 26 characters long";
		if($('contain_password')){
			$('contain_password').removeClassName('form-message');
			$('contain_password').removeClassName('form-error');
		}else{
			$('contain_newpassword').removeClassName('form-message');
			$('contain_newpassword').removeClassName('form-error');
		}
		$('pass_check').innerHTML = '<span class="passstrength">Password Strength: </span><div id="psContainer"><div id="psStrength"></div></div>';
	}
}

var checkUsername = function(username){
	if(username){
		var ajax = new Ajax.Request('inc/checkusername.php',
									{asynchronous: true,
									method: 'post',
									parameters: 'username='+username,
									onComplete: verifyUsername
									});
	}else{
		$('contain_username').removeClassName('form-message');
		$('contain_username').removeClassName('form-error');
		$('username_check').innerHTML = "This will appear whenever you leave a comment or ask a question in the blog.";
	}
	return false;
}

var verifyUsername = function(returned){
	if(returned.responseText=='UNAVAILABLE'){
		$('contain_username').removeClassName('form-message');
		$('contain_username').addClassName('form-error');
		$('username_check').innerHTML = "<img src='i/layout/cross.gif' alt='Unavailable' />Username Unavailable";
	}else{
		$('contain_username').removeClassName('form-error');
		$('contain_username').addClassName('form-message');
		$('username_check').innerHTML = "<img src='i/layout/tick.gif' alt='Available' />Username Available";
	}

}

var checkEmail = function(email){
	if(email){
		var ajax = new Ajax.Request('inc/checkemail.php',
									{asynchronous: true,
									method: 'post',
									parameters: 'email='+email,
									onComplete: verifyEmail
									});
	}else{
		$('contain_email').removeClassName('form-message');
		$('contain_email').removeClassName('form-error');
		$('email_check').innerHTML = "A confirmation email will be sent to this address before you can login.";
	}
	return false;
}

var verifyEmail = function(returned){
	if(returned.responseText=='INUSE'){
		$('contain_email').removeClassName('form-message');
		$('contain_email').addClassName('form-error');
		$('email_check').innerHTML = "<img src='i/layout/cross.gif' alt='In Use' />Email already in use";
	}else{
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		if (filter.test($('Email').value)){
			$('contain_email').removeClassName('form-error');
			$('contain_email').addClassName('form-message');
			$('email_check').innerHTML = "<img src='i/layout/tick.gif' alt='Valid' />Email Valid";
		}else{
			$('contain_email').removeClassName('form-message');
			$('contain_email').addClassName('form-error');
			$('email_check').innerHTML = "<img src='i/layout/cross.gif' alt='Invalid' />Email Invalid";
		}
	}
}

var updateStrength = function(pw) {
	if(pw){
		var strength = getStrength(pw);
		var width = (100/32)*strength;
		if($('psStrength')){
			new Effect.Morph('psStrength', {style:'width:'+width+'px', duration:'0.4'}); 
		}
	}
}

var getStrength = function(passwd) {
		intScore = 0;
	if (passwd.match(/[a-z]/)) // [verified] at least one lower case letter
			{
			intScore = (intScore+1)
			} if (passwd.match(/[A-Z]/)) // [verified] at least one upper case letter
			{
			intScore = (intScore+5)
			} // NUMBERS
			if (passwd.match(/\d+/)) // [verified] at least one number
			{
			intScore = (intScore+5)
			} if (passwd.match(/(\d.*\d.*\d)/)) // [verified] at least three numbers
			{
			intScore = (intScore+5)
			} // SPECIAL CHAR
			if (passwd.match(/[!,@#$%^&*?_~]/)) // [verified] at least one special character
			{
			intScore = (intScore+5)
			} // COMBOS
			if (passwd.match(/[a-z]/) && passwd.match(/[A-Z]/)) // [verified] both upper and lower case
			{
			intScore = (intScore+2)
			} if (passwd.match(/\d/) && passwd.match(/\D/)) // [verified] both letters and numbers
			{
			intScore = (intScore+2)
			} // [Verified] Upper Letters, Lower Letters, numbers and special characters
			if (passwd.match(/[a-z]/) && passwd.match(/[A-Z]/) && passwd.match(/\d/) && passwd.match(/[!,@#$%^&*?_~]/))
			{
			intScore = (intScore+2)
			}
			if(passwd.length > 8){
			intScore = (intScore+5)
			}
			return intScore;
}

function initiate(blanks,skipemailcheck){
	if($('register-form')){
		if($('Password')&&($('Password').value||blanks==true)){
			confirmPassword($('ConfirmPassword').value);
			checkPassword($('Password').value);
		}
		if($('Username')&&($('Username').value||blanks==true)){
			checkUsername($('Username').value);
			checkField('Username','Username');
		}
		if($('Email')&&($('Email').value||blanks==true)){
			if(skipemailcheck==false){
				checkEmail($('Email').value);
			}
			checkField('Email','E-mail Address');
		}
		if($('FirstName') && ($('FirstName').value||blanks==true)){
			checkField('FirstName','First Name');
		}
		if($('Company') && ($('Company').value||blanks==true)){
			checkField('Company','Company');
		}
		if($('LastName') && ($('LastName').value||blanks==true)){
			checkField('LastName','Last Name');
		}
		if($('County') && ($('County').value||blanks==true)){
			checkField('County','County');
		}
		if($('Address1') && ($('Address1').value||blanks==true)){
			checkField('Address1','Address Line 1');
		}
		if($('Town') && ($('Town').value||blanks==true)){
			checkField('Town','Town');
		}
		if($('PostCode') && ($('PostCode').value||blanks==true)){
			checkField('PostCode','Post Code');
		}
		if($('CompanyName') && ($('CompanyName').value||blanks==true)){
			checkField('CompanyName','Company Name');
		}
		/*
		if($('Established') && ($('Established').value||blanks==true)){
			checkField('Established','Date Established');
		}
		*/
		if($('PhoneNumber') && ($('PhoneNumber').value||blanks==true)){
			checkField('PhoneNumber','Phone Number');
		}
		if($('CompanySize') && ($('CompanySize').value||blanks==true)){
			checkField('CompanySize','Company Size');
		}
		if($('OfficeName') && ($('OfficeName').value||blanks==true)){
			checkField('OfficeName','Office Name');
		}
		if($('OfficePostCode') && ($('OfficePostCode').value||blanks==true)){
			checkField('OfficePostCode','Office Post Code');
		}
		/*
		if($('PublicEmail') && ($('PublicEmail').value||blanks==true)){
			checkField('PublicEmail','Public Email');
		}
		if($('PublicNumber') && ($('PublicNumber').value||blanks==true)){
			checkField('PublicNumber','Public Number');
		}
		*/
		if(blanks==true){
			checkTerms();
			checkMember();
			checkConduct();
		}
	}
}

Event.observe(window, 'load', initiate);
