var cposX = 0;
var cposY = 0;
var coffsetX = 0;
var coffsetY = 25;
var sParentObj = '';
var sParentObjOld = '';

function clear_all_data()
{
	document.getElementById('Preview_Div').innerHTML = ''; 
	document.getElementById('cities').value = ''; 
	document.getElementById('ajax_preloader').style.display = 'none'; 
	document.getElementById('ajax_content').style.display = 'none'; 
	document.getElementById('city_helper').style.display = 'block';	
	for (i = 0; i < document.search_form.length; i++)
	{
		if (document.search_form.elements[i].value != 'Preview Count'
			&& document.search_form.elements[i].type != 'reset'
			&& document.search_form.elements[i].type != 'submit'
			&& document.search_form.elements[i].type != 'hidden'
			&& document.search_form.elements[i].type != 'button'
			&& document.search_form.elements[i].name != 'imagesOnly'
			)
		{
			if (document.search_form.elements[i].type == 'checkbox')
			{
				document.search_form.elements[i].checked = false;
			}
			document.search_form.elements[i].value = '';
		}
	}
	document.getElementById('listingstatus_1').value = 1; 
	resetBackEnd();
}

function show_info(div_id, field_id)
{
	sParentObjOld = sParentObj;
	sParentObj = field_id;

	info_box_content = document.getElementById('info_content');
	
	if (field_id == 'info_structuresize')
	{
		info_box_content.innerHTML = "Enter a lot size in either square feet and select the corresponding unit option.<br />For Range, enter 2 numeric values separated by a hyphen";
	}
	else if (field_id == 'info_lotsizearea')
	{
		info_box_content.innerHTML = "Enter a lot size in either square feet and select the corresponding unit option.<br />For Range, enter 2 numeric values separated by a hyphen";
	}
	else
	{
		info_box_content.innerHTML = '';
	}
	
	div = document.getElementById(div_id);
	field = document.getElementById(field_id);
	div.style.left=findPosX(field) - div.clientWidth + "px";
	div.style.top=findPosY(field) - div.clientHeight + "px";

	
	
	if (div.style.visibility=='visible')
	{
		div.style.visibility='hidden';
	}
	else
	{
		div.style.visibility='visible';
	}
}

function validate_range(obj, param, info_div)
{
	old_obj = obj;
	obj = document.getElementById(obj);
	div = document.getElementById(info_div);
	count = 0;
	errors_count = 0;
	newValue = '';


	for (i = 0; i < obj.value.length + 1; i++)
	{
		if (obj.value.substr(i, 1) == 0 
			|| obj.value.substr(i, 1) == 1
			|| obj.value.substr(i, 1) == 2
			|| obj.value.substr(i, 1) == 3
			|| obj.value.substr(i, 1) == 4
			|| obj.value.substr(i, 1) == 5
			|| obj.value.substr(i, 1) == 6
			|| obj.value.substr(i, 1) == 7
			|| obj.value.substr(i, 1) == 8
			|| obj.value.substr(i, 1) == 9
			|| obj.value.substr(i, 1) == '-'
			|| obj.value.substr(i, 1) == '+'
			|| obj.value.substr(i, 1) == ' '
			)
		{
			if (obj.value.substr(i, 1) == '-'
				|| obj.value.substr(i, 1) == '+'
				|| obj.value.substr(i, 1) == ' ')
			{
				count++;
				if (count <= 1)
				{
					newValue = newValue + obj.value.substr(i, 1);
				}
			}
			else
			{
				newValue = newValue + obj.value.substr(i, 1);
			}
		}
		else
		{
			errors_count++;
		}
	}

	if (errors_count > 0)
	{
		div.style.visibility = 'visible';
	}
	else
	{
		div.style.visibility = 'hidden';
	}

	obj.value = newValue;
	SetMinMax(old_obj, param);
}

function SetMinMax(obj, param) 
{
	var element = document.getElementById(obj);
	var dropdown = document.getElementById(param);
	if (dropdown != null)
	{
		if (element.value.indexOf('-') > 0) 
		{
			if (element.value.indexOf('-') == (element.value.length - 1)) 
			{
				dropdown.value = 'Max';
			}
			else if (element.value.indexOf('-') < (element.value.length - 1)) 
			{
				dropdown.value = 'Range';
			}
		}
		if (element.value.indexOf('+') > 0 && element.value.indexOf('+') == (element.value.length - 1))
		{
			dropdown.value = 'Min';
		}
		if ((dropdown.value == 'Min' && element.value.indexOf('-') == -1 && element.value.indexOf('+') == -1) 
			|| (dropdown.value == 'Max' && element.value.indexOf('-') == -1 && element.value.indexOf('+') == -1)
			|| (dropdown.value == 'Range' && element.value.indexOf('-') == -1 && element.value.indexOf('+') == -1)
			)
		{
			dropdown.value = 'Min';
		}
	}
}


