

//Set the color of the field titles when they are ok
var okTextColor = "#000000";

//Set the color of the field titles when there is an error
var errorTextColor = "#CC3300";


var getInTouchCrietria = new Array();
//	["fieldName", "field Label(s) to highlight (comma sepparated for multiple)", "validation(s) to make (comma sepparated for multiple)"]
//	custom regular expressions can be sent with c-/regEx/ where /regEx is the regular expression to test against.
// 	common identifiers are listed below:
//		! = Check for Empty
//		i = Integers 
//		@ = email address format validation
//		cc = credit card number format validation

getInTouchCrietria.push(["element_10","element_10_label","!"]);
getInTouchCrietria.push(["element_2_1","element_2_1_label","!"]);
getInTouchCrietria.push(["element_2_2","element_2_2_label","!"]);
getInTouchCrietria.push(["element_3","element_3_label","!"]);
getInTouchCrietria.push(["element_5_1","element_5_1_label","!"]);
getInTouchCrietria.push(["element_5_3","element_5_3_label","!"]);
getInTouchCrietria.push(["element_5_4","element_5_4_label","!"]);
getInTouchCrietria.push(["element_5_5","element_5_5_label","!"]);
getInTouchCrietria.push(["element_6","element_6_label","@"]);
getInTouchCrietria.push(["element_7_1","element_7_1_label","!"]);


//regular expressions:
var reNumber = /\b\d+\b/;
var reEmail = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
var reZip = /^\d{5}([\-]\d{4})?$/;
var reCc = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/;
var reCvv = /(?!000)\d{3,4}$/;

var regExRefference = new Array();
//["identifier", function ref]
regExRefference.push(["i", reNumber]);
regExRefference.push(["@", reEmail]);
regExRefference.push(["zip", reZip]);
regExRefference.push(["cc", reCc]);
regExRefference.push(["cvv", reCvv]);

function checkFormChunk(theForm,fieldsCheckArray){
	
	resetTitleStyles(fieldsCheckArray);
	
	var errorFound = false;
	
	for(var elementNumber=0; elementNumber<fieldsCheckArray.length; elementNumber++ ){
	
		var markField = false;
		var tempField = theForm[fieldsCheckArray[elementNumber][0]];
		var tempFieldValue = theForm[fieldsCheckArray[elementNumber][0]].value;
		var tempFieldType = theForm[fieldsCheckArray[elementNumber][0]].type;
	
		validationArray = fieldsCheckArray[elementNumber][2].split(",");
		for(var identifier=0;  identifier<validationArray.length; identifier++ ){
			//check for custom
			if(validationArray[identifier].indexOf("c-") == 0){
				var tempRegEx = new RegExp(validationArray[identifier].replace("c-", ""));
				if(!tempRegEx.test(tempFieldValue)) markField = true;
			}else if(validationArray[identifier] == "!"){
				switch(tempFieldType){
					case 'text':
						if(tempFieldValue == "") markField = true;
						break;
					case 'checkbox':
						if(!tempField.checked) markField = true;
						break;
				}
			}else{
				for(var regEx=0; regEx<regExRefference.length; regEx++){
					if(validationArray[identifier] == regExRefference[regEx][0]){
						if(!regExRefference[regEx][1].test(tempFieldValue)) markField = true;
						break;
					}
				}
			}
		}
		
		if(markField){
			var fieldsToMarkArray = fieldsCheckArray[elementNumber][1].split(",");
			for(var errorField=0; errorField<fieldsToMarkArray.length; errorField++){
				markError(fieldsToMarkArray[errorField]);
			}
			errorFound = true;
		}
	}

	if(errorFound){
		return false;
	}else{
		return true;
	}
}

function resetTitleStyles(fieldsCheckArray){
	for(var elementId=0; elementId<fieldsCheckArray.length; elementId++){
			var fieldsToMarkArray = fieldsCheckArray[elementId][1].split(",");
			for(var errorField=0; errorField<fieldsToMarkArray.length; errorField++){
				//alert("document.getElementById("+fieldsToMarkArray[errorField]+")");
				document.getElementById(fieldsToMarkArray[errorField]).style.color = okTextColor;
			}
	}
}

function markError(element){
	document.getElementById(element).style.color = errorTextColor;
}

function hideSumbitButton(submit, loading, display){
	document.getElementById(submit).blur();
	document.getElementById(submit).style.display = "none";
	if(!display) display = "inline";
	if(loading) document.getElementById(loading).style.display = display;
}

function checkRadioButton(theButton){
	var somethingChecked = false;
	for(var x=0; x<theButton.length; x++){
		somethingChecked = (somethingChecked || theButton[x].checked);
	}
	return somethingChecked;
}

function gitValidate(){

	var everythingOK = true;
	
	theForm = document.getElementById("form_3");
	
	// Hide the error div, in case present
	document.getElementById("errorDiv").style.display = "none";
	
	// Check the whole chunk
	var formChunkOk = checkFormChunk(theForm,getInTouchCrietria);
	everythingOK = (everythingOK && formChunkOk);
	
	if(!everythingOK){
		document.getElementById("errorDiv").style.display = "block";
		document.location.href="#formTop";
	}else{
		theForm.submit();
	}

}

