function textCounter(field, countfield, maxlimit) {
	//
	// Add these two lines to the form field tag being tracked:
	//
	//   onKeyDown="textCounter(this.form.review_text,this.form.remLen,8000)" 
	//   onKeyUp="textCounter(this.form.review_text,this.form.remLen,8000)"
	//
	// Add something like this to the form in which the field is located:  
	//   
	//   Characters remaining:&nbsp;&nbsp;<input type="text" name="remLen" size="5" MAXLENGTH="5" VALUE="< % =8000-LEN(rs.fields("review_text").value)% > "><BR><BR>
	//
	//
	if (field.value.length > maxlimit) {
		field.value = field.value.substring(0, maxlimit);
	} else {
		countfield.value = maxlimit - field.value.length;
	}
}



function CheckPhone(obj){												
	var sLIST = '1234567890';											
	var sTemp = '';
	var sExt = '';
	var iStart;		
		
	if(obj.value.indexOf('x') > -1){
		iStart = obj.value.indexOf('x');
		sExt = ' ' + obj.value.substring(iStart,obj.value.length);
		obj.value = obj.value.substring(0,obj.value.indexOf('x'));
	} 
	if(obj.value.indexOf('X') > -1){
		iStart = obj.value.indexOf('X');
		sExt = ' ' + obj.value.substring(iStart,obj.value.length);
		obj.value = obj.value.substring(0,obj.value.indexOf('X'));
	}	
		
	for(var i=0; i <= obj.value.length-1;i++){

		iLIST = sLIST.indexOf(obj.value.substring(i,i+1));
		if(iLIST > -1){
			sTemp = sTemp + obj.value.substring(i,i+1);

		}
	}																								
	if(sTemp != ''){
		switch(sTemp.length){
			case 11:
				obj.value = sTemp.substring(0,1) + '(' + sTemp.substring(1,4) + ')' + sTemp.substring(4,7) + '-' + sTemp.substring(7,11) + sExt;
				break;
			case 10:
				obj.value = '(' + sTemp.substring(0,3) + ')' + sTemp.substring(3,6) + '-' + sTemp.substring(6,10) + sExt;
				break;
			case 7:
				obj.value = sTemp.substring(0,3) + '-' + sTemp.substring(3,7) + sExt;
				break;
			default :
				break;
		} 
		return true;
	}
	else{
		return true;
	}
}



function DateFromToValidation(FromValue, ToValue){
	if(FromValue!='' && ToValue!=''){	
		var dtFrom = new Date(FromValue);
		var dtTo = new Date(ToValue);
		if(dtFrom > dtTo){
			alert('Date From should not be greater than Date To!'); 
			return false;
		}
		else{
			return true;
		}
	}
	else{
		return true;
	}
}



function OpenCalendar(name,obj){
	var sParam;
	sParam = 'dt=' + name + '&cd=' + obj.value;
	calendar_window=window.open('CMS_Calendar.aspx?' + sParam,'calendar_window','width=170,height=170');
	calendar_window.focus();
	return true;
}



function findText(finder_textbox, finder_selectbox)	{
	var searchStr = finder_textbox.value;
	var myExp = new RegExp(("^" + searchStr), "i");
	var foundResult = false;
	var i=finder_selectbox.options.length-1;

	while ((foundResult = false) || (i > -1))	{
		if( myExp.test(finder_selectbox.options[i].text)) {
			if(searchStr.length < 1){
				finder_selectbox.options[i].selected = true;
				foundResult = true;
			}else{
				if(finder_selectbox.options[i].value != ''){
					finder_selectbox.options[i].selected = true;
					foundResult = true;
				}
			}
		}
		i--;
	}	
}



function BrowserVersion(){
	var i = navigator.appVersion.indexOf('(');
	var sVer = navigator.appVersion.substring(0,i);
	var sLookup = '1234567890.';
	var sTemp = '';

	for(i=0;i<sVer.length-1;i++){
		if(sLookup.indexOf(sVer.charAt(i))>-1){
			sTemp+=sVer.charAt(i);
		}
	} 
	sVer=parseInt(sTemp);
	return(sVer);
}



function BrowserType(){
	return navigator.appName.substring(0,9);
}



