var SuburbDefault = new Array();
var SubControlID;
var currIdx=0;
var rowToLoad = new Array();
var currReq = new Array();
var isRegional = false;
var cachedSuburbReq = null;
var cachedSuburbRowObj = null;

function ToggleAdvanced(show)
{ 
	ToggleElement('CriteriaRow',show);
	ToggleElement('SearchTypeTitle',true);
	ToggleElement('RegionTitle',show);
	ToggleElement('RegionRow',show);
	ToggleElement('AreaTitle',show);
	ToggleElement('AreaRow',show);
	ToggleElement('CountryTitle',false);
	ToggleElement('SuburbTitle',show);
	ToggleElement('SuburbRow',show);	
	ToggleMapSub(true);

			
	/* take care of the office & agent search */
	var offa = document.getElementById('regionSearchDiv');
	if( offa && !isRegional){
		offa.style.display = show ? 'none' : 'block';
	}
		
	/* take care of the research dropdowns */
	var recentDDL = document.getElementById('select_recent');
	if( recentDDL )
		recentDDL.style.display = show ? 'none' : '';
	var archivedDDL = document.getElementById('select_archive');
	if( archivedDDL )
		archivedDDL.style.display = show ? 'none' : '';
	

	var ps = document.getElementById('ps');
	ps.style.marginBottom=(show)?'0':'';
	
	if(!show)
	{
		/*unchecks property type */
		var obj = document.getElementById('PropertyType');
		if(obj)
			obj.selectedIndex=0;
			
		/*unchecks SearchType*/
		/*obj = document.getElementById('SearchType');
			if(obj)
				obj.selectedIndex=0;*/
					
		/*unchecks suburbs/beds/bathrooms*/
		var checks = document.getElementsByTagName("INPUT");
		var test = false;
		for(var i=0; i<checks.length; i++)
		{
			if(checks[i].type=='checkbox')
			{
				var n = checks[i].name.toLowerCase();
				if(n=='sb' || n=='bed' || n=='bath')
				{
					checks[i].checked = false;
				}			
			}
		}		
		var regionRow = document.getElementById(SubControlID + "_RegionRow");
					
		/*resets prices*/
		obj = document.getElementById('MAXPRICE');
		if(obj)
			obj.selectedIndex=obj.length-1;
		var titles = document.getElementsByTagName("TD");

		obj = document.getElementById('MINPRICE');
		if(obj)
			obj.selectedIndex=0;
		
		/*resets area*/	
		obj = document.getElementById('FREEMINLANDAREA');
		if(obj)
			obj.value = '';	
	
		obj = document.getElementById('LEASEMINLANDAREA');
		if(obj)
			obj.value='';
		
		obj = document.getElementById('TOTALAREA');
		if(obj)
			obj.selectedIndex=0;
		
						
		if(!isRegional)
		{ 
			/*resets map to national*/		
			setCurrentMap('/includes/maps/nz.htm');	
					
			/*resets region/area */
			obj = document.getElementById('Region');
			if(obj)
				obj.selectedIndex=0;
			
			obj = document.getElementById('Area');
			if(obj)
			{
				obj.selectedIndex=0;
				dd_change('Area','Default',true,false);
			}
			obj = document.getElementById('SubAreas');
			if(obj)
				obj.style.display = 'none';
				
			/*resets suburb*/				
			dd_change('Suburb','Default',true,false);
				
		}
		else
		{	
			//check whether in advanced or in simple
			var advancedCheck = document.getElementById(SubControlID + '_AdvancedTable');
			var isAdvanced = false;
			if(advancedCheck)
				isAdvanced = true;
	
			//-Reset region for regional sites			
			obj = document.getElementById(SubControlID +'_SiteDefaultRegion');
			if(obj)
			{
				SelectRegion(obj.value);
				ResetMap('Region',obj.value);//sync map to selected region value
			}
			
			//-Reset area for regional sites 
			obj = document.getElementById(SubControlID + '_SiteDefaultArea');
			if(obj)
			{
				SelectItem('Area',obj.value);
				MapTrim(obj.value);				
				ResetMap('Area',obj.value);//sync map to selected area value
				dd_change('Suburb',obj.value,true,true);

				if (isAdvanced)
				{ 
					var suburb = document.getElementById(SubControlID + '_SuburbRow');
					suburb.style.display = 'none';
				}					
			}	
		}

		var rn = document.getElementById('researchNav');
		if(rn)
		{
			if( HasBanner )
			{
				rn.style.marginTop = '155px';
				rn.style.top = '155px';
			}
		}
	}
	else
	{
		var rn = document.getElementById('researchNav');
		if(rn)
		{
			rn.style.marginTop = '0px';
			rn.style.top = '0px';
		}
	}
	var sw = document.getElementById('switch');
	if( sw )
	{
		sw.innerHTML = show ? '<a href="#" onclick="ToggleAdvanced(false);Stretch();return false;" title="Simple Search Options. ">SIMPLE</a>' : '<a href="/search/property.aspx" onclick="ToggleAdvanced(true);Stretch();return false;" title="Advanced Search Options. ">ADVANCED</a>';
		sw.className = show ? 'switchSmp' : 'switchAdv';
	}
	
	/* fix gap on simple map view */
	if(document.getElementById(SubControlID+'_MapRow').style.display=='table-row' || document.getElementById(SubControlID+'_MapRow').style.display=='block'){
		var ps = document.getElementById('ps');
		ps.style.marginBottom = 0;
	}
	UpdateForInternationalHeadings();
						
	toggleResInfo(true);
	toggleVisibility('Suburb');
	if(typeof(toggleDDLVisibility) != "undefined") {
		toggleDDLVisibility();
	}
}

