

function validateForm(frm)
{
// validating the entire form ('frm' is the for to be validated)
//Returns		: False if validation fails; else return true

//alert('in validateForm()');
//preparing the error messages
var msg; 
msg = "__________________________________________________________ \n\n" 
msg += "The form was not submitted because of the following error(s).\n"; 
msg += "Please correct these error(s) and re-submit.\n"; 
msg += "__________________________________________________________ \n\n"

var elementArray = frm.elements	; 		// get all elements of the form into array
var invalidElements =new Array();
var errMsg;
for(var i = 0; i < elementArray.length; i++){ 	// for each element of the form...
	var element = elementArray[i];
	if (element.validator){
		var v 	= element.validator;		// get validator, if any
		var validators = putItInArray(v);
		//alert('Number of validators: '+validators.length);
		for (var j=0; j<validators.length; j++){	
			var validatorItem = validators[j];
			switch(validatorItem){
				case 'notEmpty' :	// if validator is 'notEmpty'
					errMsg = notEmptyValidation(element);
					if (errMsg != '')invalidElements[invalidElements.length]= errMsg;
					break;

				case 'compareDateSmall' :	// if validator is 'notEmpty'
					var smallDate = '';
					var bigDate = '';
					if (element.value){
						smallDate = element.value;
						bigDateElementName = element.bigDate;
						if (frm.elements[bigDateElementName].value){ 
							//bigDate = frm.elements[bigDateElementName].value;
							//alert('smallDate : '+smallDate+'\nbigDateElement : '+bigDateElementName+'\nbigDate: '+bigDate);
							errMsg = compareDate(element,frm.elements[bigDateElementName]);
							if (errMsg != '')invalidElements[invalidElements.length]= errMsg;
						}
					}
					break;
			
					default :
				}
		}
	}
}

if (invalidElements != ''){	// there are some invalid items!! - validation fails
	for (var k=0; k<invalidElements.length; k++){
		msg += ((k+1)+'. '+invalidElements[k]);
	}
	alert(msg);
	return false;
}
else{
	return true; //validation success
}

}// end of validateForm()


function notEmptyValidation(element){
//Input Parameter	: Element to be validated
//Returns		: Element label followed by 'emptyFieldMsg' , if validation failed ('label' is a user defined property, contains the label for the textbox),  else returns ''

var emptyFieldMsg = '\t(Empty) \n';
var mess;
if (Trim(element.value) != '')// something is there!
return '';		// passed the validation
else

return element.label+emptyFieldMsg;	// failed validation ; returns the element name


	
}// end of notEmptyValidation()


function compareDate(smallDateElem,bigDateElem){
//Input Parameters (2)	: smallDateElem -- element for small Date, bigDateElem -- element for big Date, 
//Returns		: Element label followed by 'emptyFieldMsg' , if validation failed ('label' is a user defined property, contains the label for the textbox),  else returns ''

var smallDate = new Date(smallDateElem.value);
var bigDate = new Date(bigDateElem.value);
var compareFailedMsg = '\t'+smallDateElem.label+' should be less than '+bigDateElem.label+'\n';

if (bigDate < smallDate)
	return compareFailedMsg;
else
	return '';		// passed the validation
}//End of compareDate()


// common utility functions
function LTrim(str){
re =  /^\s+/;	//regular expression to match the starting white spaces
return(str.replace(re, ''));
}

function RTrim(str){
re =  /\s+$/;	//regular expression to match the ending white spaces
return(str.replace(re, ''));
}

function Trim(str){
return RTrim((LTrim(str)));
}

function putItInArray(str){
// this will create an array and put the different elements (delimeted by ',') in str ['str' is the string passed as 'validator' property from the html]
// ***** THIS S INCOMPLETE --- AS ON JUNE 26, 2001 - 
//alert ('in putItInArray()');
var elementArray = new Array();

var count=0;
var ind = 0;	//index of ','
while (ind != -1)
{
	//alert('str.length : '+str.length);
	ind = str.indexOf(",");
	//alert(' Index of , :'+ind);
	if (ind != -1){
		elementArray[count]=Trim(str.substring(0,(ind)));
	}else{
		elementArray[count]=Trim(str);
	}
	//alert('index: '+ind+'\n elementArray[count]: '+elementArray[count]);
	//alert('Str Before:'+str);
	str= Trim(str.substring(ind+1,str.length));
	//alert('Str After:'+str);
	count+=1;
}

return elementArray;
}

//returns today's date in 'mm/dd/yyyy' format
function getTodaysDate(){
var dateObj = new Date();

if(dateObj.getYear() > 1900)
  yyyy = dateObj.getYear();
else
  yyyy = 1900 + dateObj.getYear();

m = dateObj.getMonth() + 1;
if(m.toString().length < 2)
  {
  mm = "0" + m + "";
  }else
  {
  mm = m;
  }
d = dateObj.getDate();
if(d.toString().length < 2)
  {
  dd = "0" + d + "";
  }else
  {
  dd = d;
  }

return(mm+"/"+dd+"/"+yyyy);

}

//4. checkNumeric()
function checkNumeric(eve){
alert ('checkNumeric');
alert ('eve.keyCode : '+eve.keyCode );
if (eve.keyCode < 45 || eve.keyCode > 57) 
eve.returnValue = false;
}
function getDefaultValues(){
var formInDoc = document.forms.length;	// number of forms

for (var i=0; i<formInDoc ; i++){
	var elementArray = document.forms[i].elements	; // get all elements of the form into array
	for(var j = 0; j < elementArray.length; j++){ 	// for each element of the form...
		var element = elementArray[j];
		if (element.defaultVal){
			defalultValueCode = element.defaultVal;
			switch(defalultValueCode){
				case 'todaysDate' :	// if validator is 'notEmpty'
					//var val = getTodaysDate();
					element.value = getTodaysDate();
					break;
				default :
			}
		}
	}
}

}//getDefaultValues()