function CheckForm(Field, Message, FieldType) {
    if  (!HasValue(Field, FieldType.toUpperCase() )) {
        alert (Message);
		Field.focus();
		return false; 
    }
	return true;
}



function  CheckField(Field, Type) {
	if (Type == "DATE") {
		// Set the year to be 4 digits
		SetYear(Field.value, Field);
		if  (!CheckDate(Field.value)) {
		    alert("Please enter a valid date in mm/dd/yyyy format");
		    Field.value = "";
		    Field.focus();
		    return false;
		}
	}
	if (Type == "MONEY") {
		if  (!CheckNumber(Field.value)) {
		    alert("Please enter a currency value");
		    Field.value = "$";
		    Field.focus();
		    return false;
		}
	}
	if (Type == "NUMBER") {
		if  (!CheckNumber(Field.value)) {
		    alert("Please enter a number");
		    Field.value = "";
		    Field.focus();
		    return false;
		}
	}
	if (Type == "EMAIL") {
		if  (!CheckEmail(Field.value)) {
		    alert("Please enter a valid email address");
		    Field.value = "";
		    Field.focus();
		    return false;
		}
	}
	if (Type == "ZIP") {
		if  (!CheckZipCode(Field)) {
		    alert("Please enter a valid zip code");
		    Field.value = "";
		    Field.focus();
		    return false;
		}
	}
	if (Type == "TIME") {
		if  (!CheckTime(Field.value)) {
		    alert("Please enter a valid time code");
		    Field.value = "";
		    Field.focus();
		    return false;
		}
	}	
	if (Type == "DATE2") {
		// Set the year to be 4 digits
		//SetYear(Field.value, Field);
		if  (!CheckDate2(Field.value, Field)) {
		    alert("Please enter a valid date in yyyy/mm format");
		    Field.value = "";
		    Field.focus();
		    return false;
		}
	}
}



function  CheckForm(Field, Message, FieldType) {
    if  (!HasValue(Field, FieldType.toUpperCase() )) {
        alert (Message);
		Field.focus();
		return false; 
    }
	return true;
}



function HasValue(obj, obj_type) {
	    
    var tempStr;
	    
    if (obj_type == "TEXT" || obj_type == "DATE" || obj_type == "MONEY" || obj_type == "NUMBER" )
		{
    	if (obj_type == "MONEY") {
    		if (obj.value.length < 2) return false;}
	    		
    	tempStr = trim(obj.value);
	    		
    	if (tempStr.length == 0) 
      		return false;
    	else 
      		return true;
	      		
   }else if (obj_type == "SELECT"){
        for (i=0; i < obj.length; i++)
	    	{
		if (obj.options[i].selected)
			return true;
		}
       	return false;
	       		
	}else if (obj_type == "RADIO" || obj_type == "CHECKBOX"){

        for (i=0; i < obj.length; i++)
	    	{
		if (obj[i].checked)
			return true;
		}
       	return false;	
	}
}



function CheckDate2(object_value,Field){
	    
    var isplit;
    var sYear;
    var sMonth;
	    
    if (object_value.length == 0)
        return true;

	isplit = object_value.indexOf('/');

	if (isplit == -1 || isplit == object_value.length) {
		isplit = object_value.indexOf('-');
			if (isplit == -1 || isplit == object_value.length) {
				isplit = object_value.indexOf('.');
					if (isplit == -1 || isplit == object_value.length)
						return false;
			}
	}
		
	sYear = object_value.substring(0, isplit);
	sMonth = object_value.substring(isplit + 1);
		
	if(sMonth.length == 1){
		sMonth = "0" + sMonth;
	}
	// If user only enters a 1 digit year, add a leading 0
	if ( parseInt(sYear) < 10 ){
		sYear = "0" + parseInt(sYear);
	}
	// If user enters 2 digit year < 70, assume 2000
	if ( parseInt(sYear) < 70 ) {
		sYear = "20" + sYear;
	}
	else {
	// If user enters 2 digit year >=70, assume 1900
		if ( parseInt(sYear) >= 70 && parseInt(sYear) < 100 ) {
			sYear = "19" + sYear;
		}
	}
		
	Field.value = sYear + "/" + sMonth;
		
	if (!CheckInteger(sMonth) || sMonth.length == 0) //check month
		return false;
	else
	if (!CheckRange(sMonth, 1, 12)) //check month
		return false;
	else
	if (!CheckInteger(sYear) || sYear.length == 0) //check year
		return false;
	else
	if (!CheckRange(sYear, 1900, 3000)) //check year
		return false;
	else
		return true;
			
}