function toggleResInfo(hasControls)
{
	if (document.getElementById('SearchType') != null)
	{
		var propType = 0;
		var searchType = document.getElementById('SearchType').value;
		var obj = document.getElementById('PropertyType');
		if(obj)
			propType = obj.value;

		/* either residential or country+lifestyle */
		if((searchType== 1 || (searchType==5 && propType==16) || (searchType==3 && propType !=32) || (searchType==4 && !(propType==32 || propType==25))) && hasControls)
			ToggleElement('lblResidentialInfo',true);
		else
			ToggleElement('lblResidentialInfo',false);
	}
}

function ToggleMap(show)
{
	ToggleAdvanced(true);
	ToggleElement('RegionRow',!show);
	ToggleElement('AreaRow',!show);
	ToggleElement('AreaTitle',!show);
	ToggleElement('RegionTitle',!show);
	ToggleMapSub(show);
	
}
function ToggleMapSub(show)
{
	ToggleElement('MapRow',show);
	//ToggleElement('SubAreasRow',show);
	var subAreaRow = document.getElementById(SubControlID+'_SubAreasRow');
	if(subAreaRow)
	{
		var subAreaSelect = subAreaRow.getElementsByTagName('select')[0];
		if( subAreaSelect )
		{
			if(subAreaSelect.options) 
			{
				var l = subAreaSelect.options.length;
				subAreaRow.style.display = l > 1 && !(l==1 && subAreaSelect.options[0].value=='0') && show ? (document.all ? 'block' : 'table-row') : 'none';
			}
		}
	}
	
	var sw = document.getElementById('MapSwitch');
	if( sw )
	{
		sw.innerHTML = show ? '<a class="hideMap" href="' + window.location.href + (window.location.href.indexOf('?')>-1 ? '&':'?') + 'map=0" onclick="ToggleMap(false); Stretch(); return false;" title="Hide the map of New Zealand. ">Hide map</a>' : '<a class="searchMap" href="' + window.location.href + (window.location.href.indexOf('?')>-1 ? '&':'?') + 'map=1" onclick="ToggleMap(true); Stretch(); return false;" title="Search for properties using a map of New Zealand. ">Search by map</a>';
	}
	
}

//arguments[1] - subarea id
function MapTrim(area){ 	
	var subAreaRow = document.getElementById(SubControlID+'_SubAreasRow');
	if(!subAreaRow) return;
		
	var subAreaSelect = subAreaRow.getElementsByTagName('select')[0];
	subAreaSelect.options.length = 0; //clear;
	subAreaSelect.options[0] = new Option(" - Select Sub Area - ",area);
	
	var areaRow = document.getElementById(SubControlID+'_AreaRow');
	var s = areaRow.getElementsByTagName('select')[0];
	var inArea = false;
	
	for(var i=0; i<s.length; i++){
		var title = s.options[i].innerHTML;
		var val = s.options[i].value;
		if(title.substring(0,7)=='&nbsp;-' && inArea){
			subAreaSelect.options[subAreaSelect.options.length] = new Option(title.substring(13,title.length).replace("&amp;","&"),val);
			if(s.options[i].value==arguments[1]) subAreaSelect.options[subAreaSelect.options.length-1].selected="selected";
		} else {
			if(s.options[i].value == area) {
				inArea = true;
			} else {
				inArea = false;
			}
		}
	}
	
	if(subAreaSelect.options.length>1){
		//Only ever show sub area display if the map is displayed
		if(document.getElementById(SubControlID+'_MapRow').style.display!='none')	subAreaRow.style.display='';
	}else
		subAreaRow.style.display='none';
	
}

function SelectItem(elemId,itemValue){
	var obj = document.getElementById(elemId);
	if(obj)
	{
		if( obj.tagName=='SELECT' )
		{
			for( var i=0; i<obj.options.length; i++)
			{
				if( obj.options[i].value == itemValue )
				{
					obj.selectedIndex = i;
					break;
				}
			}
		}
	}	
}

//arguments[1] - selected area of the imagemap
function SelectRegion( r )
{
	SelectItem('Region',r);
	MapTrim('');
	//update area
	geo_change('Area',r,true);
	dd_change('Suburb','Default',true,false);
	
}
function SelectArea( a )
{
	if(a!=0){ // 0 is the id for NZ
		SelectItem('Area',a);
		MapTrim(a);
		//update suburbs
		dd_change('Suburb',a,true,false);
		submitSearchForm();
	}else{
		SelectRegion(a);
	}
}

function SelectSuburb( a, s )
{
	if(a!=0){ // 0 is the id for NZ
		SelectItem('Area',a);
		MapTrim(a);
		//update suburbs
		dd_change('Suburb',a,true,false);
		// now select burb
		var inputs = document.getElementsByTagName('input');
		for(var i=0; i<inputs.length; i++){
			if(inputs[i].value == s && inputs[i].name=='sb')
			{
				inputs[i].checked = true;	
				break;
			}
		}

		submitSearchForm();
	}else{
		SelectRegion(a);
	}
}

