// ==================================================================================
// FILE: VALIDATE.JS
//
//   DESCRIPTION:
//           This file contains client side validation scripts.
// ==================================================================================

var dispatchLookup = new Array() ;
var gField ;
var currentDate = new Date() ;

dispatchLookup["isNotEmpty"] = new dispatcher(isNotEmpty) ;
dispatchLookup["isValidDate"] = new dispatcher(isValidDate) ;
dispatchLookup["isSelected"] = new dispatcher(isSelected) ;
dispatchLookup["isChecked"] = new dispatcher(isChecked) ;


function Trim(inString)
{
	var sString = new String(inString);
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function dispatcher(validationFunc)
{
	this.doValidate = validationFunc ;
}

function validate(field, method)
{

	gField = field ;
	if (!dispatchLookup[method].doValidate())
		return false ;
	else
		return true ;
}

function isSelected()
{
	if (gField.selectedIndex == 0)
	{
		gField.focus() ;
		return false ;
	}
	else
		return true ;
}
function isChecked()
{


	l_options = -1;
	for (i=gField.length-1; i > -1; i--)
	{
		if (gField[i].checked)
		{
			l_options = i;
		}
	}

	if (l_options == -1)
	{
		return false;
	}
	else
	{
		return true;
	}
}


function isValidDate()
{
	var inputStr = gField.value ;
	var delim1 ;
	var delim2 ;
	var mm ;
	var dd ;
	var yyyy ;
	var format1 = /^\d{1,2}\/\d{1,2}\/\d{4}$/
	var format2 = /^\d{2}\d{2}\d{4}$/
	var format3 = /^\d{1,2}-\d{1,2}-\d{4}$/

	if (format3.test(inputStr))
	{
		inputStr = inputStr.replace(/-/g,"/") ;
	}
	if (format1.test(inputStr))
	{
		delim1 = inputStr.indexOf("/") ;
		delim2 = inputStr.lastIndexOf("/") ;
		mm = parseInt(inputStr.substring(0,delim1),10) ;
		dd = parseInt(inputStr.substring(delim1+1,delim2),10) ;
		yyyy = parseInt(inputStr.substring(delim2+1,inputStr.length),10) ;
	}
	else
	{
		if (format2.test(inputStr))
		{
			mm = parseInt(inputStr.substring(0,2),10)
			dd = parseInt(inputStr.substring(2,4),10)
			yyyy = parseInt(inputStr.substring(4,inputStr.length),10)
		}
		else
		{
			gField.focus() ;
			gField.select() ;
			return false ;
		}
	}

	if (isNaN(mm) || isNaN(dd) || isNaN(yyyy))
	{
		gField.focus() ;
		gField.select() ;
		return false ;
	}

	if (mm < 1 | mm > 12)
	{
		gField.focus() ;
		gField.select() ;
		return false ;
	}

	if (dd < 1 || dd > 31)
	{
		gField.focus() ;
		gField.select() ;
		return false ;
	}

	if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30)
	{
		gField.focus() ;
		gField.select() ;
		return false ;
	}
	else
		if (dd > 31)
		{
			gField.focus() ;
			gField.select() ;
			return false ;
		}

	if (mm == 2)
	{
		if (yyyy % 4 > 0 && dd > 28)
		{
			gField.focus() ;
			gField.select() ;
			return false ;
		}
		else
			if (dd > 29)
			{
				gField.focus() ;
				gField.select() ;
				return false ;
			}
	}

	gField.value = mm + "/" + dd + "/" + yyyy
	return true ;
}

function isNotEmpty()
{
	//var s = Trim(gField.value)

	if (gField.value == null || Trim(gField.value) == "") // || gField.value < "0")
	{
		//if ( gField.value.length < 1 )
		//{
			//alert(gField.value.length + ' length');
			//alert(gField.value + ' value');

			gField.focus() ;
			gField.select() ;
			return false ;
		//}
		//else
		//{
		//	return true ;
		//}
	}
	else
		return true ;
}

function dateAlert(name)
{
	var invalid ;

	invalid = "You have entered incorrect information into the " + name + " field!\n" ;
	invalid = invalid + "Please make sure that the date you have entered is valid\n"
	invalid = invalid + "and that you have used one of the following formats:\n" ;
	invalid = invalid + "\tmm/dd/yyyy\n" + "\tmm-dd-yyyy\n" + "\tmmddyyyy\n" ;
	alert(invalid) ;
}

function requiredField(name)
{
	var required ;

	required = name + " is a required field!\n" + "Please enter the appropriate information." ;
	alert(required) ;
}

function isBlank(field)
{
	if (field.value == null || field.value == "")
		return true ;
	else
		return false ;
}

function isblank(s)
{

   s = Trim(s)
   for(var i = 0; i < s.length; i++) {
     var c = s.charAt(i);
     if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
   }
return true;
}
