// ########################################
// ##                                    ##
// ##	 Javescript Code for Archers Mate  ##
// ##                                    ##
// ########################################

// ### Switches Tab Class on selection for Handicap Calculator ###
function tabSwitch($tab) {
	//If Right Tab
	if ($tab.className.indexOf('tld')==0) {
		window.document.getElementById('tab-1').className = 'tls';
		window.document.getElementById('tab-2').className = 'trd';
	}
	else if ($tab.className.indexOf('trd')==0) {
		window.document.getElementById('tab-1').className = 'tld';
		window.document.getElementById('tab-2').className = 'trs';
	}
}

// ### Switches Colour of Hover Buttons ###
function scbg(objRef, state) {
	if (objRef.disabled != true)
	{
		objRef.style.cursor = (1 == state) ? 'pointer' : 'default';
		objRef.style.backgroundColor = (1 == state) ? '#31659F' : '';
		objRef.style.borderTopColor = (1 == state) ? '#305370' : '';
		objRef.style.borderLeftColor = (1 == state) ? '#305370' : '';
		objRef.style.borderBottomColor = (1 == state) ? '#78A6d6' : '';
		objRef.style.borderRightColor = (1 == state) ? '#78A6d6' : '';
	}
	else
		objRef.style.cursor = 'default';
		
	return;
}

// ### Validate Memeber Password ###
function passVerify(vpass, vverf) {

	var regAlphaNum = /^([a-zA-Z0-9]+)$/;
	var regLows = /[a-z]/;
	var regCaps = /[A-Z]/;
	var regNum = /[0-9]/;
	
	//Checks for Password
	if ((trim(vpass) == '') ||  (trim(vpass).length < 1)) {
		alert ('Please enter a valid Password.');
		return false; }
	//Must be at least 8 characters
	else if (vpass.length < 8) {
		alert	('Password must be at least 8 characters.');
		return false; }
	//Must be at least 8 characters
	else if (vpass.length > 12) {
		alert	('Password must be a maximum 12 characters.');
		return false; }
	//Must be Alphanumeric
	else if (regAlphaNum.test(vpass) == false) {
		alert	('Password must be alphanumeric.');
		return false; }
	//Must contain lows
	else if (vpass.search(regLows) == -1) {
		alert	('Password must contain at least one lowercase letter.');
		return false; }
	//Must contain CAPS
	else if (vpass.search(regCaps) == -1) {
		alert	('Password must contain at least one capital letter.');
		return false; }
	//Must contain a Number
	else if (vpass.search(regNum) == -1) {
		alert	('Password must contain at least one number.');
		return false; }
	//Checks for Verify Password
	else if ((trim(vverf) == '') ||  (trim(vverf).length < 1)) {
		alert ('Please verify the Password.');
		return false; }
	//Checks for matching Password strings
	else if (md5(vpass) != md5(vverf)) {
		alert	('Passwords do not match.');
		return false; }
	//All ok, return true
	else {
		return true;
	}
	return false;
}