function SelectSubArea( a )
{
	var select = document.getElementById('Area');
	for(var i=0; i<select.length; i++){
		if(select.options[i].value == a)
			select.selectedIndex = i;
	}
	dd_change('Suburb',a,true,false);
}

//arguments[1] - region ID or area ID
function ResetMap(type){
	var subAreaRow = document.getElementById(SubControlID+'_SubAreasRow');
	subAreaRow.style.display = 'none';
	
	//var mapIframe = document.getElementsByTagName('iframe')[0];
	var mapIframe = getRegionMap();
	if( !mapIframe )
		return;

	if(type == 'Region') 
	{
		MapTrim('');
		try
		{
			if(arguments[1] && RegionURLs[arguments[1]])	
				setCurrentMap('/includes/maps/'+RegionURLs[arguments[1]]);	
			else setCurrentMap('/includes/maps/nz.htm');	
		}
		catch(err)
		{
			 setCurrentMap('/includes/maps/nz.htm');
		}
	}
	if(type == 'Area')
	{
		var superArea;
		if(arguments[1]) superArea = getSuperArea(arguments[1]);
		
		if(superArea){ 
			MapTrim(superArea,arguments[1]);	//update sub area dropdown
			
			var url=mapIframe.src;
			if(mapIframe.src.indexOf("?mapSrc=")!=-1)
					url = mapIframe.src.substring(0,mapIframe.src.indexOf("?mapSrc=")); //stripped of the query string

			//update map
			try
			{
				if(AreaURLs[superArea]){	
					setCurrentMap(url+"?mapSrc="+AreaURLs[superArea]);	
				}else setCurrentMap(url);
			}
			catch(err)
			{
				setCurrentMap(url);
			}
		}
	}

}
function SetMap(mapsrc)
{
	var mapIframe = getRegionMap();
//	var mapIframe = document.getElementsByTagName('iframe')[0];
	if( mapIframe )
	{
		mapIframe.src = '/includes/maps/' + mapsrc;
		return false;
	}
	return true;
}
function getRegionMap()
{
	var mapIframes = document.getElementsByTagName('iframe');
	for(var i=0; i<mapIframes.length; i++)
	{
		if( mapIframes[i].id == 'RegionMap' )
			return mapIframes[i];
	}
	return null;
}
function ToggleElement(elementName, show)
{

	var obj = document.getElementById(SubControlID+'_'+elementName);
	if( obj ){
		obj.style.display = show ? (document.all ? 'block' : 'table-row') : 'none';
			
	}
}
function UpdateForInternationalHeadings()
{
	/*Update titles for international region selection */
	var region = document.getElementById("Region");
	var regionRow = document.getElementById(SubControlID+"_RegionRow");
	var suburbTitle = document.getElementById('lblsb');
    
    if(regionRow!=null){
	    if(regionRow.style.display == 'block' || regionRow.style.display == 'table-row')
	    {
		    var internationalUpdate = false;
		    var selectedValue = '';
		    var selectedTitle = '';
		    if (region != null)
			    selectedValue = region.value;
    						
		    for(var i=0; i<region.length; i++){
			    var regionTitle = region.options[i].innerHTML;

			    var regionValue = region.options[i].value;
			    if (regionTitle == 'International' && regionValue == selectedValue)
				    internationalUpdate = true;
		    }	
		    if (internationalUpdate)
		    {
			    ToggleElement('AreaTitle',false);
			    ToggleElement('CountryTitle',true);	
			    suburbTitle.innerHTML = 'City';	
		    }
		    else
		    {
			    ToggleElement('AreaTitle',true);
			    ToggleElement('CountryTitle',false);
			    suburbTitle.innerHTML = 'Suburb';	
		    }	
	    }
	 }
}
function populateRow(req, rowObj, searchType)
{
	/* keep old price values */
	var minPrice = document.getElementById('MINPRICE');
	var maxPrice = document.getElementById('MAXPRICE');
	var iMinPrice = -1; var iMaxPrice = -1;
	if(minPrice && maxPrice){
		iMinPrice = minPrice.selectedIndex;
		iMaxPrice = maxPrice.selectedIndex;
	}

	/* keep checkbox & textbox values */
	var stype = document.getElementById('SearchType');
	var chckArr = new Array();
	if( stype )
	{
		var f = stype.form;
		var inp;
		for(var i=0; i<f.elements.length; i++)
		{
			inp = f.elements[i];
			if( inp.tagName=='INPUT')
			{
				if( inp.type=='checkbox')
				{
					if( inp.checked )
					{
						if( chckArr[inp.name]==undefined )
							chckArr[inp.name]=',';
						chckArr[inp.name] += inp.value+',';
						chckArr.length++;
					}
					
				}
				if( inp.type=='text')
				{
					chckArr[inp.name] = inp.value;
					chckArr.length++;
				}
			}
		}
	}
	
	if(searchType == "Suburb2" && rowObj.cells.length == 1) {
	    cachedSuburbReq = req;
	    cachedSuburbRowObj = rowObj;
	}
	
	var propertyTypeText;
	if(searchType == "PropertyType") {
	    var elem = document.getElementById(searchType);
	    if(elem) {
	        if(elem.selectedIndex > 0) {
	            propertyTypeText = elem[elem.selectedIndex].text;
	        }
	    }
	}
	
	/* do populate */
	var txt = req.responseText;
	if(rowObj.cells.length > 0 )
	{
		rowObj.cells[0].innerHTML = txt;
	}
	else
	{
		var td = document.createElement("TD");
		td.colSpan = "2";
		td.className = "selecter";
		td.innerHTML = txt;
		rowObj.appendChild(td);
	}
	
	/* persist property type */
	if(searchType == "PropertyType") {
	    var elem = document.getElementById(searchType);
	    if(elem) {
            for(var i = 0; i < elem.length; i++) {
	            if(elem[i].text==propertyTypeText) {
	                elem.selectedIndex = i;
	                break;
	            }
            }
	    }
	}

	/* persist price values */
	var updatedMinPrice = document.getElementById('MINPRICE');
	var updatedMaxPrice = document.getElementById('MAXPRICE');	

	if(updatedMinPrice && updatedMaxPrice && (iMaxPrice != -1) && (iMinPrice != -1) ){
		updatedMinPrice.selectedIndex = iMinPrice;
		updatedMaxPrice.selectedIndex = iMaxPrice;
	}
	/* persist checkboxes & textboxes */
	if(f && chckArr.length > 0)
	{
		for(var i=0; i<f.elements.length; i++)
		{
			inp = f.elements[i];
			if( inp.tagName=='INPUT')
			{
				if( inp.type=='checkbox' )
				{
					if(chckArr[inp.name]!=undefined)
					{
						inp.checked  = (chckArr[inp.name].indexOf(','+inp.value+',') > -1);
					}
				}
				if( inp.type=='text' )
				{
					if(chckArr[inp.name]!=undefined)
					{
						inp.value = chckArr[inp.name];
					}					
				}
			}
		}
	}
}

