var validation_passed 	= "";
var hfield_name		= "";													
var isaved1		= "";
var isaved2 		= "";
var field_value		= "";

function validate_checkboxr(field_name)
{
	//alert('9 validation.js Validate Checkbox')
	validate_GettnElements(field_name);
	if (tnElements[isaved2].checked)
	{
		//alert("13 checkbox checked")
	}
	else
	{
		tnElements[isaved2].style.background = "RED";
		tnElements[isaved1].innerHTML = "<br>Must Agree to Terms.";
		validation_passed = "N";
	}
	//alert('14 validation.js Validate Checkbox end')
}

function validate_compare(field_name)
{
	var vfield_name1 = ""
	var field_name2 = field_name
	var field_name1 = field_name2.substr(1)
	var field_name2 = field_name
	hfield_name = "h" + field_name2
	tnElements = document.getElementsByTagName("*");
	for (var i=0; i < tnElements.length; i++)
	{
		if (tnElements[i].getAttribute('name') == hfield_name)
		{
			tnElements[i].innerHTML = "";
			isaved1 = i;
		}
		if (tnElements[i].getAttribute('name') == field_name1)
		{
			vfield_name1 = tnElements[i].value
			
		}
		if (tnElements[i].getAttribute('name') == field_name2)
		{
			tnElements[i].style.background = "WHITE";
			isaved2 = i;
			if (vfield_name1 != tnElements[i].value)
			{
				tnElements[isaved2].style.background = "RED";
				tnElements[isaved1].innerHTML = "<br>Compared fields are not equal.";
				break;
			}
		}
	}
	field_value = tnElements[isaved2].value;
}

function validate_date(field_name)
{
	validate_GettnElements(field_name);
	if ((field_value != null) && (field_value != ""))
	{
		var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity
		var returnval=false
		if (!validformat.test(field_value))
		{
			tnElements[isaved2].style.background = "RED";
			tnElements[isaved1].innerHTML = "<br>Invalid Date Format. Please correct.";
		}
		else
		{ 
			//Detailed check for valid date ranges
			var monthfield	= field_value.split("/")[0]
			var dayfield	= field_value.split("/")[1]
			var yearfield	= field_value.split("/")[2]
			var dayobj = new Date(yearfield, monthfield-1, dayfield)
			if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
			{
				tnElements[isaved2].style.background = "RED";
				tnElements[isaved1].innerHTML = "<br>Invalid Day, Month, or Year range detected. Please correct.";
			}
		}
		if (tnElements[isaved1].innerHTML != "")
		{
			validation_passed = "N";
		}
	}
}