// ### Membership Registration Form Validation ###
function vrfyRegister() {
	var vusr, veml, vemlv, vpwd, vpwdv, vpwdh, vpwdvh;
	with(window.document.frmMmbrRg) 
	{
		vusr = usr;       //Username
		veml = eml;       //Email
		vemlv = emlv;     //Verified Email
		vpwd = pwd;       //Password
		vpwdv = pwdv;     //Verified Password
		vpwdh = pwdh;     //Password Hash
		vpwdvh = pwdvh;   //Verified Password Hash
		vvlcd = vlcd;     //Validation Code
  }

	//Load Variables
	var validusr = true;
	var valideml = true;
	var validvcd = true;
	var regAlphaNum = /^([a-zA-Z0-9]+)$/;
	var regAlpha = /[a-zA-Z]/;
	var regCaps = /^([A-Z]+)$/;
	
	//Reset any Error Message
	if (window.document.getElementById('errmsg'))
		window.document.getElementById('errmsg').innerHTML="";

	//Checks for Username
	if ((trim(vusr.value) == '') ||  (trim(vusr.value).length < 1)) {
		alert ('Please enter a valid Username.');
		validusr = false;}
	//Must be at least 6 characters
	else if (trim(vusr.value).length < 6) {
		alert	('Username must be at least 6 characters.');
		validusr = false;}
	//Must be be a maximum 12 characters
	else if (trim(vusr.value).length > 12) {
		alert	('Username must be a maximum 12 characters.');
		validusr = false;}
	//Must be Alphanumeric
	else if (regAlphaNum.test(vusr.value) == false) {
		alert	('Username must be alphanumeric.');
		validusr = false;}
	else if (regAlpha.test(vusr.value) == false) {
		alert	('Username must contain at least one letter.');
		validusr = false;}
	
	//If NOT valid Username
	if (validusr == false) {
		vusr.focus();
		return false;
	}
	//Else continue with checks
	else {
		//Checks for Email Address
		if ((trim(veml.value) == '') ||  (trim(veml.value).length < 1)) {
			alert ('Please enter a valid Email Address.');
			valideml = false;}
		//Checks for Valid Email Format
		else if (!isEmail(veml.value)) {
			alert ('Please enter a valid Email Address.');
			valideml = false;}
		//Checks for Verify Email Address
		else if ((trim(vemlv.value) == '') ||  (trim(vemlv.value).length < 1)) {
			alert ('Please verify the Email Address.');
			valideml = false;}
		//Checks for matching Email strings
		else if (veml.value != vemlv.value) {
			alert	('Email Addresses do not match.');
			valideml = false;}

		//If NOT valid Email
		if (valideml == false) {
			veml.focus();
			return false;
		}
		//Else continue with checks
		else {
			//All ok, Set Hash cells with encrypted Password
			if (!passVerify(vpwd.value, vpwdv.value)) {
				vpwd.focus();
				return false;
			}
			else {
				if ((trim(vvlcd.value) == '') ||  (trim(vvlcd.value).length < 1)) {
					alert ('Please enter the Validation Code.');
					validvcd = false;}
				//Must be at least 8 characters
				else if ((vvlcd.value).length != 6) {
					alert	('Validation Code must be 6 letters.');
					validvcd = false;}
				//Must be Alphanumeric
				else if (regCaps.test(vvlcd.value) == false) {
					alert	('Validation Code must be Uppercase A-Z.');
					validvcd = false;}

				//If NOT valid Validation Code
				if (validvcd == false) {
					vvlcd.focus();
					return false;
				}
				//Else everything ok, process form
				else {
					vpwdh.value = md5(vpwd.value);
					vpwdvh.value = md5(vpwdv.value);
					vpwd.value = "";
					vpwdv.value = "";
				
					return true;
				}
			}
		}
	}	
	return false;
}

// ### Membership Activation Form Validation ###
function vrfyActivate() {
	var vusr, vaky;
	with(window.document.frmMmbrAct) 
	{
		vusr = usr;       //Username
		vaky = aky;       //Activation Key
  }

	//Load Variables
	var regAlphaNum = /^([a-zA-Z0-9]+)$/;
	
	//Checks for Username
	if ((trim(vusr.value) == '') ||  (trim(vusr.value).length < 1)) {
		alert ('Please enter a valid Username.');
		vusr.focus();
		return false;}
	//Checks for Activation Key
	else if ((trim(vaky.value) == '') ||  (trim(vaky.value).length < 1)) {
		alert ('Please enter a valid Activation Key.');
		vaky.focus();
		return false;}
	//Activation Key must be Alphanumeric
	else if (regAlphaNum.test(vaky.value) == false) {
		alert	('Activation Key must be alphanumeric.');
		vaky.focus();
		return false;}
	//Activation Key must be 10 characters
	else if ((vaky.value).length != 10) {
		alert	('Activation Key must be 10 letters.');
		vaky.focus();
		return false;}
	else 
		return true;
	
	return false;
}