function dd_get_selected_value(ddlName) {
    var ddl = document.getElementById(ddlName);
    if(ddl) {
        var val = ddl[ddl.selectedIndex].value;
        return typeof val == 'undefined' || val == '' ? -1: val;
    }
    return -1;
}

function d_change(ddName, ddValue, AddAllOption){window.setTimeout("dd_changed('"+ddName+"', '"+ddValue+"', '"+AddAllOption+"')",9000);}

function dd_change(ddName, ddValue, AddAllOption, ResetMap, areaValueOptional)
{
	//if(ddValue == "")
	//	return;
	if(SubControlID == "" || SubControlID == null)
		var rowObj = document.getElementById(ddName+'Row');
	else
		var rowObj = document.getElementById(SubControlID+'_'+ddName+'Row');
	var stype = getSelectValue('SearchType');
	var ptype = getPurchaseType();	
	updatePurchaseTypeStatus(stype);

	if(rowObj)
	{
        // We are just using 'Suburb2' here as a label to indicate that no area is selected
	    // and that we also want to store the results of this so the javascript doesn't break
	    // even though the suburb results will be hidden anyway.
	    var idValue = ddName == 'Suburb' && ddValue == 'Default' || ddValue == '' || (areaValueOptional && areaValueOptional == 0 || areaValueOptional == -1) ? 'Suburb2': ddName;
		var url = '/includes/GetSearchLookup.aspx?id='+idValue+'&region=' + getSelectValue('Region') + '&searchtype=' + stype + '&PurchaseType='+ ptype + '&area=' + getSelectValue('Area') + '&propertytype='+getSelectValue('PropertyType') + '&landtype='+getSelectValue('LANDTYPE') + '&tlandtype='+getSelectValue('TLANDTYPE') + '&flandtype='+getSelectValue('FLandType')+'&llandtype='+getSelectValue('LLandType') + '&CurrencyRate='+getSelectValue('CurrencyRates');

		rowToLoad[currIdx] = rowObj;

        if(idValue == 'Suburb2' && cachedSuburbReq != null && cachedSuburbRowObj != null) {
            populateRow(cachedSuburbReq, cachedSuburbRowObj);
        } else {
	        // branch for native XMLHttpRequest object
	        if (window.XMLHttpRequest) {
		        var req = new XMLHttpRequest();
		        req = new XMLHttpRequest();
		        req.open("GET", url, false);
		        req.send(null);
		        if(req.status == 200){
			        populateRow(req, rowObj, idValue);
		        }
	        // branch for IE/Windows ActiveX version
	        } else if (window.ActiveXObject) {
		        req = new ActiveXObject("Microsoft.XMLHTTP");
		        if (req) {
			        req.onreadystatechange = processLookup;
			        req.open("GET", url, false);
			        req.send();
			        if(req.status == 200){
				        populateRow(req, rowObj, idValue);				
			        }
		        }
	        }
	    }
	}

	//Control visibility for suburbs container
	if(ddName=='Suburb')
		toggleVisibility('Suburb');
	if(typeof(toggleDDLVisibility) != "undefined") {
		toggleDDLVisibility();
	}

	if(ddName=='Criteria')
	{
		var checks = document.getElementsByTagName("INPUT");
		var test = false;
		for(var i=0; i<checks.length; i++)
		{
			if(checks[i].type=='checkbox')
			{
				var n = checks[i].name.toLowerCase();
				if(n=='bed' || n=='bath')
					test = true;
			}
		}
		toggleResInfo(test);
	}
	if(ddName=='Price')
	{
		var sCode= getSelectName('CurrencyRates');

		var sImg = document.getElementById('imgFlag');
		sImg.src = "/images/flag_" + sCode + ".gif";

		var minPriceText = document.getElementById("lblPriceMINPRICE");
		var maxPriceText = document.getElementById("lblPriceMAXPRICE");	
		var disclaimer = document.getElementById(SubControlID + "_DisclaimerInfo");
		if (sCode != "NZD")
		{
			minPriceText.innerHTML = minPriceText.innerHTML + '*';
			maxPriceText.innerHTML = maxPriceText.innerHTML + '*';
		}	
		if (disclaimer != null)
		{
			if (sCode != 'NZD')
			{
				disclaimer.style.display = 'block';
			}
			else
			{
				disclaimer.style.display = 'none';
			}
		}
	}
}
function getSelectName(id)
{
	
	//alert(id);
	var obj = document.getElementById(id);
	var val = '';
	
	if(obj && obj.tagName=='SELECT' && obj.selectedIndex>-1){
			val = obj.options[obj.selectedIndex].text;
	}
	return val;
}
function getPurchaseType(){
	var tmp = document.getElementById(SubControlID + '_PurchaseTypeCell');
	var ptype=10;
	for(var i=0; i<5; i++)
	{
		o = document.getElementById('PurchaseType'+i);
		if( o )
			if( o.checked )
			{
				ptype = o.value;
				break;
			}
	}
	return ptype;
}

