// JavaScript Document

/**********************
Validates Form Fields:
	Attribute "req" Key
	req = number
	req = string 
	req = email
	req = open (numeric or string, cannot be blank)
	message= friendly error message
	if "req" does not exist default to zero
	
***********************/
function checkForm(thisForm) 
{ 
	var boolIsValid = true;
	var boolIsRadio = false;
	var boolIsCheck = false;
	var hasRadios   = false;
	var hasChecks   = false;
	var element			= ''; 
	var elementID		= ''; 
	var required		= '';
	var fixFields 	= '';
	var newLine			= '\n\r';	 
	var title 			= 'Please fix the following issues:'
	var number			= '0123456789-.';
	var letters			= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ. ';
	var fld					= new Array();
	var formID      = '#' + $(thisForm).attr('id');

	for ( var i = 0; i < thisForm.elements.length; i++ ) 
	{
		element 	= thisForm.elements[i];
    elementID = formID + ' #' +  element.id;
		if ( element.type == 'radio' ) 
		{
			if(element.id != ""){required = $(formID + " input[type=radio]").attr("req");}	else {required = "0" }
			
			if (required != 0)
			{
				hasRadios=true;
				var fieldMessage = $(formID + " input[type=radio]").attr("message")
				if (!element.checked)
				{
					var found = $.inArray(fieldMessage, fld)
					if(found==-1)	{boolIsValid = false;	fld.push(fieldMessage); }
				}
				else
					{boolIsRadio=true; fld.push(fieldMessage); boolIsValid = true;}
			}
			
		}
		else if( element.type == 'checkbox' )
		{
			if(element.id != ""){required = $(formID + " input[type=checkbox]").attr("req");}	else {required = "0" }
			if (typeof(required) == 'undefined'){required = "0" }
			
			if (required != 0)
			{
				var hasChecks=true;
				var fieldMessage = $(formID + " input[type=checkbox]").attr("message")
				if (!element.checked)
				{
					var found = $.inArray(fieldMessage, fld)
					if(found==-1)	{boolIsValid = false;	fld.push(fieldMessage); }
				}
				else
					{
						boolIsCheck=true; fld.push(fieldMessage); 
						if (boolIsValid){boolIsValid = true;}
					}
			}
		}
		else
		{
			if(element.id != ""){required = $(elementID).attr("req");}	else {required = "0" }
				
			if(required == "number")
			{
				if(!validate(element.value,element.id,number) || element.value.length == 0 )
					{	boolIsValid = false;fixFields = fieldBad(elementID,fixFields)	}
				else
					{ fieldGood(elementID) }
			}
			if(required == "string")
			{
				if(!validate(element.value,element.id,letters) || element.value.length == 0 )
					{	boolIsValid = false;fixFields = fieldBad(elementID,fixFields)	}
				else
					{ fieldGood(elementID) } 
			}
			if(required == "email")
			{
				if(!validateEmail(element) || element.value.length == 0 )
					{	boolIsValid = false;fixFields = fieldBad(elementID,fixFields)	}
				else
					{ fieldGood(elementID); }
			}
			if(required == "open")
			{
				if(element.value.length == 0 )
					{	boolIsValid = false;fixFields = fieldBad(elementID,fixFields)	}
				else
					{ fieldGood(elementID) }
			}
		}
	}
	if (!boolIsRadio && hasRadios){jQuery.each(fld, function() {fixFields += this+newLine;});}
	if (!boolIsCheck && hasChecks){jQuery.each(fld, function() {fixFields += this+newLine;});}
	
	if(!boolIsValid){jAlert(fixFields, title);}
		
	return boolIsValid;
}

//Validates input fields
function validate(sText,strFieldName,validChars)
{
  var isValid=true;
  var char;
	 
	for (i = 0; i < sText.length && isValid == true; i++) 
	{ 
		char = sText.charAt(i);
		if (validChars.indexOf(char) == -1)
			{isValid = false;}
		else
			{isValid = true;}
	}
	return isValid;  
}

//Validates email field
function validateEmail(element)
{
	var isValid = true;
	with(element)
	{
		var apos   = value.indexOf("@");
		var dotpos = value.lastIndexOf(".");
		if (apos < 1 || dotpos-apos < 2)
			{isValid = false;}
		else
			{isValid = true;}
	}/*end with*/
	return isValid;
	
}

//Required Field
function fieldBad(element,fixFields)
{
	var newLine = '\n\r';	
	fieldError(element);
	fieldMessage = $(element).attr("message")
	if(typeof(fieldMessage)!='undefined'){fixFields+=$(element).attr("message")+newLine;}
	
	return fixFields;
}

//Field Passes
function fieldGood(element)
{
	className = $(element).attr('class');
	var newClass = className.replace('-error','');
	if(className != ''){$(element).removeClass(className)}
	$(element).addClass(newClass);
}

//Field Fails
function fieldError(element)
{
	className = $(element).attr('class');
	if (className.search("-error") == -1)
	{
		if(className != ''){$(element).removeClass(className)}
		$(element).addClass(className+'-error');
		$("#note").show();
	}
	
}