function selector(div_id, field_id, eventObj)
{
	sParentObjOld = sParentObj;
	sParentObj = field_id;
	
	div = document.getElementById(div_id);
	field = document.getElementById(field_id);

	if (div_id == 'cities_list')
	{
		div.style.width = '60%';
	}
	
//	var sVisibility = div.style.visibility;
	var sVisibility = div.style.visibility;
	
    if(eventObj) 
	{
		// hide any currently-visible popups
		hideCurrentPopup();
		
		// stop event from bubbling up any farther
		eventObj.cancelBubble = true;
		// move popup div to current cursor position 
		// (add scrollTop to account for scrolling for IE)
		var newXCoordinate = findPosX(field) + coffsetX + "px";
//        var newYCoordinate = findPosY(field) + (field.clientHeight) + "px";
		var newYCoordinate = findPosY(field) + coffsetY + "px";
		moveObject(div_id, newXCoordinate, newYCoordinate);
		// and make it visible

		if( changeObjectVisibility(div_id, 'visible') ) 
		{
			// if we successfully showed the popup
			// store its Id on a globally-accessible object
			window.currentlyVisiblePopup = div_id;
			if (sVisibility == 'hidden')
			{
				div.style.visibility = 'visible';
				div.style.display = '';
			}
			else
			{
				div.style.visibility = 'hidden';
				div.style.display = 'none';
			}
			return true;
		}
		else 
		{
			// we couldn't show the popup, boo hoo!
			return false;
		}
	}
	else 
	{
		// there was no event object, so we won't be able to position anything, so give up
		return false;
	}
}

function hidepopup(popupID)
{
	popup_div = document.getElementById(popupID); 
	popup_div.style.visibility='hidden';
	popup_div.style.display='none';
}


function findPosY(obj) 
{
	var posTop = 0;
	while (obj.offsetParent) 
	{
		posTop += obj.offsetTop; 
		obj = obj.offsetParent;
	}
	return posTop;
}

function findPosX(obj) 
{
	var posLeft = 0;
	while (obj.offsetParent) 
	{
		posLeft += obj.offsetLeft; 
		obj = obj.offsetParent;
	}
	return posLeft;
}


function check_box(obj, id)
{
	if(obj.value=='') 
	{ 
		obj.value=id; 
	}
	else 
	{
		obj.value='';
	}
}

function fill_data(obj, data)
{
	if (obj && data)
	{
		filled_data = document.getElementById(obj);
		if (filled_data.value == '' || filled_data.value == 'Any')
		{
			filled_data.value = data;
		}
		else
		{
			if (filled_data.value.search(data) != -1)
			{
				filled_data.value = filled_data.value.replace(data, '');
			}
			else
			{
				filled_data.value = filled_data.value + ', ' + data;
			}

			if (filled_data.value.search(', ,') != -1)
			{
				filled_data.value = filled_data.value.replace(', ,', ',');
			}

			if (filled_data.value.substr(0, 1) == ',')
			{
				filled_data.value = filled_data.value.substr(2);
			}
			
			if (filled_data.value.substr(-2, 2) == ', ')
			{
				filled_data.value = filled_data.value.substr(0, filled_data.value.length - 2);
			}
		}
	}
}


function fill_data_radio(obj, data)
{
	if (obj && data)
	{
		filled_data = document.getElementById(obj);
		filled_data.value = data;
	}
}




function fill_data_select(obj, data)
{
	if (obj && data)
	{
		filled_data = document.getElementById(obj);
		filled_data.value = data;
	}
}


function mousePageXY(e)
{
	var x = 0, y = 0;
	if (!e) e = window.event;
	if (e.pageX || e.pageY)
	{
		x = e.pageX;
		y = e.pageY;
	}
	else if (e.clientX || e.clientY)
	{
		x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
		y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
	}
	
	cposX = x;
	cposY = y;
}


function select_city(obj)
{
	if (obj.checked)
	{
		if (obj.value != document.getElementById('county').value)
		{
			document.getElementById('cities').value = '';
			document.getElementById('ajax_preloader').style.display = 'none'; 
			document.getElementById('ajax_content').style.display = 'none'; 
			xajax_cities('cities_div', obj.value);
			county_obj = document.getElementById('county');
			for (i = 0; i < county_obj.length; i++)
			{
				if (county_obj.options[i].value == obj.value)
				{
	//				document.getElementById('city_helper').style.display = 'none'; 
	//				document.getElementById('cities_list').style.width = '600px'; 
					county_obj.options[i].selected = true;
					break;
				}
			}
		}
	}
	else
	{
		document.getElementById('cities').value = '';
		UnSelectAll_Cities();
	}
}