function updatePurchaseTypeStatus(stype) {
	
	//if(!isRegional){
		//Control visibility of Purchase type radio buttons
		var tmp = document.getElementById(SubControlID + '_PurchaseTypeTable');
		if(tmp) {
			tmp.style.display = !(stype=='1' || stype=='6') ? "none" : "block";
		}
	/*}else{
		for(var i=0; i<5; i++)
		{
			o = document.getElementById('PurchaseType'+i);
			if(o){
				if(!(stype=='1' || stype=='6')){
					o.disabled="disabled";
				}else{
					o.disabled=null;
				}	
			}
		}
	}*/

}

// display actually..
function toggleVisibility(elementName){
	UpdateForInternationalHeadings();
	var rowObj = document.getElementById(SubControlID+'_'+elementName+'Row');
	if(rowObj && elementName=='Suburb'){
		if(document.getElementsByName("sb").length==1&&document.getElementsByName("sb")[0].value=='0'){ //if only the all suburb checkbox
			rowObj.style.display="none";

		}else rowObj.style.display="";
		
	}
}

/* this is a work-around (ugly) for Fiji */
//TODO: do something much neater with the searchtype=Fiji : disable region 
function checkRegion(val)
{
	var selIdx=0;
	var obj = document.getElementById('Region');
	if(obj)
	{
		if( val=='92' )
		{
			/* took this out because not strictly what is required 
			for( var i=0; i< obj.options.length; i++ )
			{
				if( obj.options[i].value == '154' )
				{
					selIdx = i;
					break;
				}
			}
			*/
			obj.disabled = true;
			obj.selectedIndex = selIdx;
			geo_change('Area',obj.options[selIdx].value,true);
			//dd_change('Suburb','Default',true);
			ResetMap('Region');
		}
		else
		{
			obj.disabled = false;
		}
	}
}
function getSelectValue(id)
{
	//alert(id);
	var obj = document.getElementById(id);
	var val = '0';
	
	if(obj && obj.tagName=='SELECT' && obj.selectedIndex>-1){
			val = obj.options[obj.selectedIndex].value;
	}
	return val;
}

function processLookup() 
{
	if(currIdx==0) /* haven't had time to update the idx yet.. */
	{
		return;
	}
	var req = currReq[currIdx-1];
	if(!rowToLoad[currIdx-1]) /* just in case */
		return;

	// only if req shows "complete"
	if (req.readyState == 4) {
		// only if "OK"
		if (req.status == 200) {

			currIdx--;
			var txt = req.responseText;
					//alert(txt);
			if(rowToLoad[currIdx].cells.length > 0 )
			{
				rowToLoad[currIdx].cells[0].innerHTML = txt;
			}
			else
			{
				var td = document.createElement("TD");
				td.colSpan = "2";
				td.className = "selecter";
				td.innerHTML = txt;
				rowToLoad[currIdx].appendChild(td);
			}
			currReq[currIdx] = null;
			rowToLoad[currIdx] = null;
		} else {
			window.status = "There was a problem retrieving the XML data: " + req.statusText;
		}
/*		if(isLoading)
		{	
			window.clearTimeout(isLoading);
			isLoading=null;
		}
*/	}
}

