<!--
// file: inc_FormCheck.js

/*
	*************************************************************************************************
	Functions
	*************************************************************************************************
	function DisableCheckboxVal
	function allowSendPropSearch(myform)
	function selectcheck(selector)
	function Get_Fieldname(myform, fieldname)
	function Get_FieldnameX(myform, fieldname, count)
	function MakeSQLSafe(crtl)
	function datecheck(dateitem)
	function numbercheck(numberitem)
	function numbercheck(numberitem, theType)
	function initArray()
	function cleandate(crtl)
	function ValidDateTime(crtl)
	function validDate(str)
	function ValidateTime(myElement)
	function rangeChk(val1, val2)
	function DateRangeChk(DateObj1, DateObj2)
	function Required_Fields(name,type,max,alternate)
	function Required_Load_Fields(name,elemRef,type,max,alternate)
	function Feature_Load_Fields(name,elemRef,type,max,max_checked,alternate)
	function lupdate(myform, item,max,fieldname)
	function lupdate2(myform, item,max,fieldname)
	function isaPosInt(str)
	function isaPosFloat(str)
	function int_val_check(item,max,fieldname)
	function float_val_check(item,max,fieldname)
	function int_val_check2(item,max,fieldname)
	function float_val_check2(item,max,fieldname)
	function len_check(item,max,fieldname)
	function len_check2(item,max,fieldname)
	function rad_check(item,max,fieldname)
	function check_box(myform, start, max)
	function list_box(myform, ref)
	function getCheckboxVal(myform, field)
	function setCheckboxVal(myform, field, value)
	function CompareRange(crtl1, crtl2)
	function CompareStreetRange(crtl1, crtl2)
	function compareDates(date1, date2, fieldname)
	function specdatecheck(item, todaysDate, months)
	function specdatecheckdays(item, todaysDate, days)
	function ClearForm(myform)
	function CheckLength(myform, item, maxLength, msg)
	function CheckEmail(item)
	function CheckState(crtl)
	function inArray(theArray, theString)
	function WhereInArray(theArray, theString)
	function RTrim(strToTrim)
	function LTrim(strToTrim)
	function Trim(strToTrim)
	*************************************************************************************************
*/



// Diable Checkbox option specific
function DisableCheckboxVal(myform, field,svalue)
{
	var FieldLocation = Get_Fieldname(myform, field);
	if(FieldLocation < myform.elements.length)
	{
		for(var i=0;i<myform.all[field].length;i++)
		{
			if(myform.elements[FieldLocation+i].value==svalue)
				 myform.elements[FieldLocation+i].disabled = true;
		}
	}

}






// Called by search screen to make sure required fields are completed
function allowSendPropSearch(myform) {
	var Requireds = new initArray(new Required_Fields("prop_type",3,5,"Property Type"));
	var returnVal = true;
	var msg = "The following Required Fields must be valid before your listing can be submitted:\n\n"
	for (var i =0; i < Requireds.length; i++)
	{
			switch (Requireds[i].type)
			{
			case 0: //Text Field
				if (!len_check(myform.elements[Get_Fieldname(myform, Requireds[i].name)],Requireds[i].max))
					{
					returnVal = false;
					msg = msg + Requireds[i].alternate + "\n";
					}
			break;
			case 1: //Integer Text Field
				if (!int_val_check(myform.elements[Get_Fieldname(myform, Requireds[i].name)],Requireds[i].max))
					{
					returnVal = false;
					msg = msg + Requireds[i].alternate + "\n";
					}
			break;
			case 2: //Floating Point Text Field
				if (!float_val_check(myform.elements[Get_Fieldname(myform, Requireds[i].name)],Requireds[i].max))
					{
					returnVal = false;
					msg = msg + Requireds[i].alternate + "\n";
					}
			case 3: //Check Box
				if (!check_box(myform, Get_Fieldname(myform, Requireds[i].name),Requireds[i].max))
					{
					returnVal = false;
					msg = msg + Requireds[i].alternate + "\n";
					}
			}
	}
	if (returnVal)
	{
		var blnArea = false;
		for(i=myform.AREA.options.length - 1;i>0;i--)
		{
			if (myform.AREA.options[i].selected)
			{
				blnArea = true;
				break;
			}
		}
		if (blnArea)
			myform.AREA.options[0].selected = false;
		return true;
	}
	else
	{
		alert(msg);
		return false;
	}
}