function restore_cities()
{
	xForm = document.search_form;
	county_count = 0;
	
	for (i = 0; i < xForm.length; i++)
	{
		if (xForm.elements[i].name == 'County[]' && xForm.elements[i].checked == true)
		{
			county_count++;
		}
	}
	if (county_count > 0)
	{
//		document.getElementById('city_helper').style.display = 'none'; 
	}
	else
	{
		county_obj = document.getElementById('county');		
		county_obj.options[0].selected = true;
		document.getElementById('city_helper').style.display = 'block'; 
		document.getElementById('ajax_content').innerHTML = '';
	}
}


function cities_checkbox(County, sCityID)
{
	aCityID = sCityID.split('|');
//	document.getElementById('city_helper').style.display = 'none'; 
	xajax_cities('cities_div', County, sCityID);
}

function UnSelectAll_Counties()
{
	xForm = document.search_form;
	for (i = 0; i < xForm.length; i++)
	{
		if (xForm.elements[i].name == 'County[]' && xForm.elements[i].checked == true)
		{
			xForm.elements[i].checked = false;
			xForm.elements[i].selected = false;
			xForm.elements[i].value = '';
		}
	}
}

function recheck_autocomplete_county(CountyID)
{
	UnSelectAll_Counties();
//	CountyIDObj = document.getElementById('county_' + CountyID);
//	alert(CountyIDObj);
//	check_box(CountyIDObj, CountyID);
	document.getElementById('county_' + CountyID).checked=true;
	document.getElementById('county_' + CountyID).value=CountyID;
	select_city(document.getElementById('county_' + CountyID));
	setBackEnd();
}

function resetBackEnd()
{
	if ('city_xml' in this)
	{
		script = "/addons/searchpage/auto_suggest_data.inc.php?";
		var city_xml = {
			timeout: 10000,
			script: script,
			varname:"city",
			br: false,
			callback: function (obj) 
			{ 
				recheck_autocomplete_city(obj.id); 
			}
		};
		var city_xml = new AutoSuggest('cities', city_xml);
	}
}

function setBackEnd()
{
	sBackEndContinue = "";
	iCountiesCount = 0;
	xForm = document.search_form;
	for (i = 0; i < xForm.length; i++)
	{
		if (xForm.elements[i].name == 'County[]' && xForm.elements[i].checked == true && xForm.elements[i].value > 0)
		{
			iCountiesCount++;
			sBackEndContinue = sBackEndContinue + "county_id[]=" + xForm.elements[i].value + "&";
		}
	}

	if (iCountiesCount > 0)
	{
		if ('city_xml' in this)
		{
			script = "/addons/searchpage/auto_suggest_data.inc.php?" + sBackEndContinue;
			var city_xml = {
				timeout: 10000,
				script: script,
				varname:"city",
				br: false,
				callback: function (obj) 
				{ 
					recheck_autocomplete_city(obj.id); 
				}
			};
			var city_xml = new AutoSuggest('cities', city_xml);
		}
	}
}

function UnSelectAll_Cities()
{
	xForm = document.search_form;
	for (i = 0; i < xForm.length; i++)
	{
		if (xForm.elements[i].name == 'CityID[]' && xForm.elements[i].checked == true)
		{
			xForm.elements[i].checked = false;
			xForm.elements[i].selected = false;
			xForm.elements[i].value = '';
		}
	}
}

function recheck_autocomplete_city(CityID)
{
	document.getElementById('counties').value = '';
	UnSelectAll_Counties();
	UnSelectAll_Cities();
	xajax_set_county_by_city(CityID);
}


function clear_fields(field)
{
	if (trim(field.value) == "")
	{
		if (field.id == "counties")
		{
			document.getElementById('counties').value = '';
			document.getElementById('county').value = '';
			document.getElementById('cities').value = '';
			document.getElementById('ajax_preloader').style.display = 'none'; 
			document.getElementById('ajax_content').style.display = 'none'; 
			UnSelectAll_Counties();
			UnSelectAll_Cities();
		}
		else if (field.id == "cities")
		{
			UnSelectAll_Cities();
		}
	}
}


