function LTrim(strString)
{
	var i=0;
	var intLen = strString.length;
	while((strString.charAt(i) == " ") && ( i < intLen))
	i++;
	strString = strString.substring(i,intLen);
	return  strString;
}

function RTrim(strString)
{
	var i= strString.length-1;
	while((strString.charAt(i) == " ") && ( i > 0 ))
	i--;
	strString = strString.substring(0,i+1);
	return strString;
}

function Trim(str)
{
   return RTrim(LTrim(str));
}

function checkInvalidCharacters(strValue)
{
    var invalidChar = new Array();
    invalidChar[0] = /[~']/;
    if(invalidChar[0].test(strValue))
    {
        alert("Do not use invalid charactes ~ and '");
        return true;
    }
} 

function date_split(str, del)
{
	var arr = str.split(del);
	return arr;
}

function is_blank(str)
{
	if (str == null) 
		return(true);
	if (!str) 
		return(true);
	for (m = 0; m < str.length; m++) 
		if (str.charAt(m) != " ") 
			return(false);
	return(true);
}

function strip_zero(str)
{
	tmp = '';
	for (n = 0; n < str.length; n++) {
		if (str.charAt(n) != '0' || tmp != '') {
			tmp += str.charAt(n);
		}
	}
	return(tmp);
}

function validate_field(fld, type)
{
	
	if (is_blank(fld.value))
		return(true);

	operator = new Array(11);
	operator[0] = ">="; 
	operator[1] = "<="; 
	operator[2] = "<>";
	operator[3] = "..";
	operator[4] = ">>";
	operator[5] = "<<";

	operator[6] = "="; 
	operator[7] = ">"; 
	operator[8] = "<"; 
	operator[9] = ":";
	operator[10] = "|";

	str1 = "";
	str2 = "";
	op = "";
   
	for (j = 0; j < 11; j++) {
		if (fld.value.indexOf(operator[j]) != -1) {
			op = operator[j];
			count = 0;
			index1 = 0;
			index2 = fld.value.indexOf(operator[j], parseInt(index1));
			while(index2 != -1) {
				num = count + 1;
				if (index1 < index2) {
					cmd = "str"+num+"="+"\""+fld.value.substring(index1, index2)+"\""+";";
					eval(cmd);
				}
				else {
					cmd = "str"+num+"="+"\"\"";
					eval(cmd);
				}
				index1 = index2 + operator[j].length;

				if (index1 < fld.value.length)
					index2 = fld.value.indexOf(operator[j], parseInt(index1));
				else 
					index2 = -1;
				count++;
			}
			num = count + 1; 

			if (index1 < fld.value.length) {
				cmd = "str"+num+"=";
				cmd += "\""+fld.value.substring(index1, fld.value.length)+"\""+";";
				eval(cmd);
			}
			else
				eval("str"+parseInt(num)+"="+"\"\"");
			break;
		} 
	}
	if (op == "") {
		if (type == "number")
			return(validate_num_field(fld,fld.value));
		else if (type == "date") {
			dte = validate_date_field(fld,fld.value);
			if (dte) 
				fld.value = dte;
			else
				return(false);
		}
		else if (type == "hcbpub") {
			hcbpub = validate_hcbpub(fld, fld.value);
			if (hcbpub)
				fld.value = hcbpub;
			else
				return(false);
		
		}	
	}
	if (op == ">>" || op == "<<") {
		if (str1 || str2) {
			alert(">> and << have to be by themselves");
			fld.focus();
			return(false);
		}
	}
	else if (op == "=" || op == ">" || op == "<" || op == ">=" || op == "<=" || op == "<>") {
		if (str1) {
			alert("Incorrect syntax");
			fld.focus();
			return(false);
		}
		if (!str2) {
			alert("Incorrect syntax");
			fld.focus();
			return(false);
		}
		if (type == "number")
			return(validate_num_field(fld, str2));
		else if (type == "date"){
			dte = validate_date_field(fld, str2);
			if (dte)
				fld.value = op+dte;
			else
				return(false);
		}
		else if (type == "hcbpub") {
			hcbpub = validate_hcbpub(fld, str2);
			if (hcbpub)
				fld.value = op+hcbpub;
			else
				return(false);
		}	
   	} 
	else if (op == "|") {  

		for (i = 1; i < (count + 2); i++) {
			if (eval("str"+parseInt(i)) != null && eval("str"+parseInt(i)) != "") {
				if (type == "number") {
					if (!validate_num_field(fld, eval("str"+parseInt(i))))
						return(false);
				}
				else if (type == "date") {
					dte = validate_date_field(fld, eval("str"+parseInt(i)));
					if (dte) {
						eval("str"+i+"=dte");
					}
					else
						return(false);
				}
				else if (type == "hcbpub") {
					hcbpub = validate_hcbpub(fld, eval("str"+parseInt(i)));
					if (hcbpub) {
						eval("str"+i+"=hcbpub");
					}
					else
						return(false);
				}
			}
			else {
				alert("Missing operand for the | condition");
				fld.focus();
				return(false);
			}
		} /* End for each argument */
		tmp = '';
		for (i = 1; i < (count + 1); i++) {
			tmp += eval("str"+i);
			tmp += op;
		}
		tmp += eval("str"+i);
		fld.value = tmp;

	}
	else if (op == ":" || op == ".."){
		if (count > 2) {
			alert("Too many operands");
			fld.focus();
			return(false);
		}
		for (i = 1; i < count + 2; i++) {
			if (eval("str"+parseInt(i)) != null && eval("str"+parseInt(i)) != "") {
				if (type == "number") {
					if (!validate_num_field(fld, eval("str"+parseInt(i))))
						return(false);
				}
				else if (type == "date") {
					dte = validate_date_field(fld, eval("str"+parseInt(i)));
					if (dte)
						eval("str"+i+"=dte");
					else
						return(false);
				}
				else if (type == "hcbpub") {
					hcbpub = validate_hcbpub(fld, eval("str"+parseInt(i)));
					if (hcbpub)
						eval("str"+i+"=hcbpub");
					else
						return(false);
				}
			}
			else {
				alert("Missing operand for the | condition");
				fld.focus();
				return(false);
			}
		}
		tmp = '';
		for (i = 1; i < (count + 1); i++) {
			tmp += eval("str"+i);
			tmp += op;
		}
		tmp += eval("str"+i);
		fld.value = tmp;
	}
	return true;
}

function validate_date_field(fld, value)
{
	if (is_blank(value))
		return(true);

	if (value.indexOf("/") != -1) {
		arr = date_split(value, "/");
		if (arr.length < 3) {
			return(error_date_field(fld,value));
		}
		month = parseInt(strip_zero(arr[0]));
		day = parseInt(strip_zero(arr[1]));
		if (arr[2] == '00')
			year = 2000;	
		else {
			year = parseInt(strip_zero(arr[2]));
		}
		splitsym = "/";
	}   
	else if (value.indexOf("-") != -1) {
		arr = date_split(value, "-");
		if (arr.length < 3) {
			return(error_date_field(fld,value));
		}
		arr[0] = strip_zero(arr[0]);
		month = parseInt(arr[0]);
		arr[1] = strip_zero(arr[1]);
		day = parseInt(arr[1]);
		if (arr[2] == '00')
			year = 2000;	
		else {
			arr[2] = strip_zero(arr[2]);
			year = parseInt(arr[2]);
		}
		splitsym = "-";
	}
	else if (!is_blank(value)) {
		if ((value.length != 6) && (value.length != 8)) {
			return(error_date_field(fld,value));
		}
		arr = new Array(3);
		arr[0] = value.substring(0, 2);
		arr[0] = strip_zero(arr[0]);
		month = parseInt(arr[0]);
		arr[1] = value.substring(2, 4);
		arr[1] = strip_zero(arr[1]);
		day = parseInt(arr[1]);
		arr[2] = value.substring(4, value.length);;
		if (arr[2] == "00")
			year = 2000;
		else {
			arr[2] = strip_zero(arr[2]);
			year = parseInt(arr[2]);
		}
		splitsym = ":";
	}

	if (isNaN(month) || isNaN(day) || isNaN(year)) {
		return(error_date_field(fld,value));
	}
	if (month < 1 || month > 12) 
		return(error_date_field(fld,value));
	else if (month < 10) 
		month = "0" + month;
	if (day < 1) 
		return(error_date_field(fld,value));
	if (month == 2 && day>28 && (year%4!=0)){
		return(error_date_field(fld,value));
	}
	else if (month == 2 && day>29 && (year%4==0)){
		return(error_date_field(fld,value));
	}
	else if ((month == 4 || month == 6 || month == 9 || month == 11) && day > 30)
		return(error_date_field(fld,value));
	else if (day > 31)
		return(error_date_field(fld,value));
	else if (day < 10)
		day = "0" + day;
	if ((year > 49) && (year < 100)) 
		year += 1900; 
	else if ((year < 50) && (year > 0)) 
		year += 2000;
	else if ((year == 0) || (year == 00)) 
		year = 2000;
	else if ((year < 1900) || (year > 2200))
		return(error_date_field(fld,value));

	if (splitsym == ":")
		dte = month + "" + day + "" + year;
	else dte = month + splitsym + day + splitsym + year;

	return(dte);
}

function validate_date_input(fld)
{	if (is_blank(fld.value)) return(true);
	dte=validate_date_field(fld,fld.value);
	if (dte) 
	{	fld.value=dte
		return(true);
	}
	else return(false);
}

function error_date_field(fld)
{
	alert("Invalid date entered");
	fld.focus();
	return(false);
}

function validDate(inDateStr){
	if(inDateStr == null || inDateStr==""){
		return false;
	}
	if(inDateStr.length != 10 ) {
		return false;
	}
	var inDate = new Date();
	inDate.setSeconds(00);
	inDate.setMinutes(00);
	inDate.setHours(00);
	
	inDate.setYear(inDateStr.substring(6, 10));
	var tempMonth0 = 0;
	var tempMonth1 = inDateStr.substring(0, 1);
	var tempMonth2 = inDateStr.substring(1, 2);
	var tempMonth3 = inDateStr.substring(0, 2);
	if(tempMonth1 == "0") {
		tempMonth0 = parseInt(tempMonth2) - 1 ;
	} else {
		tempMonth0 = parseInt(tempMonth3) - 1 ;
	}
	inDate.setMonth(tempMonth0);
	inDate.setDate(inDateStr.substring(3, 5));

	var monthTemp1 = (inDate.getMonth() + 1);
	if(inDate.getMonth() < 9) {
		monthTemp1 = "0" + monthTemp1;
	}
	var dateTemp1 = (inDate.getDate());
	if(inDate.getDate() < 10) {
		dateTemp1 = "0" + dateTemp1;
	}	
	var inDateStr =  monthTemp1 + "/" + dateTemp1 + "/" + inDate.getFullYear();
	
	var currDate = new Date();
	currDate.setSeconds(00);
	currDate.setMinutes(00);
	currDate.setHours(00);
	currDate.setYear("1900");
	currDate.setMonth("0");
	currDate.setDate("01");
	currDate.setDate(inDateStr.substring(3, 5));
		
	var tempMonth20 = 0;
	var tempMonth21 = inDateStr.substring(0, 1);
	var tempMonth22 = inDateStr.substring(1, 2);
	var tempMonth23 = inDateStr.substring(0, 2);
	
	if(tempMonth21 == "0") {
		tempMonth20 = parseInt(tempMonth22)-1 ;
	}
	else{
		tempMonth20 = parseInt(tempMonth23)-1 ;
	}
	currDate.setYear(inDateStr.substring(6, 10));
	currDate.setMonth(tempMonth20);
	
	var currMonthTemp = (currDate.getMonth()+1);	
	if(currDate.getMonth() < 9) {
		currMonthTemp = "0" + currMonthTemp;
	}
	
	var currDateTemp = (currDate.getDate());	
	if(currDate.getDate() < 10) {
		currDateTemp = "0" + currDateTemp;
	}	
	
	var currDateStr =  currMonthTemp + "/" + currDateTemp + "/" + currDate.getFullYear();
	if(inDateStr == currDateStr) {
		return true;
	}
	else{
		return false;
	}
}

function compareDateFields(firstDate, secondDate)
{
	var firstD = new Date();
	firstD.setSeconds(00);
	firstD.setMinutes(00);
	firstD.setHours(00);
	firstD.setYear(firstDate.substring(6, 10));
	var tempMonthStr = firstDate.substring(0, 2);
	if(tempMonthStr.substring(0, 1) == "0") {
		tempMonthStr = tempMonthStr.substring(1, 2);
	}
	var tempMonth = parseInt(tempMonthStr) - 1;
	firstD.setMonth(tempMonth);
	firstD.setDate(firstDate.substring(3, 5));

	var secondD = new Date();
	secondD.setSeconds(00);
	secondD.setMinutes(00);
	secondD.setHours(00);
	secondD.setYear(secondDate.substring(6, 10));
	tempMonthStr = secondDate.substring(0, 2);
	if(tempMonthStr.substring(0, 1) == "0") {
		tempMonthStr = tempMonthStr.substring(1, 2);
	}
	tempMonth = parseInt(tempMonthStr) - 1;
	secondD.setMonth(tempMonth);
	secondD.setDate(secondDate.substring(3, 5));

	var firstDMonthTemp = (firstD.getMonth() + 1);
	if(firstD.getMonth() < 9) {
		firstDMonthTemp = "0" + firstDMonthTemp;
	}
	var firstDDateTemp = (firstD.getDate());
	if(firstD.getDate() < 10) {
		firstDDateTemp = "0" + firstDDateTemp;
	}
	var firstDStr =  "" + firstD.getFullYear() + "" + firstDMonthTemp + "" + firstDDateTemp;

	var secondDMonthTemp = (secondD.getMonth() + 1);
	if(secondD.getMonth() < 9) {
		secondDMonthTemp = "0" + secondDMonthTemp;
	}
	var secondDDateTemp = (secondD.getDate());
	if(secondD.getDate() < 10) {
		secondDDateTemp = "0" + secondDDateTemp;
	}
	var secondDStr =  "" + secondD.getFullYear() + "" + secondDMonthTemp + "" + secondDDateTemp;

	if(parseInt(firstDStr) < parseInt(secondDStr) || parseInt(firstDStr) == parseInt(secondDStr)) {
		return true;
	} else {
		return false;
	}
}

function formatDateField(dateField) {
	var returnValue = "";
	if(dateField.value == null || dateField.value == "") {
		alert("Date value is null or empty");
		dateField.focus();
		returnValue = "ERROR";
		return returnValue;
	}
	var dateValue = dateField.value;

	var dateArr = new Array(3);
	if(dateValue.indexOf("/") > 0) {
		dateArr = dateValue.split("/");
	} else if(dateValue.indexOf("-") > 0){
		dateArr = dateValue.split("-");
	}
	if(dateArr.length != 3) {
		alert("Date format is invalid.  ");
		dateField.focus();
		returnValue = "ERROR";
		return returnValue;
		
	}
	if(isNaN(dateArr[0])) {
		alert("Invalid Date");
		dateField.focus();
		returnValue = "ERROR";
		return returnValue;
	}
	if(isNaN(dateArr[1])) {
		alert("Invalid Date");
		dateField.focus();
		returnValue = "ERROR";
		return returnValue;
	}
	if(isNaN(dateArr[2])) {
		alert("Invalid Date");
		dateField.focus();
		returnValue = "ERROR";
		return returnValue;
	}
	if(parseInt(dateArr[2]) < 50) {
		dateArr[2] = "20" + dateArr[2];
	} else if(parseInt(dateArr[2]) < 100) {
		dateArr[2] = "19" + dateArr[2];
	}
	if(dateArr[0].length < 2) {
		dateArr[0] = "0" + dateArr[0];
	}
	if(dateArr[1].length < 2) {
		dateArr[1] = "0" + dateArr[1];
	}
	var retDateValue =  dateArr[0] + "/" + dateArr[1] + "/" + dateArr[2];
	if(retDateValue.length != 10) {
		alert("Invalid Date Format. Correct format is mm/dd/yyyy.");
		dateField.focus();
		returnValue = "ERROR";
		return returnValue;
	} else {
		dateField.value = retDateValue;
		return returnValue;
	}
}

function inDateGTCurrentDate(inDate)
{
	var firstD = new Date();
	firstD.setSeconds(0);
	firstD.setMinutes(0);
	firstD.setHours(0);
	firstD.setYear(inDate.substring(6, 10));
	var tempMonth01 = inDate.substring(0, 1);
	var tempMonth02 = inDate.substring(1, 2);
	var tempMonth03 = inDate.substring(0, 2);
	var tempMonth = 0;		
	if(tempMonth01 == "0") {
		tempMonth = parseInt(tempMonth02) - 1;
	} else {
		tempMonth = parseInt(tempMonth03) - 1 ;
	}
	firstD.setMonth(tempMonth);
	firstD.setDate(inDate.substring(3, 5));
	var secondD = new Date();
	secondD.setSeconds(0);
	secondD.setMinutes(0);
	secondD.setHours(0);
	
	var firstDMonthTemp = (firstD.getMonth() + 1);
	if(firstD.getMonth() < 9) {
		firstDMonthTemp = "0" + firstDMonthTemp;
	}
	var firstDDateTemp = (firstD.getDate());
	if(firstD.getDate() < 10) {
		firstDDateTemp = "0" + firstDDateTemp;
	}	
	var firstDStr =  "" + firstD.getFullYear() + ""+ firstDMonthTemp + "" +firstDDateTemp;
	var secondDMonthTemp = (secondD.getMonth() + 1);
	if(secondD.getMonth() < 9) {
		secondDMonthTemp = "0" + secondDMonthTemp;
	}
	var secondDDateTemp = (secondD.getDate());
	if(secondD.getDate() < 10) {
		secondDDateTemp = "0" + secondDDateTemp;
	}	
	var secondDStr =  "" + secondD.getFullYear() + "" + secondDMonthTemp + "" + secondDDateTemp;
	if(parseInt(firstDStr) > parseInt(secondDStr) || parseInt(firstDStr) == parseInt(secondDStr)) {
		return true;
	} else {
		return false;
	}
}
function validTextAreaLength(field, length){
	if(field.value.length > length){
		alert("Exceeds maximum allowable length of characters");
		field.value = field.value.substring(0, length);
	}
}