function geo_change(ddName, ddValue, AddAllOption)
{
	ddName = ddName;
	var idx=0;
	var obj = document.getElementById(ddName);
	var divobj = document.getElementById(ddName+'Panel');
	if(obj)
	{
		if(window[ddName+ddValue])
		{		
			var arr = window[ddName+ddValue];
			obj.options.length=0;
			if( AddAllOption )
			{	
				var internationalUpdate = false;	
				var region = document.getElementById("Region");
				var selectedValue = '';
				if (region != null)
					selectedValue = region.value;
				for(var i=0; i<region.length; i++){
					var regionTitle = region.options[i].innerHTML;
					var regionValue = region.options[i].value;
					if (regionTitle == 'International' && regionValue == selectedValue)
						internationalUpdate = true;
				}	
				if( ddName.toLowerCase()=='area' )
				{
					if(internationalUpdate )
					{
						obj.options[0]=new Option('All Countries','',true,true);
					}
					else
						obj.options[0]=new Option('All Areas','',true,true);
				}
				else
					obj.options[0]=new Option('All','',true,true);
				idx++;
			}
			else
			{
				if(divobj) /* display the containing layer */
					divobj.style.display = 'block';
			}
			//obj.style.display = (arr.length>0);
			for( var i=0; i<arr.length; i++ )
			{
				
				if(arr[i]!='')
				{
					var p = arr[i].indexOf(":");
					if( p != -1 )
					{
						obj.options[i+idx]=new Option(arr[i].substr(p+1).replace(/&nbsp;/ig,String.fromCharCode(160)),arr[i].substr(0,p),true,true);
					}
				}
			}
			obj.selectedIndex=0;
		}
		else /* if array does not exist then reset the dd */
		{
			obj.options.length=0;
			if( AddAllOption )
			{
				obj.options[0]=new Option('All','',true,true);
			}
			else
			{
				if(divobj) /* hide the containing layer if empty */
					divobj.style.display = 'none';
			}
		}
	}
}
/* event handler: handles changing of div contents */
function div_change(divName, divValue)
{
	/* run from a top level item which doesn't have the required value */
	if( divValue==null )
	{
		var o = document.getElementById(SubControlID+'_'+'Criteria');
		if(o)
		{
			if(o.selectedIndex > -1)
				divValue = o.options[o.selectedIndex].value;
			else
				return;
		}
		else
		{
			return;
		}
	}
	/* find the div and data array */
	var obj = document.getElementById(SubControlID+'_'+'CriteriaValuesPanel');
	if(obj)
	{
		if(window[divName+divValue])
		{
			var arr = window[divName+divValue];
			obj.innerHTML='';
			/* loop through the array */
			for(var i=0; i<arr.length; i++ )
			{
				if(arr[i]!='')
				{   /* array values split by : */
					var p = arr[i].indexOf(":"); 
					if( p != -1 )
					{  /* create the checkbox and label elements */
						var id = arr[i].substr(p+1);
						var inp = document.createElement('input');
						inp.name = 'CriteriaValue';
						inp.type = 'checkbox';
						inp.className = 'dd';
						inp.id='CB' + id;
						inp.value = id;
						obj.appendChild(inp);
						var lab = document.createElement('label');
						lab.htmlFor = 'CB' + id;
						lab.className = 'title';
						lab.innerHTML = id; //arr[i].substr(0,p);
						obj.appendChild(lab);
						var lb = document.createElement('br');
						obj.appendChild(lb);
					}
				}
			}
		}
		else
		{
			obj.innerHTML='';
			/* default values */
			for(var i=1; i<6; i++ )
			{
				var id = i + (i==5 ? "+" : "");
				var inp = document.createElement('input');
				inp.name = 'CriteriaValue';
				inp.type = 'checkbox';
				inp.className = 'dd';
				inp.id='CB' + id;
				inp.value = 'CB' + id;
				obj.appendChild(inp);
				var lab = document.createElement('label');
				lab.htmlFor = 'CB' + id;
				lab.className = 'title';
				lab.innerHTML = id;
				obj.appendChild(lab);
				var lb = document.createElement('br');
				obj.appendChild(lb);
			}
		}
	}
}
function catchEnter(evt)
{
	var e = (window.event) ? window.event : evt;
	if(e.keyCode == 13)
	{
		__doPostBack('SearchButton','');
		return false;
	}
	else
	{
		return true;
	}
}
/* fn no longer required */
function CheckSearchType()
{
	/*var obj = document.getElementById('SearchType');
	if(obj)
	{
		if( obj.selectedIndex > 0 )
			return true;
		else
		{
			alert(ERROR_PROPERTYSEARCHVALIDATION);
			return false;
		}
	
	}*/
	return true;
}
function HoldItem(BPKey,i)
{
	var o = document.getElementById('hold'+i);
	if(!o)
		return;
	var action = (o.checked ? 'd' : 'a');
	var url = '/includes/helditemshelper.aspx?id=' + BPKey + '&action=' + action;
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		var req = new XMLHttpRequest();
		req = new XMLHttpRequest();
		req.open("GET", url, false);
		req.send(null);
		if(req.status == 200)
			window.setTimeout('CheckHoldBox('+i+');',250);
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.open("GET", url, false);
			req.send();
			if(req.status == 200)
				window.setTimeout('CheckHoldBox('+i+');',250);
		}
	}
}
function CheckHoldBox(i)
{
	var o = document.getElementById('hold'+i);
	if(o)
	{
		o.checked=(!o.checked);
	}
}
function SearchOffice(formobj)
{
	var o = formobj.q;
	if(o)
		if(o.value!='')
		{
			window.location.href = '/'+o.value;
			return false;
		}
		else
		{
			alert('Select a Bayleys office from the drop down list.');
			return false;
		}
	return true;
}
function SearchAgent(formobj)
{
	var o1 = formobj.first_name;
	var o2 = formobj.q;
	if(o1 && o2)
	{
		if((o1.value=='' && o2.value=='' ) || o1.value.toLowerCase()=='first name' || o2.value.toLowerCase()=='last name')
		{
			return false;
		}
		else
		{
			var url = o1.value;
			url += (url=='' || o2.value=='' ? '' : '_') + o2.value;
			window.location.href = '/' + url
			return false;
		}
	}
	return true;
}
function validateLess(thisObj, compareID, msg)
{
	var low = parseFloat(thisObj.value);
	var changeToVal=0;
	var obj = document.getElementById(compareID);
	if( !isNaN(low) && obj ) 
	{
		if( low > obj.value )
		{
			alert(msg);
			for( var i=0; i<thisObj.options.length; i++ )
			{
				low = parseFloat(thisObj.options[i].value);
				if( isNaN(low) )
				{
					break;
				}
				else
				{
					if( low > obj.value )
						break;
				}
				changeToVal = low;
			}
			window.setTimeout('SelectItem("' + thisObj.id + '","' + changeToVal + '")', 50);
			return false;
		}
	}
	return true;
}
function validateMore(thisObj, compareID, msg)
{
	var low = parseFloat(thisObj.value);
	var changeToVal=0;
	var obj = document.getElementById(compareID);
	if( !isNaN(low) && obj ) 
	{
		if( low < obj.value )
		{
			alert(msg);
			for( var i=thisObj.options.length-1; i>-1; i-- )
			{
				low = parseFloat(thisObj.options[i].value);
				if( isNaN(low) )
				{
					break;
				}
				else
				{
					if( low < obj.value )
						break;
				}
				changeToVal = low;
			}
			window.setTimeout('SelectItem("' + thisObj.id + '","' + changeToVal + '")', 50);
			return false;
		}
	}
	return true;
}

