flag = 0;
flag2 = 0;
flag3 = 0;
ageFlag = 0;
function startValidate(isPForm, isOSForm){
	flag = 0;
	flag2 = 0;
	flag3 = 0;
	ageFlag = 0;
	isPostForm = isPForm;
	isOutsourceForm = isOSForm;
	//Code for IE

	if (window.ActiveXObject)
	{
		fieldsXMLDoc=new ActiveXObject("Microsoft.XMLDOM");
		fieldsXMLDoc.async = false;
		fieldsXMLDoc.onreadystatechange = function () {
			if (fieldsXMLDoc.readyState == 4) validateForm()
		};
		
		langXMLDoc=new ActiveXObject("Microsoft.XMLDOM");
		langXMLDoc.async = false;
		langXMLDoc.onreadystatechange = function () {
			if (langXMLDoc.readyState == 4) checkLanguage()
		};
	}
	// code for Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument)
	{
		fieldsXMLDoc=document.implementation.createDocument("","",null);
		fieldsXMLDoc.async = false;
		fieldsXMLDoc.onload=validateForm;
		
		langXMLDoc=document.implementation.createDocument("","",null);
		langXMLDoc.async = false;
		langXMLDoc.onload=checkLanguage;
	}
	fieldsXMLDoc.load("inc/fields.xml");
	langXMLDoc.load("inc/language.xml");
	
	if(flag == 1)
	{
		if(ageFlag == 1)
		{
			alert("Used girlfriends must be at least 16 years old.");
			return false;
		}
		alert("Please complete all required fields correctly.");
		return false;
	}
	if(flag2 == 1)
	{
		if(ageFlag == 1)
		{
			alert("Used girlfriends must be at least 16 years old.");
			return false;
		}
		alert("Please remove inappropriate language from your post.");
		return false;
	}
	if(flag3 == 1){
		
		alert("Your credit card is expired.");
		return false;
		
	}

	return true;
}
/* switch this first part to xpath */
function validateForm(){
	if(isOutsourceForm == 1){
		var allFields = fieldsXMLDoc.getElementsByTagName("outsourceFields");
	}
	else{
		var allFields = fieldsXMLDoc.getElementsByTagName("postFields");
	}
	
	var x = allFields[0].childNodes;

	for(var i=1; i<x.length; i++){
		if(x[i].nodeType == 1){
			if(x[i].getAttribute('display') == "true"){
				setHeaderNormal(x[i].getAttribute('name'));
			}
			if(isPostForm == 1 || isOutsourceForm == 1){
				setHeaderNormal('terms');
			}
			if(isOutsourceForm == 1){
				setHeaderNormal('certify');
			}
		}
	}
	
	for(var i=1; i<x.length; i++){
		if(x[i].nodeType == 1){
			if(x[i].getAttribute('required') == "true" && document.getElementById(x[i].getAttribute('name')).value == ""){
				setHeaderRed(x[i].getAttribute('name'));
				flag = 1;
			}
			var r = x[i].getAttribute('regex');
			r = r.replace(/\//g, "");
			if(x[i].getAttribute('display') == "true" && document.getElementById(x[i].getAttribute('name')).value.search(r) != 0){
				setHeaderRed(x[i].getAttribute('name'));
				flag = 1;
				if(x[i].getAttribute('name') == "age"){
					ageFlag = 1;
				}
			}
			if((isPostForm == 1 || isOutsourceForm == 1) && document.getElementById('terms').checked == false){
				setHeaderRed('terms');
				flag = 1;
			}
			if(isOutsourceForm == 1 && document.getElementById('certify').checked == false){
				setHeaderRed('certify');
				flag = 1;
			}
			
			if(isOutsourceForm == 1 && x[i].getAttribute('name') == "cc_exp_month"){
				
				var date = new Date();
				var month;
				switch(document.getElementById(x[i].getAttribute('name')).value){
					
					case "January":
						month = 0;
						break;
					
					case "February":
						month = 1;
						break;
						
					case "March":
						month = 2;
						break;
						
					case "April":
						month = 3;
						break;
						
					case "May":
						month = 4;
						break;
						
					case "June":
						month = 5;
						break;
						
					case "July":
						month = 6;
						break;
						
					case "August":
						month = 7;
						break;
						
					case "September":
						month = 8;
						break;
						
					case "October":
						month = 9;
						break;
						
					case "November":
						month = 10;
						break;
						
					case "December":
						month = 11;
						break;
				
				}
				
				if(month < date.getMonth() && document.getElementById("cc_exp_year").value <= date.getFullYear()){
					flag3 = 1;
				}
				
			}
		}
	}
}

function setHeaderNormal(eltName){
	if(document.getElementById(eltName + "_HEADER")){
		document.getElementById(eltName + "_HEADER").setAttribute("class", "form_header");
		document.getElementById(eltName + "_HEADER").setAttribute("className", "form_header");
	}
}

function setHeaderRed(eltName){
	if (eltName.search(/phone2/) >= 0 || eltName.search(/phone3/) >= 0){
		eltName = eltName.replace(/\d/, "1");
	}
	if(document.getElementById(eltName + "_HEADER")){
		document.getElementById(eltName + "_HEADER").setAttribute("class", "form_header_red");
		document.getElementById(eltName + "_HEADER").setAttribute("className", "form_header_red");
	}
	
}

function checkLanguage(fields){
	var words = langXMLDoc.getElementsByTagName("word");
	if(isOutsourceForm == 1){
		var allFields = fieldsXMLDoc.getElementsByTagName("outsourceFields");
	}
	else{
		var allFields = fieldsXMLDoc.getElementsByTagName("postFields");
	}
	
	var fields = allFields[0].childNodes;
	
	for(var i=1; i<fields.length; i++){
		if(fields[i].nodeType == 1){
			if(fields[i].getAttribute('display') == "true"){
				val = document.getElementById(fields[i].getAttribute('name')).value;
				for (var j=0; j<words.length; j++){
					var exp = new RegExp("\\b" + words[j].firstChild.nodeValue + "\\b", "i");
					if(val.search(exp)==0){
						flag2 = 1;
						return;
					}
				}
				if(val.search(/.*nigger.*/i) == 0 || val.search(/.*negro.*/i) == 0 || val.search(/.*niger.*/i) == 0){
					flag2 = 1;
					return;
				}
			}
		}
	}
}