/* used for all forms within groper */

///////////////////////////////////////////////////////////////////////////
function checkEmailAddress(field) {
	// Note: The next expression must be all on one line...
	//       allow no spaces, linefeeds, or carriage returns!
	// doesn't allow for .co.uk etc 2TLD
	var validEmail = field.value.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi);
	
	if (validEmail){
	   return true;
	} else {
	   alert('Please enter a valid e-mail address.')
	   field.focus()
	   field.select()
	   return false
   }
}

function eMailCheck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    return false
		 }

 		 return true					
	}

///////////////////////////////////////////////////////////////////////////
function checkContactForm(frm){
	var email = frm.elements['emailTxt'];
	
	return checkEmailAddress(email);
}

///////////////////////////////////////////////////////////////////////////
function checkCCFrom(frm){
	var str = '';
	
	var custName = frm.elements['custNameTxt'].value;
	var cardNum = frm.elements['ccField'].value;
	var ccv = frm.elements['ccv'].value;
	var expMonthTM = frm.elements['expMonthTM'].value;
	var expYearTM = frm.elements['expYearTM'].value;
	
	if(custName == ''){
		str += "There is no name on the card\n";
	}
	if(cardNum == ''){
		str += 'There is no card number\n';
	}
	if(ccv=='' || isNaN(ccv)){
		str += 'CCV value not valid. Please check the last 3 digits on the back of your card\n';
	}
	
	if(expMonthTM=='' || isNaN(expMonthTM)){
		str += 'Please enter a valid Expiry Month\n';
	} else {
		if(expMonthTM > 12 || expMonthTM < 1){
			str += "Please enter a vaild month of the year (1-12)\n";
		}
	}	
	if(expYearTM=='' || isNaN(expYearTM)){
		str += "Please enter a valid Expiry Year\n";
	} else {
		if(expYearTM < 2005 || expYearTM > 2050){
			str += "Please enter a year greater than 2005\n";
		}
	}
	
	return str;
}

///////////////////////////////////////////////////////////////////////////
// Checks the validity of the assessDetails
// Requires a FirstName, Surname and either a valid email address or selection NONE.
function checkDetails(frm){
	var rtn = true;
	var alertStr = '';
	var fname = frm.elements['fNameTxt'].value;
	var sname = frm.elements['sNameTxt'].value;
	
	var email1 = frm.elements['emailTxt1'].value;
	var email2 = frm.elements['emailTxt2'].value;
	
	var referer = frm.elements['refererTxt'];
	
	var gender = frm.elements['genderTxt'];
	var ageTxt = frm.elements['ageTxt'].value;
	
	genderYN = false;
	for(var i=0;i<gender.length;i++){
		if(gender[i].checked){
			genderYN = true;
		}
	}
	
	var refererTxt = frm.elements['refererTxt'].value;
	/*
	refererYN = false;
	for(var i=0;i<referer.length;i++){
		if(referer[i].checked){
			refererYN = true;
		}
	}
	*/
	
	/////////////////////////////////////////////////////////////
	if(fname == '') {
		alertStr += 'Please enter a first name\n';
	}
	if(sname == '') {
	 alertStr += 'Please enter a surname\n';
	}
	
	if(email1 == ''){
	 alertStr += 'First email field is empty\n';
	}
	if(email2 == '') {
		alertStr += 'Confirmation email field is empty\n';
	}
	if(!genderYN) {
		alertStr += 'You must select a gender. (male or female)\n';
	}
	if(ageTxt == '') {
		alertStr += 'An age range must be selected\n';
	}
	//if(!refererYN) {
	//	alertStr += 'Please select where you heard about Groper\n';
	//}
	if(refererTxt == '') {
		alertStr += 'Please select where you heard about Groper\n';
	}	
	
	if(frm.elements['acceptEULA'].checked==false){
		alertStr += 'You must accept the terms and conditions to continue';
	}
	
	
	//////////////////////////////////////////////////////////////
	if(alertStr == ''){
		if(email1==email2){
				return eMailCheck(email1);	
				//return checkEmailAddress(frm.elements['emailTxt1']);
		} else {
			alert('Email fields do not match.');
			return false;
		}
	} else {
		alert(alertStr);
		return false;
	}
	
}
///////////////////////////////////////////////////////////////////////////
// This function checks that all Radio buttons are selected
// 5 options are available per selection with INPUT type radio fields labelled xxxxID[ID]
// Used on Activities, Areas, Values and Occupations
function allChecked(frm){
	var rtn = false;
	
	// Catch Exit Button
	var exit = frm.elements['exitForm'].value;
	var accessCD = frm.elements['access'].value;
	
	if(exit==1){
		alert('Thank you. We have saved your assessment and emailed you an Access Code : '+accessCD+'.\nPlease enter this access code on Groper\'s home page when you return to complete your assessment');
		return true;
	}
	
	var alertStr = '';
	var checkRowColor = '#FF0000';
	var alertCheck = 'There are items which are not selected.\nPlease complete the entire form.';
	
	var formElem = document.getElementsByTagName('input');

	// Loop through the NODE LIST
	for(var i=0;i < formElem.length; i++){
		if(formElem.item(i).type == 'radio'){
			//alertStr = "\n"+formElem.item(i).name+formElem.item(i).value+formElem.item(i).checked;
			
			e = document.getElementsByName(formElem.item(i).name);
			
			// Initialise the selection checker to false
			var eChecked = false;
			for(var j=0;j < e.length; j++){
				if(e[j].checked){
					eChecked = true;
				}
			}
			if(!eChecked) {
				//var nameID = formElem.item(i).name;
				//nameID = nameID.toString();
				// Change the color of the offending row and display error message
				document.getElementById(formElem.item(i).name).style.color = checkRowColor;
			
				alertStr = alertCheck;
				break;
			}
		}
	}
	if(alertStr==''){
		return true;
	} else {
		alert(alertStr);
		return false;
	}
}
///////////////////////////////////////////////////////////////////////////
function markRow(e){
	//alert(e.name);
	//document.getElementById(e.name).style.color = '#333333';
}
///////////////////////////////////////////////////////////////////////////
function mouseRow(type,rowID){
	e = document.getElementsByName(rowID);
			
	// Initialise the selection checker to false
	var eChecked = false;
	for(var j=0;j < e.length; j++){
		if(e[j].checked){
			eChecked = true;
		}
	}
	if(type=="out"){
		document.getElementById(rowID).style.color = '#2C38A9';
	} else {
		document.getElementById(rowID).style.color = '#3D93FF';
	}
	if(eChecked) {
		//var nameID = formElem.item(i).name;
		//nameID = nameID.toString();
		// Change the color of the offending row and display error message
		document.getElementById(rowID).style.color = '#333333';

	}
}
///////////////////////////////////////////////////////////////////////////