function setCurrentMap(currentMap)
{	
	isRegional = getValue(document.getElementById('__aspnetForm'),'mode')=='regional';
	
	var mapURLDefault = '';
	var mapDisplay = '';
	
	if (document.getElementById(SubControlID + "_MapDisplay") != null)
		mapURLDefault = document.getElementById(SubControlID + "_MapURL");	
	
	if (document.getElementById(SubControlID + "_MapDisplay") != null)
		mapDisplay = document.getElementById(SubControlID + "_MapDisplay");	
			
	if (isRegional && mapURLDefault != null && mapURLDefault.value != "" && mapDisplay.value == "2")
	{		
		document.getElementById("RegionMap").src=mapURLDefault.value;
		if (document.getElementById("SubAreas") != null)
			document.getElementById("SubAreas").style.display ='none';
	}
	else if(isRegional && mapDisplay.value == "1")
	{
		if (document.getElementById("mapContainer") != null)
			document.getElementById("mapContainer").style.display ='none';
		if (document.getElementById("SubAreas") != null)
			document.getElementById("SubAreas").style.display ='none';
	}
	else
	{
		if(currentMap==""){
			document.getElementById("RegionMap").src="http://"+window.location.host+"/includes/maps/nz.htm";
		}
		else{ 
			document.getElementById("RegionMap").src=unescape(currentMap);
		}
	}
}


var qsParm = new Array();
function qs() {
var query = window.location.search.substring(1);
var parms = query.split('&');
for (var i=0; i<parms.length; i++) {
   var pos = parms[i].indexOf('=');
   if (pos > 0) {
	  var key = parms[i].substring(0,pos);
	  var val = parms[i].substring(pos+1);
	  qsParm[key] = val;
	  }
   }
}

// Returns the area that the subarea belongs to (based on values in the Area dropdown)
function getSuperArea(subArea){

	var areaRow = document.getElementById(SubControlID+'_AreaRow');
	var s = areaRow.getElementsByTagName('select')[0];
	
	var i;
	
	for(i=0; i<s.length; i++){
		var title = s.options[i].innerHTML;
		var val = s.options[i].value;
		if(val==subArea){
			
			if(title.substring(0,7)!='&nbsp;-'){
				return subArea;	
			}else{
				//Found it, work backwards to find superarea
				for(i;i>0;i--){
					title = s.options[i].innerHTML;
					val = s.options[i].value;
					if(title.substring(0,7)!='&nbsp;-'){
						return val;
					}
				}
			}
		}
	}
	
	return '';
	
}

qsParm['rg']=null;
qsParm['ar']=null;

qs(); //init querystring parameter array

function initSearch(){
	var regionMenu = document.getElementById('Region');
	var areaMenu = document.getElementById('Area');
	
	if(Get_Cookie('showmap')=='true')
		ShowMap(true);

	if(regionMenu && regionMenu.selectedIndex>-1){
		var regionID =  regionMenu[regionMenu.selectedIndex].value;
		ResetMap('Region',regionID);//sync map to selected region value

	}
	if(areaMenu && areaMenu.selectedIndex>-1){
		var areaID =  areaMenu[areaMenu.selectedIndex].value;
		ResetMap('Area',areaID);//sync map to selected region value

	}		
	if(qsParm['ar']) ResetMap('Area',qsParm['ar']);//sync map to selected area value
	
	ToggleMapSub(true);	
	if(qsParm['ar']) MapTrim(getSuperArea(qsParm['ar']),qsParm['ar']); //show subarea if needed

	toggleVisibility('Suburb');// show suburb if needed
	
	isRegional = getValue(document.getElementById('__aspnetForm'),'mode')=='regional';
	
	if(isRegional){
		
	}
	//IE Fix - make sure purchase type is enabled when applicable when back button pressed
	var stype = getSelectValue('SearchType');
	updatePurchaseTypeStatus(stype);
	ToggleAdvanced('show');
}