function validate_email(field_name)
{
	validate_GettnElements(field_name);
	if ((field_value != null) && (field_value != ""))
	{
		var emailstr = "";
		var emailstr = tnElements[isaved2].value;
		var illegals=/<|>|\\|\(|\)|\[|\{|\^|\$|\*|\+|\?|"|'|%|&|}|]|#|\/|\|/

		//alert("emailstr.match(illegals = " + emailstr.match(illegals))

		if ((emailstr.match(illegals) != null) && (emailstr.match(illegals) != ""))
		{
			tnElements[isaved2].style.background = "RED";
			tnElements[isaved1].innerHTML = "<br>E-mail can not contain special characters.";
		}
		var at = "@";
		var dot = ".";
		var lat=emailstr.indexOf(at);
		var lstr=emailstr.length;
		var ldot=emailstr.indexOf(dot);
		if (emailstr.indexOf(at)==-1)
		{
			tnElements[isaved2].style.background = "RED";
			tnElements[isaved1].innerHTML = "<br>@ is missing from the e-mail address.";
		}
		if (emailstr.indexOf(at) == -1 || emailstr.indexOf(at) == 0 || emailstr.indexOf(at) == lstr)
		{
			tnElements[isaved2].style.background = "RED";
			tnElements[isaved1].innerHTML = "<br>@ can not be first or last character.";
		}
		if (emailstr.indexOf(dot) == -1 || emailstr.indexOf(dot) == 0 || emailstr.indexOf(dot) == lstr-1)
		{
			tnElements[isaved2].style.background = "RED";
			tnElements[isaved1].innerHTML = "<br>Dot(.) can not be missing or first or last character.";
		}
		if (emailstr.indexOf(at,(lat+1))!=-1)
		{
			tnElements[isaved2].style.background = "RED";
			tnElements[isaved1].innerHTML = "<br>Invalid E-mail address.";
		}
		if (emailstr.substring(lat-1,lat) == dot || emailstr.substring(lat+1,lat+2) == dot)
		{
			tnElements[isaved2].style.background = "RED";
			tnElements[isaved1].innerHTML = "<br>No web site specified.";
		}
		if (emailstr.indexOf(dot,(lat+2)) == -1)
		{
			tnElements[isaved2].style.background = "RED";
			tnElements[isaved1].innerHTML = "<br>No Dot(.) after the @.";
		}
		if (emailstr.indexOf(" ")!=-1)
		{
			tnElements[isaved2].style.background = "RED";
			tnElements[isaved1].innerHTML = "<br>Spaces not allowed in e-mail address.";
		}
		if (tnElements[isaved1].innerHTML != "")
		{
			validation_passed = "N";
		}
	}
}

function validate_emailr(field_name)
{
	validate_textr(field_name);
	if (tnElements[isaved1].innerHTML == "")
	{
		validate_email(field_name);
	}
}

function validate_form()
{
	//alert("165 validation.js validate_form")
	var tagsarray = new Array();
	var stagsarray = new Array();
	var tagnumber = "";
	var stagnumber = "";
	validation_passed = "Y";
	tagsarray = document.getElementsByTagName("*");
	//alert("tagsarray.length = " + tagsarray.length);
	for (tagnumber=0; tagnumber < tagsarray.length; tagnumber++)
	{
		if ( tagsarray[tagnumber].className != "")
		{
			if (validation_passed == "Y")
			{
				stagnumber = tagnumber;
			}
			var fieldtype = tagsarray[tagnumber].className;
			//alert("fieldtype = " + fieldtype);
			switch (fieldtype)
			{
				case "compare":
					//alert("compare fields");
					field_name = tagsarray[tagnumber].getAttribute('name');
					validate_compare(field_name);
					stagsarray[stagsarray.length] = tagsarray[tagnumber];
					break;
				case "date":
					//alert("Validate Date");
					field_name = tagsarray[tagnumber].getAttribute('name');
					validate_date(field_name);
					stagsarray[stagsarray.length] = tagsarray[tagnumber];
					break;
				case "emailr":
					//alert("validate email1");
					field_name = tagsarray[tagnumber].getAttribute('name');
					validate_textr(field_name);
					if (tnElements[isaved1].innerHTML == "")
					{
						validate_email(field_name);
					}
					stagsarray[stagsarray.length] = tagsarray[tagnumber];
					break;
				case "checkbox":
					//alert("Test Checkbox");
 					if (tagsarray[tagnumber].checked)
					{
						tagsarray[tagnumber].value="1";
						//alert("Checked");
					}
					else
					{
						tagsarray[tagnumber].value="0";
						//alert("Not Checked");
					}
					break;
				case "checkboxr":
					//alert("validate checkboxr");
					field_name = tagsarray[tagnumber].getAttribute('name');
 					if (tagsarray[tagnumber].checked)
					{
						tagsarray[tagnumber].value="1";
						//alert("Checked");
					}
					else
					{
						validate_checkboxr(field_name);
						//alert("Not Checked");
					}
					break;
				case "textbox":
				case "textarea":
					//alert("test textbox and textarea area" + tagsarray[tagnumber].value );
					stagsarray[stagsarray.length] = tagsarray[tagnumber];
					break;
				//Text Box and Text Area Required;
				case "textboxr":
				case "textarear":
					//alert("test textboxr and textarear area start");
					field_name = tagsarray[tagnumber].getAttribute('name');
					validate_textr(field_name);
					stagsarray[stagsarray.length] = tagsarray[tagnumber];
					break;
				default:
					//alert("No Case Value for validate");
			}
		}
	}
	if (validation_passed == "Y")
	{
		//alert("stagsarray.length = (" + stagsarray.length + ")");
		for (i=0; i < stagsarray.length; i++)
		{
			//alert("stagsarray[i].value = " + stagsarray[i].value)
			stagsarray[i].value = validate_replacecharactersup(stagsarray[i].value);
		}
		//alert("submit form")
		//document.LoginCreate.submit();
		return true;
	}
	else
	{
		tagsarray[stagnumber].focus();
		return false;
	}
}

function validate_GettnElements(field_name)
{
	//alert("Start validate_GettnElements")
	hfield_name = "h" + field_name
	tnElements = document.getElementsByTagName("*");
	for (var i=0; i < tnElements.length; i++)
	{
		if (tnElements[i].getAttribute('name') == hfield_name)
		{
			tnElements[i].innerHTML = "";
			isaved1 = i;
		}
		if (tnElements[i].getAttribute('name') == field_name)
		{
			tnElements[i].style.background = "WHITE";
			isaved2 = i;
			break;
		}
	}
	field_value = tnElements[isaved2].value;
	//alert("field_name=(" + field_name + "),hfield_name=(" + hfield_name + "), field_value=(" + field_value + ")")
	//alert("End validate_GettnElements")
}

function validate_numbersonly(obj)
{
	reg = /[^0-9]/g;
	obj.value =  obj.value.replace(reg,"");
}

function validate_replacecharactersup(teststring)
{
	//alert("teststring = (" + teststring + ")")
	var output = "";
	for (var outputi = 0; outputi < teststring.length; outputi++)
	{
		charfound = "N"
		// Check for a signle quote
		if (teststring.charCodeAt(outputi) == 39 && (charfound == "N"))
		{
			charfound = "Y";
			output += "&#39;";
		} 												
		// Check for a Double quote
		if (teststring.charCodeAt(outputi) == 34 && (charfound == "N"))
		{
			charfound = "Y";
			output += "&#34;";
		}
		// Check for and remove Remove carriage Return Line Feed 0A0D
		if ((teststring.charCodeAt(outputi) == 13) && (teststring.charCodeAt(outputi + 1) == 10) && (charfound == "N"))
		{
			charfound = "Y";
			output += "<br>";
			outputi++;
		}
		if (charfound == "N")
		{
			output += teststring.charAt(outputi);
		}
	}
	teststring = output;
	//alert("test string =" + teststring + ".");
	return teststring;
}

function validate_textr(field_name)
{
	//alert("Start validate_textr")	
	validate_GettnElements(field_name);
	if ((field_value ==null)||(field_value ==""))
	{
		tnElements[isaved2].style.background = "RED";
		tnElements[isaved1].innerHTML = "<br>Field is required.";
		validation_passed = "N";
	}
}