function validate(ElementObject, ElementObject_Error, DataType, DataMinLength, DataMaxLength, NumericLowerLimit, NumericUpperLimit){
	ObjectValue = ElementObject.value;
	ObjectLength = ElementObject.value.length;
	objRegExp = new RegExp;
	
	boolError = false;
			
	if (ObjectLength < DataMinLength || ObjectLength > DataMaxLength) {
		boolError = true;
		}
		
	if (ObjectValue < NumericLowerLimit){
		boolError = true;
	}
	if (ObjectValue > NumericUpperLimit){
		boolError = true;
	}
	
	switch(DataType) {
		case 'bit':
			if (ObjectValue != 0 && ObjectValue != 1){
				boolError = true;
			}
		break
		case 'int':
			objRegExp  = /(^-?\d\d*$)/;
			if (!objRegExp.test(ObjectValue)){
				boolError = true;
			}
		break
		case 'numeric':
			objRegExp  = /(^-?\d\d*$)/;
			if (!objRegExp.test(ObjectValue)){
				boolError = true;
			}
		break
		case 'decimal':
			objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
			if (!objRegExp.test(ObjectValue)){
				boolError = true;
			}
		break
		case 'float':
			objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
			if (!objRegExp.test(ObjectValue)){
				boolError = true;
			}
		break
		case 'real':
			objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
			if (!objRegExp.test(ObjectValue)){
				boolError = true;
			}
		break
		case 'datetime':
			  //May have to adjust for European Date/Time format
			  objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/

			  //check to see if in correct format
			  if(!objRegExp.test(ObjectValue)){
					boolError = true; //doesn't match pattern, bad date
			    }
			  else{
			    var arrayDate = ObjectValue.split(RegExp.$1); //split date into month, day, year
				var intDay = parseInt(arrayDate[1],10); 
				var intYear = parseInt(arrayDate[2],10);
			    var intMonth = parseInt(arrayDate[0],10);
			    
				//check for valid month
				if(intMonth > 12 || intMonth < 1) {
					boolError = true;
				}
				
			    //create a lookup for months not equal to Feb.
			    var arrayLookup = { '01' : 31,'02' : 29,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31, '08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31,'1' : 31,'2' : 29,'3' : 31, '4' : 30,'5' : 31,'6' : 30,'7' : 31, '8' : 31,'9' : 30 }
			  
			    //check if month value and day value agree
			    if(arrayLookup[arrayDate[0]] != null) {
			      if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0){
						//found in lookup table, good date
					}
					else
						{
						boolError = true;
						}
					}
				else
					{
					boolError = true;
			    }
			  }
		break
		case 'varchar':

		break
		case 'text':

		break
		}
		
		if (boolError == true){
			ElementObject_Error.value = '*';
			}
		else {
			ElementObject_Error.value = '';
			}
	validateform(document.forms[0]);
}

function validateform(FormObject){
	var strWarning = '';
	objRegExp = new RegExp;
	objRegExp  = /_Error/;
	
	for(i = 0; i < FormObject.length; i++){
		if (objRegExp.test(FormObject.elements[i].name)) {
			if (FormObject.elements[i].value == '*') {
				strWarning = 'error';
			}
		}
	}
	if (strWarning == '') {
		FormObject.Warning.value = '';
		return true;
		}
	else
		{
			FormObject.Warning.value = '* required field';
			return false;
		}
}

function validateforminitial(FormObject){
	objRegExp = new RegExp;
	objRegExp  = /_Error/;
	
	for(i = 0; i < FormObject.length; i++){
		FormObject.elements[i].focus();
	}
}