function selectcheck(selector)
{
	if(selector.selectedIndex==0)
		for(count=1;count<selector.options.length;count++)
			selector.options[count].selected=false;
	else
		selector.options[0].selected=false;
}


function Get_Fieldname(myform, fieldname)
{
	for(var i=0;i<myform.elements.length;i++)
	{
		if(fieldname == myform.elements[i].name)
			return i;
	}
	return i;
} // end function


function Get_FieldnameX(myform, fieldname, count)
{
	var j = 1;
	if(!isaPosInt(count))
		return myform.elements.length;
	for(var i=0;i<myform.elements.length;i++)
	{
		if(fieldname == myform.elements[i].name)
		{
			if(j==count)
				return i;
			else
				j++;
		}
	}
	return i;
} // end function

//This function only removes special characters
function MakeSQLSafe(crtl, label)
{
	var Value = crtl.value;
	var strMessage = '';
	var re; //= new RegExp("'", "ig");
	if(Value.indexOf("'") >= 0)
	{
		strMessage += "You may not use the character ' in the " + label + ". It has been removed.\n";
		re = /'/gi;
		Value = Value.replace(re, "");
	}
	if(Value.indexOf("`") >= 0)
	{
		strMessage += "You may not use the character ` in the " + label + ". It has been removed.\n";
		re = /`/gi;
		Value = Value.replace(re, "");
	}
	if(Value.indexOf('"') >= 0)
	{
		strMessage += 'You may not use the character " in the ' + label + '. It has been removed.\n';
		re = /"/gi;
		Value = Value.replace(re, "");
	}
	if(Value.indexOf("#") >= 0)
	{
		strMessage += "You may not use the character # in the " + label + ". It has been removed.\n";
		re = /#/gi;
		Value = Value.replace(re, "");
	}
	if(Value.indexOf("%") >= 0)
	{
		strMessage += "You may not use the character % in the " + label + ". It has been removed.\n";
		re = /%/gi;
		Value = Value.replace(re, "");
	}

	if(strMessage != '')
	{
		alert(strMessage);
		crtl.value = Value;
	}
}

function datecheck(dateitem)
{

 
    
    // Listing Error
	var myDate = validDate(cleandate(dateitem));
	
	
	
	if(myDate == false)
	{
		alert("Invalid Date: " + dateitem.value + "\nPlease enter using this format: mm/dd/yyyy");
		dateitem.value = "";
		event.cancelbubble = true;
		if(dateitem.type != 'hidden' && !dateitem.disabled)
			dateitem.focus();
	}
}


function phonenumbercheck(numberitem)
{
	var itemtext;
	itemtext=numberitem.value;
	if(itemtext=="")
		return;
	if(!isaPosInt(itemtext))
	{
		numberitem.value="";
		event.cancelbubble = true;
		try
		{
			numberitem.focus();
		}
		catch(e)
		{
		}
		alert("Enter the number without punctuation.");
	}
}


function numbercheck(numberitem)
{
	var itemtext;
	itemtext=numberitem.value;
	itemtext=RTrim(itemtext);
	
	if(itemtext=="")
		return;
	if(!isaPosInt(itemtext))
	{
		numberitem.value="";
		event.cancelbubble = true;
		try
		{
		numberitem.focus();
		}
		catch(e)
		{
		}
		alert("Enter the number without commas or decimal points.");
	}
}


function numbercheck(numberitem, theType)
{
	var itemtext;
	itemtext = numberitem.value;
	itemtext=RTrim(itemtext);
	if(itemtext == '')
		return true;
	if(theType == 1)
	{
		if(!isaPosInt(itemtext))
		{
			
			numberitem.value = '';
			event.cancelbubble = true;
			try
			{
			numberitem.focus();
			}
			catch(e)
			{
			}
			alert("Enter the number without commas or decimal points.");
			return false;
			
		}
	}
	else
	{
		if(!isaPosFloat(itemtext))
		{
			numberitem.value = '';
			event.cancelbubble = true;
			try
			{
			numberitem.focus();
			}
			catch(e)
			{
			}
			alert("You must enter a decimal or whole number in this box.");
			return false;
		}
	}
	return true;
}

function initArray()
{
this.length = initArray.arguments.length;
for (var i =0; i < this.length; i++)
	{
	this[i] = initArray.arguments[i];
	}
} // end function


function cleandate(crtl)
{
	var DateStr = crtl.value
	
	
    var strArr = DateStr.split(" ");
    
    var strDate = strArr[0];
    
	//alert('strDate.charAt(1)=' + strDate.charAt(1));
	if(strDate.charAt(0) == "0")
		{
		var newDate = '';
		for (var i=1; i <= strDate.length; i++)
			{
			newDate = newDate + strDate.charAt(i);
			//alert('newDate=' + newDate);
			}
		if(crtl.value != ('0' + newDate))
			crtl.value = newDate;
		strDate = newDate;
		}
	//alert('strDate=' + strDate);
	return strDate;
}

function ValidDateTime(crtl)
{
	var BaseValue = crtl.value;
	if(BaseValue != '')
	{
		var DatePart = BaseValue;
		if(BaseValue.indexOf(' ') > 0)
			DatePart = BaseValue.substring(0,BaseValue.indexOf(' '));
		var bReturn = validDate(DatePart);
		//alert('DatePart=' + DatePart + 'returns=' + String(bReturn));
		if(!bReturn)
		{
			alert("Invalid Date: " + BaseValue + "\nPlease enter using this format: mm/dd/yyyy");
			event.cancelbubble = true;
			crtl.focus();
			return;
		}
		if(BaseValue.indexOf(' ') > 0)
		{
			var TimePart = BaseValue.substring(BaseValue.indexOf(' ')+1,BaseValue.length);
			//TimeValue = cleantime(TimePart);
			if(!validTime(TimePart))
			{
				event.cancelbubble = true;
				crtl.focus();
				return;
			}
		}
		//alert('DatePart:' + DatePart + ': TimePart:' + TimePart + ':');
	}
}

function validDate(str)
{
	var days;
	var seperators = new initArray(0,0);
	var count = 0;
	var month="";
	var day="";
	var year="";
	var theDate="";
	if (str == "" || str == null)
		return true;
	else
	{
		for (var i=0; i < str.length; i++)
		{
			if((str.charAt(i) < "0" || str.charAt(i) > "9") && (str.charAt(i) != "-" && str.charAt(i) != "/"))
			{
				return false;
			}
			else if(str.charAt(i) == "-" || str.charAt(i) == "/")
			{
				seperators[count] = i;
				count=count+1;
				if(count == 3 || i == 0)
				{
					return false;
				}
			}
		}
		if (count != 2)
		{
			return false;
		}
		for (i=0; i < seperators[0]; i++)
			month = month + str.charAt(i)
		if (month == "08") // fix a strange javascript bug
			month="8";
		else if (month == "09")
			month="9";
		if (parseInt(month) < 1 || parseInt(month) > 12)
			return false;
		
		for (i=seperators[0]+1; i < seperators[1]; i++)
			day = day + str.charAt(i)
		if (day == "08") // fix a strange javascript bug
			day="8";
		else if (day == "09")
			day="9";
		
		for (i=seperators[1]+1; i < str.length; i++)
			year = year + str.charAt(i)
		if (year.length != 4)
			return false;
		if (theYear > 2075 || theYear < 1900) // LMB Changed to 2075 (from 2050) May 22
			return false;
		
		var theMonth = parseInt(month) - 1;
		var theDay = parseInt(day);
		var theYear = parseInt(year);
		
		var myDate = new Date(theYear, theMonth, theDay);
				
		if( (myDate.getFullYear()%4) > 0 )
			days = new initArray(0, 3, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0); //subtract days from 31 for max day of month
		else
			days = new initArray(0, 2, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0); //subtract days from 31 for max day of month

		if (theDay < 1 || theDay > (31 - days[theMonth]))
			return false;
		
		return myDate;
	}
}

function ValidateTime(myElement)
{
	var TimeValue = cleantime(myElement.value);
	myElement.value = TimeValue;
	if(!validTime(TimeValue))
	{
		myElement.value = '';
		myElement.focus();
	}
	return;
}

function validTime(TimeValue)
{
	if(TimeValue != '')
	{
		var dtTime = String(TimeValue);
		if(dtTime.indexOf(':') >= 0)
		{
			if(dtTime.indexOf(':') > 3 || (dtTime.length > 11 || dtTime.length < 8) || dtTime.indexOf('M') < dtTime.length-1)
			{
				alert('Please use correct time format (hh:mm PM).');
				return false;
			}
			else
			{
				var TimePart1 = dtTime.substring(0, dtTime.indexOf(':'));
				var TimePart2 = dtTime.substring(dtTime.indexOf(':')+1, dtTime.length);
				//alert('TimePart1:' + parseInt(TimePart1) + '\n' + 'TimePart2:' + parseInt(TimePart2));
				if(parseInt(TimePart1) < 1 || parseInt(TimePart1) > 12 || isNaN(parseInt(TimePart1)))
				{
					alert('Hour values must be numeric and between 1 and 12.');
					return false;
				}
				if(parseInt(TimePart2) < 0 || parseInt(TimePart2) > 59 || isNaN(parseInt(TimePart2)))
				{
					alert('Minute values must be numeric and between 1 and 59.');
					return false;
				}
			}
		}
		else
		{
			alert('Please use correct time format (hh:mm PM).');
			return false;
		}
	}
	return true;
}

function cleantime(TimeValue)
{
	if(TimeValue!='')
	{
		if(TimeValue > 0 && TimeValue < 13 && !isNaN(TimeValue))
			TimeValue = TimeValue + ':00';
		var dtTime = String(TimeValue);
		if(dtTime.indexOf(':') >= 0)
		{
			if(dtTime.indexOf(':') > 3 || dtTime.length > 5)
			{
				alert('Please use correct time format.');
			}
			else
			{
				var TimePart1 = dtTime.substring(0, dtTime.indexOf(':'));
				var TimePart2 = dtTime.substring(dtTime.indexOf(':')+1, dtTime.length);
				//alert('TimePart1:' + parseInt(TimePart1) + '\n' + 'TimePart2:' + parseInt(TimePart2));
				if(parseInt(TimePart1) < 1 || parseInt(TimePart1) > 12 || isNaN(parseInt(TimePart1)))
				{
					alert('Hour values must be numeric.');
					return TimeValue;
				}
				if(parseInt(TimePart2) < 0 || parseInt(TimePart2) > 59 || isNaN(parseInt(TimePart2)))
				{
					alert('Minute values must be numeric.');
					return TimeValue;
				}
				if(parseInt(TimePart2) == 0)
				{
					TimeValue = TimePart1 + ':00';
				}
			}
		}
		else
			if(TimeValue >= 100 && TimeValue <= 1259)
			{
				TimeValue = dtTime.substring(0,dtTime.length-2) + ':' + dtTime.substring(dtTime.length-2,dtTime.length);
			}
	}
	return TimeValue;
}

function rangeChk(val1, val2)
{
	var Value1 = new Number(val1);
	var Value2 = new Number(val2);
	if(Value1 > Value2 && val2 != '')
	{
		return false;
	}
	return true;
}

function DateRangeChk(DateObj1, DateObj2)
{
	var returnVal = false;
	var date1 = DateObj1.value;
	var date2 = DateObj2.value;
	var myDate1 = validDate(date1);
	var myDate2 = validDate(date2);
	
	//alert('date1=' + date1 + '  date2=' + date2);
	if(date1 == '' || date2 == '')
		return true;

	if(myDate1 <= myDate2)
		returnVal = true;
	if(myDate1 > myDate2)
		returnVal = false;

	//if(!returnVal)
	//{
		//alert('The first date must be earlier than the second date.');
		//DateObj2.value = '';
	//}
	return returnVal;
}

function Required_Fields(name,type,max,alternate)
{
	this.name = name;
	this.type = type;
	this.max = max;
	this.alternate = alternate;
} // end function

function Required_Load_Fields(name,elemRef,type,max,alternate)
{
	this.name = name;
	this.elemRef = elemRef;
	this.type = type;
	this.max = max;
	this.alternate = alternate;
} // end function

function Feature_Load_Fields(name,elemRef,type,max,max_checked,alternate)
{
	this.name = name;
	this.elemRef = elemRef;
	this.type = type;
	this.max = max;
	this.max_checked = max_checked;
	this.alternate = alternate;
} // end function

function lupdate(myform, item,max,fieldname) {
   myform.Listorupdate.value=1;
   var returnVal1 = len_check(item,max,fieldname);
}

function lupdate2(myform, item,max,fieldname) {
   myform.Listorupdate.value=1;
   var returnVal1 = len_check2(item,max,fieldname);
}

function isaPosInt(str) 
{
   if (str == "" || str == null)
	return false;
   else
	{
	for (var i=0; i < str.length; i++)
		{
		if (str.charAt(i) < "0" || str.charAt(i) > "9")
			return false;
		}	
	return (parseInt(str) >= 0)
	}
   return true;
}

function isaPosFloat(str) 
{
   var onepoint = false;	
   if (str == "" || str == null)
	return false;
   else
	{
	for (var i=0; i < str.length; i++)
		{
		if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != ".")
			return false;
		else if(str.charAt(i) == ".")
			{
			if (!onepoint) // check to see if we already detected a decimal point
			{				
				onepoint=true;
				var pointRef = i;
			}
			else
				return false;
			}
		}	
	if (onepoint) // check to see if we already detected a decimal point
	{
		if (str.substring(pointRef,str.length).length > 3) 
			str = str.substring(0,pointRef + 3) //make sure we only have 2 digits to the right of the decimal
	}
	return (parseFloat(str) >= 0)
	}
}

function int_val_check(item,max,fieldname) {
   var returnVal = false;
   if (!isaPosInt(item.value))
	{
	if (item.value.length < 1 )
		if(!item.disabled && item.type != 'hidden')
			try
				{ item.focus(); }
			catch(e)
				{ }
	}
   else if (parseInt(item.value) > max) 
	{
	item.value="";
	if(!item.disabled && item.type != 'hidden')
		try
			{ item.focus(); }
		catch(e)
			{ }
	}
   else
	returnVal = true;
   return returnVal;
}

function float_val_check(item,max,fieldname) {
   var returnVal = false;
   if (!isaPosFloat(item.value))
	{
		try
			{ item.focus(); }
		catch(e)
			{ }
	}
   else if (parseFloat(item.value) > max) 
	{
	item.value="";
	if(!item.disabled && item.type != 'hidden')
		try
			{ item.focus(); }
		catch(e)
			{ }
	}
   else
	returnVal = true;
   return returnVal;
}

function int_val_check2(item,max,fieldname) {
   var returnVal = false;
   if (!isaPosInt(item.value))
	{
	alert(fieldname + " is NOT a Valid Number");
	if(!item.disabled && item.type != 'hidden')
		try
			{ item.focus(); }
		catch(e)
			{ }
	}
   else if (parseInt(item.value) > max) 
	{
	alert(fieldname + " is TOO large! It Cannot exceed " + max + ".");
	//item.value="";
	if(!item.disabled && item.type != 'hidden')
		try
			{ item.focus(); }
		catch(e)
			{ }
	}
   else
	returnVal = true;
   return returnVal;
}


function float_val_check2(item,max,fieldname) {
   var returnVal = false;
   if (!isaPosFloat(item.value))
	{
	alert(fieldname + " is NOT a Valid Floating Point Number");
	if(!item.disabled && item.type != 'hidden')
		try
			{ item.focus(); }
		catch(e)
			{ }
	}
   else if (parseFloat(item.value) > max) 
	{
	alert(fieldname + " is TOO large! It Cannot exceed " + max + ".");
	item.value="";
	if(!item.disabled && item.type != 'hidden')
		try
			{ item.focus(); }
		catch(e)
			{ }
	}
   else
	returnVal = true;
   return returnVal;
}

function len_check(item,max,fieldname) {
   var returnVal = false;
   if (item.value.length < 1 )
	{
	if(!item.disabled && item.type != 'hidden')
		try
			{ item.focus(); }
		catch(e)
			{ }
	}
   else if (item.value.length > max )
	{
	//item.value="";
	if(!item.disabled && item.type != 'hidden')
		try
			{ item.focus(); }
		catch(e)
			{ }
	}
   else
	returnVal = true;
   return returnVal;
}

function len_check2(item,max,fieldname) {
   var returnVal = false;
   if (item.value.length > max )
	{
	alert(fieldname + " is TOO LONG! Cannot exceed " + max + " characters.");
	//item.value="";
	if(!item.disabled && item.type != 'hidden')
		try
			{ item.focus(); }
		catch(e)
			{ }
	}
   else
	returnVal = true;
   return returnVal;
}

function rad_check(item,max,fieldname) {
   var returnVal = false;
   return returnVal;
}

function check_box(myform, start, max) {
	var returnVal = false;
	for (var x=start;x<(start+max);x++)
	{
		if((myform.elements[x].type == 'checkbox' || myform.elements[x].type == 'radio') && myform.elements[x].checked)
			returnVal = true;
	}
   return returnVal;
}

function list_box(myform, ref) {
	var returnVal = false;
	try
	{
		var index = myform.elements[ref].selectedIndex;
		if (index < 0)
			index = 0;
		if(myform.elements[ref].options[index].value != "")
			return true;
	}
	catch(e)
	{
	}
	return returnVal;
}

function getCheckboxVal(myform, field)
{
	var FieldLocation = Get_Fieldname(myform, field);
	if(FieldLocation < myform.elements.length)
	{
		for(var i=0;i<myform.all[field].length;i++)
		{
			if(myform.elements[FieldLocation+i].checked)
				return myform.elements[FieldLocation+i].value;
		}
	}
	return '';
}

function setCheckboxVal(myform, field, value)
{
	var FieldLocation = Get_Fieldname(myform, field);
	if(FieldLocation < myform.elements.length)
	{
		for(var i=0;i<myform.all[field].length;i++)
		{
			if(myform.elements[FieldLocation+i].value == value)
				myform.elements[FieldLocation+i].checked = true;
			else
				myform.elements[FieldLocation+i].checked = false;
		}
	}
}

function CompareRange(crtl1, crtl2)
{
	if(Trim(crtl1.value) != '' && Trim(crtl2.value) != '')
		if(!rangeChk(crtl1.value, crtl2.value))
		{
			alert('Maximum Value needs to be greater than Minimum Value.');
			crtl2.value = '';
			event.bubblecancel = true;
			crtl2.focus();
		}
}

// For use by the Grid Search on XMLQuickSearch.asp
// The Grid Search has a first value that is greater than the second value
function CompareStreetRange(crtl1, crtl2)
{
	if(Trim(crtl1.value) != '' && Trim(crtl2.value) != '')
		if(!rangeChk(crtl1.value, crtl2.value))
		{
			if(crtl1.name == 'COORDINATE_X')
				alert('West Street needs to be West of East Street.');
			else
				alert('South Street needs to be lower than North Street.');
			crtl1.value = '';
			event.bubblecancel = true;
			crtl1.focus();
		}
}

function compareDates(date1, date2, fieldname)
{
	var returnVal = "valid";
	var myDate1 = validDate(date1);
	var myDate2 = validDate(date2);

	if ((myDate1 && myDate2) && (myDate1 > myDate2))
		returnVal = fieldname;
	else if ((!myDate1 && myDate2) || ((myDate1 && !myDate2) && date2 != ""))
		returnVal = fieldname;
	return returnVal;
}

function specdatecheck(item, todaysDate, months)
{
	var theMonthsDiff = 0;
	if(validDate(item.value))
	{


		theMonthsDiff = (parseInt(Date.parse(item.value)) - parseInt(Date.parse(todaysDate))) / (1000 * 60 * 60 * 24 * (366 / 12))
		if (months < 0)
		{
			if(theMonthsDiff > months && theMonthsDiff <= 0.02)
				return true;
			else
			{
				alert("This " + item.name + " cannot be greater than " + (parseInt(todaysDate.getMonth()) + 1) + "/" + todaysDate.getDate() + "/" + todaysDate.getYear() + " or less than " + months + " months in the past. Please correct.")
				return false;
			}
		}
		else if (months == 0)
		{
			if(theMonthsDiff >= -0.02 && Date.parse(item.value) <= new Date())
				return true;
			else
			{
				alert("This " + item.name + " cannot be less than " + (parseInt(todaysDate.getMonth()) + 1) + "/" + todaysDate.getDate() + "/" + todaysDate.getYear() + " or greater than " + months + " months in the future. Please correct.")
				return false;
			}
		}
		else
		{
			if(theMonthsDiff >= -0.02 && theMonthsDiff <= months)
				return true;
			else
			{
				alert("This " + item.name + " cannot be less than " + (parseInt(todaysDate.getMonth()) + 1) + "/" + todaysDate.getDate() + "/" + todaysDate.getYear() + " or greater than " + months + " months in the future. Please correct.")
				return false;
			}
		}
	}
	else
		alert("Invalid Date=" + item.value + "\nPlease enter using this format: mm/dd/yyyy");
		item.value = "";
		item.focus();
		item.select();
	return false;
}

function specdatecheckdays(item, todaysDate, days)
{
	var theDaysDiff = 0;
	if(validDate(item.value))
	{


		//alert(item + ':' + parseInt(Date.parse(item.value)));
		//alert(todaysDate + ':' + parseInt(Date.parse(todaysDate)));
		//alert((parseInt(Date.parse(item.value)) - parseInt(Date.parse(todaysDate))));
		theDaysDiff = (parseInt(Date.parse(item.value)) - parseInt(Date.parse(todaysDate))) / 100000
		theDaysDiff = theDaysDiff/864;
		//alert('theDaysDiff=' + theDaysDiff);
		if (days < 0)
		{
			if(theDaysDiff >= days && theDaysDiff <= 0.02)
				return true;
			else
			{
				alert("This " + item.name + " cannot be greater than today's date or less than " + days + " days in the past. Please correct.")
				return false;
			}
		}
		else if (days == 0)
		{
			if(theDaysDiff >= -0.02 && Date.parse(item.value) <= new Date())
				return true;
			else
			{
				alert("This " + item.name + " cannot be less than today's date or greater than " + days + " days in the future. Please correct.")
				return false;
			}
		}
		else
		{
			if(theDaysDiff >= -0.02 && theDaysDiff <= days)
				return true;
			else
			{
				alert("This " + item.name + " cannot be less than today's date or greater than " + days + " days in the future. Please correct.")
				return false;
			}
		}
	}
	else
		alert("Invalid Date=" + item.value + "\nPlease enter using this format: mm/dd/yyyy");
		item.value = "";
		item.focus();
		item.select();
	return false;
}

function ClearForm(myform)
{
	for(i=0;i<myform.elements.length;i++)
	{
		if(myform.elements[i].type == "text" || (myform.elements[i].type == "hidden" && (myform.elements[i].name.indexOf('DATE') > -1 || myform.elements[i].name == 'CONTAINS')))
			myform.elements[i].value = "";
		// following were added by Rob Overman on 6.20.2000
		// these allow the clearing of more than just text inputs
		if(myform.elements[i].type == "checkbox")
			if(myform.elements[i].name != 'LISTING_TYPE' && myform.elements[i].name != 'STATUS')
				myform.elements[i].checked = false;
			else
			{
				if(myform.elements[i].name == 'LISTING_TYPE')
				{
					if(DEFAULT_LISTING_TYPES.indexOf(myform.elements[i].value) > -1 || DEFAULT_LISTING_TYPES == 'ALL')
						myform.elements[i].checked = true;
					else
						myform.elements[i].checked = false;
				}
				if(myform.elements[i].name == 'STATUS')
				{
					//Leave all statuses blank for all but Advanced Search
					if(false && (DEFAULT_SEARCH_STATUSES.indexOf(myform.elements[i].value) > -1 || DEFAULT_SEARCH_STATUSES == 'ALL'))
						myform.elements[i].checked = true;
					else
						myform.elements[i].checked = false;
				}
			}
		if(myform.elements[i].type == "checkbox" && myform.elements[i].value == 'All' && myform.elements[i].name == 'STATUS')
			myform.elements[i].checked = true;
		if(myform.elements[i].type == "select-one" && myform.elements[i].name != 'PROP_TYPE' && myform.elements[i].name != 'BOROUGH_ID' && myform.elements[i].name != 'PROP_CAT')
			myform.elements[i].selectedIndex = 0;
		if(myform.elements[i].type == "select-multiple" && myform.elements[i].name != 'PROP_TYPE' && myform.elements[i].name != 'BOROUGH_ID' && myform.elements[i].name != 'PROP_CAT')
			myform.elements[i].selectedIndex = 0;
		// Clear Neighborhoods from listbox
		if(myform.elements[i].type == "select-multiple" && myform.elements[i].name == 'NEIGHBORHOOD')
		{
			var iListCount = myform.elements[i].options.length;
			for(var x=0;x<iListCount;x++)
				LB_removeItem(myform.elements[i], 0);
			LB_addItem(myform.elements[i], '', '', 0);
			myform.elements[i].selectedIndex = 0;
		}
	}
}

function CheckLength(myform, item, maxLength, msg)
{
	if(item.value.length > maxLength)
	{
		alert("Cannot exceed " + maxLength + " characters for " + msg + ".\nYou have entered " + item.value.length + " characters. Please adjust your text.");
		item.focus();
		return false
	}
return true
}

function CheckEmail(item)
{
	if (item.length > 0)
	{
	i=item.indexOf("@");
	j=item.indexOf(".",i);
	k=item.indexOf(",");
	kk=item.indexOf(" ");
	jj=item.lastIndexOf(".") + 1;
	len=item.length;

		if ((i > 0) && (j > (i + 1)) && (k == -1) && (kk == -1) && ((len - jj) >= 2) && ((len - jj) <= 3)) 
			return true;
		else
			return false;
	}
	else
		return false;
}

function CheckState(crtl)
{
	if(crtl.value == '')
		return;
	var arrStates = Array('AL','AK','AR','AZ','CA','CO','CT','DE','FL','GA','HI','ID','IL','IN','IO','KS','KY','LA','MA','MD','ME','MI','MN','MO','MS','MT','NC','ND','NK','NH','NJ','NM','NV','NY','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VA','VT','WA','WI','WV');
	if(!inArray(arrStates,crtl.value.toUpperCase()))
	{
		crtl.value = '';
		alert('Please neter a valid two character state code.');
		crtl.focus();
	}
}

function inArray(theArray, theString)
{
	if(theArray == null)
		return false;
	for(var i=0;i<theArray.length;i++)
	{
		if(Trim(theArray[i]) == Trim(theString))
			return true;
	}
	return false;
}

function WhereInArray(theArray, theString)
{
	if(theArray == null)
		return -1;
	for(var i=0;i<theArray.length;i++)
	{
		//alert(Trim(theArray[i]) + ' : ' + Trim(theString));
		if(Trim(theArray[i]) == Trim(theString))
			return i;
	}
	return -1;
}

function RTrim(strToTrim)
{
	var intRef = 0;
	for(var i=strToTrim.length - 1;i>0;i--)
	{
		if(strToTrim.charAt(i) == " ")
			intRef = i;
		else
			break;
	}
	if(intRef > 0)
		return strToTrim.substring(0, intRef)
	else
		return strToTrim;
}

function LTrim(strToTrim)
{
	var intRef = 10000;
	for(var i=0;i<strToTrim.length;i++)
	{
		if(strToTrim.charAt(i) == " ")
			intRef = i + 1;
		else
			break;
	}
	if(intRef < 10000)
		return strToTrim.substring(intRef, strToTrim.length)
	else
		return strToTrim;
}

function Trim(strToTrim)
{
	return RTrim(LTrim(strToTrim));
}


//-->