function searchbox_preview_count()
{
	document.getElementById('Preview_Div').innerHTML = '<img src=/images/loading.gif />';
	aClasses = new Array();
	aCounties = new Array();
	aCities = new Array();
	aListingID = new Array();
	aFilteredAddress = new Array();
	aPostalCode = new Array();
	aListingStatus = new Array();
	aStatusChangeDate = new Array();
	aStructureSize = new Array();
	aLotSizeArea = new Array();
	aBeds = new Array();
//	aBaths = new Array();
	aBathsReal = new Array();
	aPriceMin = new Array();
	aPriceMax = new Array();
	aImagesOnly = new Array();
//	aVToursOnly = new Array();
	
	xForm = document.search_form;
	
	iClass = 0;
	iCounty = 0;
	iCity = 0;
	iListingID = 0;
	iFilteredAddress = 0;
	iPostalCode = 0;
	iListingStatus = 0;
	iStructureSize = 0;
	iLotSizeArea = 0;
	
	for (i = 0; i < document.search_form.length; i++)
	{
		if (xForm.elements[i].name == 'Class[]' && xForm.elements[i].value > 0)
		{
			aClasses['class_' + iClass] = xForm.elements[i].value;
			iClass++;
		}
	
		if (xForm.elements[i].name == 'County[]' && xForm.elements[i].value > 0)
		{
			aCounties['county_' + iCounty] = xForm.elements[i].value;
			iCounty++;
		}
	
		if (xForm.elements[i].name == 'CityID[]' && xForm.elements[i].value > 0)
		{
			aCities['cityid_' + iCity] = xForm.elements[i].value;
			iCity++;
		}
	
		if (xForm.elements[i].name == 'ListingID[]' && xForm.elements[i].value > 0)
		{
			aListingID['listingid_' + iListingID] = xForm.elements[i].value;
			iListingID++;
		}

		if (xForm.elements[i].name == 'FilteredAddress[]' && xForm.elements[i].value)
		{
			aFilteredAddress['filteredaddress_' + iFilteredAddress] = xForm.elements[i].value;
			iFilteredAddress++;
		}

		if (xForm.elements[i].name == 'PostalCode[]' && xForm.elements[i].value > 0)
		{
			aPostalCode['postalcode_' + iPostalCode] = xForm.elements[i].value;
			iPostalCode++;
		}
	
		if (xForm.elements[i].name == 'ListingStatus[]' && xForm.elements[i].value > 0)
		{
			aListingStatus['listingstatus_' + iListingStatus] = xForm.elements[i].value;
			iListingStatus++;
		}
	
		if (xForm.elements[i].name == 'StructureSize[]' && xForm.elements[i].value.length > 0)
		{
			aStructureSize['structuresize_' + iStructureSize] = xForm.elements[i].value;
			iStructureSize++;
		}
	
		if (xForm.elements[i].name == 'LotSizeArea[]' && xForm.elements[i].value.length > 0)
		{
			aLotSizeArea['lotsizearea_' + iLotSizeArea] = xForm.elements[i].value;
			iLotSizeArea++;
		}
		
		if (xForm.elements[i].name == 'BathsReal-min' && xForm.elements[i].value.length > 0)
		{
			aBathsReal['bathsreal_0'] = xForm.elements[i].value;
		}
	}
	
	aStatusChangeDate['statuschangedate_0'] = document.getElementById('statuschangedate').value;
	aBeds['beds_0'] = document.getElementById('beds').value;
//	aBaths['baths_0'] = document.getElementById('baths').value;
	aPriceMin['pricemin_0'] = document.getElementById('pricemin').value;
	aPriceMax['pricemax_0'] = document.getElementById('pricemax').value;
	
	if (document.getElementById('imagesOnly').checked)
		aImagesOnly['imagesonly_0'] = document.getElementById('imagesOnly').value;
//	if (document.getElementById('vtoursOnly').checked)
//		aVToursOnly['vtoursonly_0'] = document.getElementById('vtoursOnly').value;
	
//	aData = new Array(aClasses, aCounties, aCities, aListingID, aPostalCode, aListingStatus, aStructureSize, aLotSizeArea, aBeds, aBaths, aPriceMin, aPriceMax, aImagesOnly, aVToursOnly);
//	aData = new Array(aClasses, aCounties, aCities, aListingID, aFilteredAddress, aPostalCode, aListingStatus, aStatusChangeDate, aStructureSize, aLotSizeArea, aBeds, aBaths, aBathsReal, aPriceMin, aPriceMax, aImagesOnly);
	aData = new Array(aClasses, aCounties, aCities, aListingID, aFilteredAddress, aPostalCode, aListingStatus, aStatusChangeDate, aStructureSize, aLotSizeArea, aBeds,  aBathsReal, aPriceMin, aPriceMax, aImagesOnly);
	
	result = xajax_searchbox_preview_count('Preview_Div', aData);
}

document.onmousemove = mousePageXY;