// ### Resend Activation Form Validation ###
function vrfyReactive() {
	var vusr, vpwd, vpwdh;
	with(window.document.frmMmbrReact) 
	{
		vusr = usr;       //Username
		vpwd = pwd;       //Password
		vpwdh = pwdh;     //Password Hash
  }

	//Checks for Username
	if ((trim(vusr.value) == '') ||  (trim(vusr.value).length < 1)) {
		alert ('Please enter a valid Username.');
		vusr.focus();
		return false;}
	//Checks for Password
	else if ((trim(vpwd.value) == '') ||  (trim(vpwd.value).length < 1)) {
		alert ('Please enter a valid Password.');
		vpwd.focus();
		return false;}
	//All ok, send data
	else {
		vpwdh.value = md5(vpwd.value);		
		return true;}
	
	return false;
}

// ### Forgot Username Form Validation ###
function vrfyFrgtUsrnm() {
	var veml;
	with(window.document.frmFrgtUsr) 
	{
		veml = eml;       //Email Address
  }

	//Checks for Email Address
	if ((trim(veml.value) == '') ||  (trim(veml.value).length < 1)) {
		alert ('Please enter a valid Email Address.');
		veml.focus();
		return false;}
	//Checks for Valid Email Format
	else if (!isEmail(veml.value)) {
		alert ('Please enter a valid Email Address.');
		veml.focus();
		return false;}
		//All ok, send data
	else {
		return true;}
		
	return false;
}

// ### Forgot Password Form Validation ###
function vrfyFrgtPwd() {
	var vusr;
	with(window.document.frmFrgtPwd) 
	{
		vusr = usr;       //Username
  }

	//Checks for Username
	if ((trim(vusr.value) == '') ||  (trim(vusr.value).length < 1)) {
		alert ('Please enter a valid Username.');
		vusr.focus();
		return false;}
	//All ok, send data
	else 
		return true;
	
	return false;
}

// ### Reset Password Form 1 Validation ###
function vrfyPwdRst1() {
	var vusr, vvky;
	with(window.document.frmPwdRst1) 
	{
		vusr = usr;       //Username
		vvky = vky;				//Verification Key
  }

	//Load Variables
	var regAlphaNum = /^([a-zA-Z0-9]+)$/;
	
	//Checks for Username
	if ((trim(vusr.value) == '') ||  (trim(vusr.value).length < 1)) {
		alert ('Please enter a valid Username.');
		vusr.focus();
		return false;}
	//Checks for Verification Key
	else if ((trim(vvky.value) == '') ||  (trim(vvky.value).length < 1)) {
		alert ('Please enter a valid Verification Key.');
		vvky.focus();
		return false;}
	//Verification Key must be Alphanumeric
	else if (regAlphaNum.test(vvky.value) == false) {
		alert	('Verification Key must be alphanumeric.');
		vvky.focus();
		return false;}
	//Verification Key must be 10 characters
	else if ((vvky.value).length != 10) {
		alert	('Verification Key must be 10 letters.');
		vvky.focus();
		return false;}
	else 
		return true;
	
	return false;
}

// ### Reset Password Form 2 Validation ###
function vrfyPwdRst2() {	
	var vpwd, vpwdv, vpwdh, vpwdvh;
	with(window.document.frmPwdRst2) 
	{
		vpwd = pwd;       //Password
		vpwdv = pwdv;     //Verified Password
		vpwdh = pwdh;     //Password Hash
		vpwdvh = pwdvh;   //Verified Password Hash
  }

	//Check for Valid Passwords
	if (!passVerify(vpwd.value, vpwdv.value)) {
		vpwd.focus();
		return false;
	}	
	//All ok, Set Hash cells with encrypted Password
	else {
		vpwdh.value = md5(vpwd.value);
		vpwdvh.value = md5(vpwdv.value);
		vpwd.value = "";
		vpwdv.value = "";
	
		return true;
	}	
	
	return false;
}