function CheckDate(object_value){
    //Returns true if value is a date format or is NULL
    //otherwise returns false	

    if (object_value.length == 0)
        return true;

    //Returns true if value is a date in the mm/dd/yyyy, mm-dd-yyyy, mm.dd.yyyy format
	isplit = object_value.indexOf('/');

	if (isplit == -1 || isplit == object_value.length) {
		isplit = object_value.indexOf('-');
			if (isplit == -1 || isplit == object_value.length) {
				isplit = object_value.indexOf('.');
					if (isplit == -1 || isplit == object_value.length)
						return false;
			}
	}

    sMonth = object_value.substring(0, isplit);
	isplit2 = object_value.indexOf('/', isplit + 1);

	if (isplit2 == -1 || isplit2 == object_value.length) {
		isplit2 = object_value.indexOf('-', isplit + 1);
			if (isplit2 == -1 || isplit2 == object_value.length) {
				isplit2 = object_value.indexOf('.', isplit + 1);
					if (isplit2 == -1 || isplit2 == object_value.length)
						return false;
			}
	}

    sDay = object_value.substring((sMonth.length + 1), isplit2);
	sYear = object_value.substring(isplit2 + 1);

	if (!CheckInteger(sMonth) || sMonth.length == 0) //check month
		return false;
	else
	if (!CheckRange(sMonth, 1, 12)) //check month
		return false;
	else
	if (!CheckInteger(sYear) || sYear.length == 0) //check year
		return false;
	else
	if (!CheckRange(sYear, 1900, 3000)) //check year
		return false;
	else
	if (!CheckInteger(sDay) || sDay.length == 0) //check day
		return false;
	else
	if (!CheckDay(sYear, sMonth, sDay)) // check day
		return false;
	else
		return true;
}



function CheckDay(checkYear, checkMonth, checkDay)
    {

	maxDay = 31;

	if (checkMonth == 4 || checkMonth == 6 ||
			checkMonth == 9 || checkMonth == 11)
		maxDay = 30;
	else
	if (checkMonth == 2)
	{
		if (checkYear % 4 > 0)
			maxDay =28;
		else
		if (checkYear % 100 == 0 && checkYear % 400 > 0)
			maxDay = 28;
		else
			maxDay = 29;
	}

	return CheckRange(checkDay, 1, maxDay); //check day
    }



function CheckInteger(object_value)
    {
    //Returns true if value is a number or is NULL
    //otherwise returns false	

    if (object_value.length == 0)
        return true;

    //Returns true if value is an integer defined as
    //   having an optional leading + or -.
    //   otherwise containing only the characters 0-9.
	var decimal_format = ".";
	var check_char;

    //The first character can be + -  blank or a digit.
	check_char = object_value.indexOf(decimal_format)
    //Was it a decimal?
    if (check_char < 1)
	return CheckNumber(object_value);
    else
	return false;
    }



function NumberRange(object_value, min_value, max_value)
    {
    // check minimum
    if (min_value != null)
	{
        if (object_value < min_value)
		return false;
	}

    // check maximum
    if (max_value != null)
	{
	if (object_value > max_value)
		return false;
	}
		
    //All tests passed, so...
    return true;
    }



function CheckNumber(object_value)
    {     
    //Returns true if value is a number or is NULL
    //otherwise returns false	

    if (object_value.length == 0)
        return true;

    //Returns true if value is a number defined as
    //   having an optional leading + or -.
    //   having at most 1 decimal point.
    //   otherwise containing only the characters 0-9.
	var start_format = " .+-0123456789$";
	var number_format = " .0123456789$,";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;

    //The first character can be + - .  blank or a digit.
	check_char = start_format.indexOf(object_value.charAt(0))
    //Was it a decimal?
	if (check_char == 1)
	    decimal = true;
	else if (check_char < 1)
		return false;
	//Remaining characters can be only . or a digit, but only one decimal.
	for (var i = 1; i < object_value.length; i++)
	{
		check_char = number_format.indexOf(object_value.charAt(i))
		if (check_char < 0)
			return false;
		else if (check_char == 1)
		{
			if (decimal)		// Second decimal.
				return false;
			else
				decimal = true;
		}
		else if (check_char == 0)
		{
			if (decimal || digits)	
				trailing_blank = true;
        // ignore leading blanks

		}
	        else if (trailing_blank)
			return false;
		else
			digits = true;
	}	
    //All tests passed, so...
    return true
    }