function resetPriceDropdowns(){

	var minprice = document.getElementById('MINPRICE');
	var maxprice = document.getElementById('MAXPRICE');
	if(minprice){
		minprice.selectedIndex =0;
	}
	if(maxprice){
		maxprice.selectedIndex = maxprice.options.length-1;
	}
}

//Adds the order fields and properties per page fields to search form
function submitSearchForm(){
	var searchForm = document.getElementById("__aspnetForm");
	if(searchForm){
		setHiddenFieldToForm(searchForm,"or",getSelectValue("sort_results"));
		setHiddenFieldToForm(searchForm,"ppp",getSelectValue("number_results"));
	}
		
	var st='',pt='',rg='', ar='', sb='';
	var searchType = document.getElementById("SearchType");
	
	st = searchType[searchType.selectedIndex].text.replace(/\//g,",");
	
	var propertyType = document.getElementById("PropertyType");
	if(propertyType.selectedIndex >0)
		pt = "-" + propertyType[propertyType.selectedIndex].text.replace(/\//g,",");

	var region = document.getElementById("Region");
	rg = region[region.selectedIndex].text.replace(/\//g,",");
	
	var area = document.getElementById("Area");
	if(area.selectedIndex >0)
		ar = "-" + area[area.selectedIndex].text.replace(/\//g,",");
	
	var action = "/Property/" + st  + pt + "/" + rg + ar + "?";
	
	
	
	var elem = searchForm.elements;
	
	for(var i=0;i<elem.length; i++)
	{
		var value = "", name = "";
		name = elem[i].name;
		if( name !=null && name != "" && name != "st" && name != "pt" && name != "rg" && name != "ar")
		{
			switch(elem[i].type)
			{
				case "radio":
					if(elem[i].checked)
						value = elem[i].value;
					break;
				case "text":
				case "hidden":
					value = elem[i].value;
					break;
				case "select-one":
					value = elem[i][elem[i].selectedIndex].value;
					break;
				case "checkbox":
					if(elem[i].checked)
						value = elem[i].value;
					break;
			}
		}
		if(name != "" && value != "")
			action += name +"=" +value +"&";
	}
	action = action.substring(0,action.length -1);

	searchForm.action = action;
		
	searchForm.submit();
	 

}
function submitSearchFormExternal(){
    var searchForm = document.getElementById("__aspnetForm");
    if(searchForm){
		setHiddenFieldToForm(searchForm,"or",getSelectValue("sort_results"));
		setHiddenFieldToForm(searchForm,"ppp",getSelectValue("number_results"));
	}
   
    var action = "?";
    var searchType = document.getElementById("SearchType");
    var propertyType = document.getElementById("PropertyType");
    var region = document.getElementById("Region");
    var area = document.getElementById("Area");

    action +="pc=10&";
    action +="st="+searchType.value+"&";
    action +="pt="+propertyType.value+"&";
    action +="rg="+region.value+"&";
    action +="ar="+area.value;
    
    var elem = searchForm.elements;
    for(var i=0;i<elem.length; i++)
	{
	    if(elem[i].type == "hidden")
	    {
	         action +="&"+elem[i].name + "=" + elem[i].value;
	    }
	}
    /*
       
    */
    if(document.getElementById("ExternalSearch"))
    {	   
	    if (self != top) {
		   
		       parent.location.href="http://www.bayleys.co.nz/search/property.aspx"+action.substring(action.indexOf("?"),action.length);
		    //    parent.window.locaiton = searchForm.action+action.substring(action.indexOf("?"),action.length);
	    }
	    else
	    {
             window.location ="http://www.bayleys.co.nz/search/property.aspx"+action.substring(action.indexOf("?"),action.length);
		   // window.location = searchForm.action+action.substring(action.indexOf("?"),action.length);
			
	 
	    }
     }
     else{
        
        //searchForm.action = action;
	    // searchForm.submit();
     }

}

function setHiddenFieldToForm(form,name,value){
	var field;
	
	var fields = form.getElementsByTagName("INPUT");
	for(var i=fields.length-1;i>0; i--){
		if(fields[i].name==name){
			field=fields[i]; 
			field.value=value;
			break;
		}
	}
	if(!field){ 
		field = document.createElement("INPUT");
		field.type="hidden";
		field.name=name;
		field.value=value;
		form.appendChild(field);
	}
	return field;
	
}

function getValue(form,fieldName){
	if(form){
		var fields = form.getElementsByTagName("INPUT");
		for(var i=0;i<fields.length;i++){
			if(fields[i].name==fieldName) return fields[i].value;
		}
	}
}
function Set_Cookie( name, value, expires, path, domain, secure ) 
{
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );

	/*
	if the expires variable is set, make the correct 
	expires time, the current script below will set 
	it for x number of days, to make it for hours, 
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );

	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
		( ( path ) ? ";path=" + path : "" ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}
function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f
	
	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );
		
		
		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
	
		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}