function CheckRange(object_value, min_value, max_value)
    {
    //if value is in range then return true else return false

    if (object_value.length == 0)
        return true;


    if (!CheckNumber(object_value))
	{
	return false;
	}
    else
	{
	return (NumberRange((eval(object_value)), min_value, max_value));
	}
		
    //All tests passed, so...
    return true;
    }



function formatUSCurrency(theNumber) {
  var isNegative = 0
  if (theNumber != "") {
    var workingNumber = theNumber + "" // Evaluate to a string

    if (workingNumber.charAt(0) == "-") { 
      isNegative = 1;
      workingNumber = workingNumber.substring(1, workingNumber.length)
    }

    var withoutChars = ""
    for (x=0; x<=((workingNumber.length)-1); x++) {
      thisChar = workingNumber.charAt(x);
      if (thisChar == "M" || thisChar == "m")
			withoutChars += "000000";
		else if (thisChar == "K" || thisChar == "k")
			withoutChars += "000";
		else {
			charAsNum = parseInt(thisChar)
			if ( ((thisChar >= "0") & (thisChar <= "9")) || (thisChar == ".")  )
				withoutChars += workingNumber.charAt(x) 
		}
    }
    workingNumber = withoutChars
    decimalPoint = workingNumber.indexOf(".")

    if (decimalPoint == -1) {
      dollarValue = workingNumber
      centsValue = ""
      } else if (decimalPoint == 0) {
      dollarValue = "0"
     centsValue = workingNumber.substring(decimalPoint + 1, workingNumber.length)
    } else {
        dollarValue = workingNumber.substring(0, decimalPoint)
        if (decimalPoint == (workingNumber.length - 1)) {
		  centsValue = "00";
        } else {
          centsValue = getValue(workingNumber.substring(decimalPoint + 1, workingNumber.length));
          centsValue += "0";
          centsValue = centsValue.charAt(0) + centsValue.charAt(1)
        }
    }

    var theString = dollarValue;
    var totalCommas = Math.floor((theString.length - 1) / 3)

    var dollarAmt = ""
    x=dollarValue.length
    position = 0
    while (x > 0) {
	x = x - 1
        thisChar = dollarValue.charAt(x)
	rounded = Math.round(position/3)
	if ( (position/3 == rounded ) & (position != 0) ) {
           dollarAmt = "," + dollarAmt
	}
        dollarAmt = thisChar +  dollarAmt
	position = position + 1
    }

    if (isNegative) {
      theString = "-$" + dollarAmt + "." + centsValue;
      //theString = "($" + dollarAmt + "." + centsValue + ")"
    } 
    else if (centsValue == "") 
      theString = "$" + dollarAmt;
	 else
      theString = "$" + dollarAmt + "." + centsValue;
    return (theString);
  } else {
    return("$0.00");
  }
}



function getValue(theString)
{
    var noJunk = "";
    var withDollar = "";
    var foundDecimal = 0;
    var foundAlphaChar = 0;

    theString += "";
    for (i=0; i <= theString.length; i++) {
        var thisChar = theString.substring(i, i+1);

        if (thisChar == ".") {
          foundDecimal = 1;
          noJunk = noJunk + thisChar;
        }

        if ((thisChar < "0") || (thisChar > "9")) {
          if ((thisChar != "$") && (thisChar !=".") && (thisChar != ",") && (thisChar != " ") && (thisChar !="")) foundAlphaChar = 1;
        } else {
	   withDollar = withDollar + thisChar
	   noJunk = noJunk + thisChar
	}

	if ((thisChar == "$") || (thisChar == ".") || (thisChar == ",")) {
	  withDollar = withDollar + thisChar
	}
     }

     if (foundDecimal) { return parseFloat(noJunk); }
     //Changed line below to fix .09 - .01 rounding problem AJG 3/9/00
     //else if (noJunk.length > 0) { return parseInt(noJunk); }
     else if (noJunk.length > 0) { return noJunk; }
     else return 0;

}



function  SetYear(object_value, Field) {
    if (object_value.length == 0)
        return true;

    //Returns true if value is a date in the mm/dd/yyyy, mm-dd-yyyy, mm.dd.yyyy format

	isplit = object_value.indexOf('/');

	if (isplit == -1 || isplit == object_value.length) {
		isplit = object_value.indexOf('-');
			if (isplit == -1 || isplit == object_value.length) {
				isplit = object_value.indexOf('.');
					if (isplit == -1 || isplit == object_value.length)
						return false;
			}
	}

	isplit2 = object_value.indexOf('/', isplit + 1);
	if (isplit2 == -1 || isplit2 == object_value.length) {
		isplit2 = object_value.indexOf('-', isplit + 1);
			if (isplit2 == -1 || isplit2 == object_value.length) {
				isplit2 = object_value.indexOf('.', isplit + 1);
					if (isplit2 == -1 || isplit2 == object_value.length) {
					  // If no year entered, assume current year
					  CurrentDate = new Date();
					  // AJG 6/14/00 - made change, do not add 1900 to CurrentDate.getYear() to handle if user does not enter year
					  Field.value = object_value.substring(0, isplit) + "/" +
						object_value.substring(isplit + 1) + "/" +
						(CurrentDate.getYear());
					  return true;
					}
			}
	}

	sYear = object_value.substring(isplit2 + 1);
	// If user only enters a 1 digit year, add a leading 0
	if ( parseInt(sYear) < 10 )
		sYear = "0" + parseInt(sYear);

	// If user enters 2 digit year < 70, assume 2000
	if ( parseInt(sYear) < 70 ) {
		Field.value = object_value.substring(0, isplit) + "/" +
			object_value.substring(isplit + 1,isplit2) + "/" +
			"20" + sYear;
		return true;
	}
	else
	// If user enters 2 digit year >=70, assume 1900
	if ( parseInt(sYear) >= 70 && parseInt(sYear) < 100 ) {
		Field.value = object_value.substring(0, isplit) + "/" +
			object_value.substring(isplit + 1,isplit2) + "/" +
			"19" + sYear;
		return true;
	}
	else {
		Field.value = object_value.substring(0, isplit) + "/" +
			object_value.substring(isplit + 1,isplit2) + "/" +
			sYear;
		return true;
	}
}



//----------------------------------------------------
// Function to strip out $ and , from money fields
function ConvertMoney(object_value)
    {     
    //Returns converted field
    //Returns "" if null

    if (object_value.length < 2)
        return "";

    //Take out $ and ,
    //   having an optional leading + or -.
    //   having at most 1 decimal point.
    //   otherwise containing only the characters 0-9.
	var start_format = " .-0123456789";
	var number_format = " .0123456789";
	var check_char;
	var ConvertedField = "";

    //The first character can be + - . or a digit.
	check_char = start_format.indexOf(object_value.charAt(0));
    //Was it a negative sign?
	if (check_char > 0)
		ConvertedField = object_value.charAt(0);

	//Remaining characters can be only . or a digit, but only one decimal.
	for (var i = 1; i < object_value.length; i++) {   
		check_char = number_format.indexOf(object_value.charAt(i));
		if (check_char > 0)
			ConvertedField = ConvertedField + object_value.charAt(i);
	}	
    //All tests passed, so...
    return ConvertedField;
}




function CheckEmail(vIn) {
	var iAtCnt = 0, iDotCnt = 0, l = vIn.length;
	if ( vIn.length == 0 ) { return true; }
	if ( vIn.lastIndexOf("@") > vIn.lastIndexOf(".") ) { return false; }
	if ( vIn.charAt(0) == "@" || vIn.charAt(0) == "." ) { return false; }
	if ( vIn.charAt(l-1) == "@" || vIn.charAt(l-1) == "." ) { return false; }
	for ( i=0 ; i<l ; i++ ){
        	if ( vIn.charAt(i) == "@" ) { iAtCnt++; }
		if ( vIn.charAt(i) == "." ) { iDotCnt++; }
	}
	if ( iAtCnt == 1 && iDotCnt > 0 ){ return true; }
	else { return false; }
}



function CheckZipCode(obj_this) {
		
	var vIn
	vIn = trimSpace(obj_this.value);
	if ( vIn.length == 0 ) { return true; }
	if ( vIn.lastIndexOf("-") != -1) {vIn = vIn.substring(0, vIn.lastIndexOf("-")) + vIn.substring((vIn.lastIndexOf("-")+1))}
	if ( !CheckNumber(vIn) ) { return false; }
	if ( vIn.length == 5 ) { obj_this.value = vIn; return true; }
	if ( vIn.length == 9 ) { 
		vIn = vIn.substring(0, 5) + "-" + vIn.substring(5) 
		obj_this.value = vIn;
		return true; 
	}else
		{ return false; }
}



function trimSpace(vIn) {
	var tmp = "";
	for ( i = 0 ; i < vIn.length ; i++ ){
		if ( vIn.charAt(i) != " " ){ 
			tmp += vIn.charAt(i);
		}
	}
	return tmp;
}



function trim(vIn) {
	var begin = 0;
	var len = vIn.length;
	while( begin < len ){
		if( vIn.charAt(begin) != " " ){
			break;
		}
		begin++;
	}
	var end = len
	var nextend = len - 1;
	while( end > begin ){
		if( vIn.charAt(nextend) != " " ){
			break;
		}
		end--;
		nextend--;
	}
	if ( end > begin ){
		vIn = vIn.substring(begin, end);
	} else {
		vIn = "";
	}
	return vIn;
}



function CheckLength(obj_this, numchars) {
		
	var nChars = 0

	if (obj_this.value != "") {	
		for ( var charIndex = 0; charIndex < obj_this.value.length; charIndex++ ) {
		    var character = obj_this.value.charAt( charIndex );
		    if ( character != ' ' && character != '\t' ) {
		        nChars++;
		    }else{
		        nChars = 0;
		    }
		}
		if(nChars != numchars) {
			alert("Field must be " + numchars + " characters long.")
			obj_this.focus();
			event.cancelBubble;
			return false;
		}
		else
			return true;
	}
}



function CheckTime(obj_this) {
	if (obj_this.length == 0){
		return true;
	}
	return IsValidTime(obj_this);
}



function IsValidTime(timeStr) {
	var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
	var matchArray = timeStr.match(timePat);
		
	if (matchArray == null) {
		//alert("Time is not in a valid format.");
		return false;
	}
		
	hour = matchArray[1];
	minute = matchArray[2];
	second = matchArray[4];
	ampm = matchArray[6];

	if (second=="") { second = null; }
	if (ampm=="") { ampm = null }

	if (hour < 0  || hour > 23) {
		//alert("Hour must be between 1 and 12. (or 0 and 23 for military time)");
		return false;
	}
	if (hour <= 12 && ampm == null) {
		return false;
		/*
		if (confirm("Please indicate which time format you are using.  OK = Standard Time, CANCEL = Military Time")) {
			alert("You must specify AM or PM.");
			return false;
		}
		*/
	}
	if  (hour > 12 && ampm != null) {
		//alert("You can't specify AM or PM for military time.");
		return false;
	}
	if (minute<0 || minute > 59) {
		//alert ("Minute must be between 0 and 59.");
		return false;
	}
	if (second != null && (second < 0 || second > 59)) {
		//alert ("Second must be between 0 and 59.");
		return false;
	}
		
	return true;
}

function OpenHelpWindow(name){
	//alert(name);
	help_window=window.open(name,'help_window','width=400,height=400,scrollbars=yes');
	help_window.focus();
	return false;
}

function ShowOrHide(itemId) {
		var obj = document.getElementById(itemId);
		var imgPlus = itemId + 'imgPlus';
		var imgMinus = itemId + 'imgMinus';
					
		if (obj.style.display == 'none') {
			obj.style.display = 'inline';
			document.getElementById(imgPlus).style.display = 'inline';
			document.getElementById(imgMinus).style.display = 'none';
		} else {
			obj.style.display = 'none';
			document.getElementById(imgPlus).style.display = 'none';
			document.getElementById(imgMinus).style.display = 'inline';
		}
}
