// load loading gif
var preload = new Image();
	preload.src = "/images/loading.gif";
var loading = '<img src="/images/loading.gif" width="16" height="16" alt="" align="absmiddle"> Loading, please wait...';
var loading2 = '<img src="/images/loading.gif" width="16" height="16" alt="" align="absmiddle"> Loading suggestions, please wait...';
var closebox = '<img src="images/close.gif" width="9" height="9" alt="">&nbsp;close';

var sd = false;
var sp = 0;
var maxrows = 0;
var snArray = new Array();
var srArray = new Array();
var slArray = new Array();

// code for Mozilla, etc.
if (window.XMLHttpRequest) {
	var xmlHttpSuggestions = new XMLHttpRequest();
	var xmlHttpPropertyTypes = new XMLHttpRequest();
}
// code for IE
else if (window.ActiveXObject) {
	var xmlHttpSuggestions = new ActiveXObject("Msxml2.XMLHTTP");
	var xmlHttpPropertyTypes = new ActiveXObject("Msxml2.XMLHTTP");
}

function checkClearField() {
	if(document.getElementById('locationSearch').value == 'Enter town name here') {
		document.getElementById('locationSearch').value = '';
	}
}

function checkCountry() {
	var selectedCountry = document.getElementById('ps_Country')[document.getElementById('ps_Country').selectedIndex].value;
	if (selectedCountry == -1) {
		document.getElementById('locationSearch').value = 'Please select country';
		document.getElementById('locationSearch').disabled = true;
	} else {
		document.getElementById('locationSearch').value = '';
		document.getElementById('locationSearch').disabled = false;
	}
}

function otherClick() {
	var os = document.getElementById('ptother').checked;
	if (os == true)
		document.getElementById('propertyTypeOther').disabled = false;
	else {
		document.getElementById('propertyTypeOther').disabled = true;
		document.getElementById('propertyTypeOther').value = '';
	}
}


function onKeyPress(e) {
   if( !e ) {
    //if the browser did not pass the event information to the
    //function, we will have to obtain it from the event register
    if( window.event ) {
      //Internet Explorer
      e = window.event;
    } else {
      //total failure, we have no way of referencing the event
	  return;
    }
  }
  if( typeof( e.keyCode ) == 'number'  ) {
    //DOM
    e = e.keyCode;
  } else if( typeof( e.which ) == 'number' ) {
    //NS 4 compatible
    e = e.which;
  } else if( typeof( e.charCode ) == 'number'  ) {
    //also NS 6+, Mozilla 0.9+
    e = e.charCode;
  } else {
    //total failure, we have no way of obtaining the key code
    return;
  }
  doSuggestion(e);
}



function doSuggestion(e) {
	var searchText = document.getElementById('locationSearch').value;
	var selectedCountry = document.getElementById('ps_Country')[document.getElementById('ps_Country').selectedIndex].value;
	var suggestion = document.getElementById('suggestions');
	if (searchText.length > 2) {	
		if (e == 40 || e == 38 || e == 13) {
		//	window.alert('The key pressed has keycode ' + e + ' and is key ' + String.fromCharCode( e ) );
			if (e == 40 && sp < maxrows) {
				if (sp != 0) {
					spnormal(sp);
				}
				sp = sp + 1;
				sphilight(sp);
			}
			if (e == 38 && sp > 0) {				
				spnormal(sp);
				sp = sp - 1;
				if (sp != 0) {
					sphilight(sp);
				}
			}	
			if (e == 13) {
				updateLocation(snArray[(sp - 1)],srArray[(sp - 1)],slArray[(sp - 1)]);
			}
		} else if (e != 37 && e != 39) {
			suggestion.style.display = 'block';
			sd = true;
			sp = 0;
			sendXmlRequest(
				xmlHttpSuggestions, 
				'/sendreq_processes/getsuggestions.cfm?searchText='+searchText+'&countryId='+selectedCountry, 
				gotSuggestions
			);	
		}
	} else {
		document.getElementById('suggestions').innerHTML = "";	
		closeSuggestion();
	}
}

function gotSuggestions() {
	if (xmlHttpSuggestions.readyState == 1) {
		document.getElementById('suggestions').innerHTML = "";
		addDiv('suggestions','load','sugLoading','','','',loading2);
	} 
	else if (xmlHttpSuggestions.readyState == 4) {
		if (checkValidXmlResponse(xmlHttpSuggestions)) {
			var xmlDoc = xmlHttpSuggestions.responseXML.documentElement;
			var numPageItems = xmlDoc.getElementsByTagName('numbersuggestions').item(0).firstChild.data -1;
			var pageText = '';
			if (numPageItems != -1) {
				document.getElementById('suggestions').innerHTML = "";
				maxrows = numPageItems + 1;
				for (i=0; i<=numPageItems; i++) {
					/* list suggestions here */
					snArray[i] = xmlDoc.getElementsByTagName('value').item(i).firstChild.data;
					srArray[i] = xmlDoc.getElementsByTagName('regionID').item(i).firstChild.data;
					slArray[i] = xmlDoc.getElementsByTagName('locationID').item(i).firstChild.data;
					pageText = pageText + '<div id="sug'+(i+1)+'" class="suggestLine" onclick="updateLocation(\''+xmlDoc.getElementsByTagName('value').item(i).firstChild.data+'\','+xmlDoc.getElementsByTagName('regionID').item(i).firstChild.data+','+xmlDoc.getElementsByTagName('locationID').item(i).firstChild.data+');" onmouseover="hilight(this);" onmouseout="normal(this);sp=0;">'+xmlDoc.getElementsByTagName('text').item(i).firstChild.data+'</div>';
				}
			} 
			else {
				/* no suggestions text */
				pageText = pageText + '<div class="sugLoading"><strong>No matching locations<br>please try another</strong></div>';
			}
			/* close element here */
			pageText = pageText + '<div class="closeLine" onclick="closeSuggestion();"><img src="/images/close.gif" width="9" height="9" alt="">&nbsp;close</div>';
			document.getElementById('suggestions').innerHTML = pageText;
		}
	}
}

function closeSuggestion() {
	document.getElementById('suggestions').style.display = 'none';
	sd = false;
 	sp = 0;	
}

function sphilight(a) {
	if (a > 0)
		spnormal(a);
	document.getElementById('sug'+a).className = 'suggestLineHover';
}

function spnormal(a) {
	document.getElementById('sug'+a).className = 'suggestLine';
}

function hilight(obj) {
	if (sp > 0)
		spnormal(sp);
	obj.className = 'suggestLineHover';
}

function normal(obj) {
	obj.className = 'suggestLine';
}

function updateLocation(t,r,l) {
	document.getElementById('locationSearch').value = t;
	document.getElementById('regionID').value = r;
	document.getElementById('locationID').value = l;
	document.getElementById('suggestions').style.display = 'none';
}

function changeRadius() {
	var radius = document.getElementById('applyRadius').checked;
	if (radius == true) {
		document.getElementById('radiusSelected').disabled = false;
	} else {
		document.getElementById('radiusSelected').disabled = true;
	}
}

function submitForm() {
	document.getElementById('reqform').submit();
}

function changeTransType() {
	var selectedValue = document.getElementById('ps_TransType')[document.getElementById('ps_TransType').selectedIndex].value;
	var docElement = document.getElementById('propertyTypesDisplay');		
	if (selectedValue == 0) {
		docElement.innerHTML = 'First select a Category (above)';
	}
	else {
		sendXmlRequest(
			xmlHttpPropertyTypes, 
			'/sendreq_processes/getpropertytypes.cfm?ps_TransType='+selectedValue, 
			gotPropertyTypes
		);	
	}
	if (selectedValue == 2 || selectedValue == 3 || selectedValue == 5 ) {
		if (navigator.appName=="Microsoft Internet Explorer")
			document.getElementById('displayFreq').style.display = 'block';
		else
			document.getElementById('displayFreq').style.display = 'table-row';
	} else {
		document.getElementById('displayFreq').style.display = 'none';
	}
}

function gotPropertyTypes() {
	if (xmlHttpPropertyTypes.readyState == 1) {
		document.getElementById('propertyTypesDisplay').innerHTML = loading;
	} 
	else if (xmlHttpPropertyTypes.readyState == 4) {
		if (checkValidXmlResponse(xmlHttpPropertyTypes)) {
			var xmlDoc = xmlHttpPropertyTypes.responseXML.documentElement;
			var numPageItems = xmlDoc.getElementsByTagName('propertytype').length;
			if (numPageItems != -1) {
				document.getElementById('propertyTypesDisplay').innerHTML = "";
				for (i=0; i<numPageItems; i++) {
					if (xmlDoc.getElementsByTagName('id').item(i).firstChild.data == 3) {
						addTextBox("ptother","propertyType","propertyTypeOther","propertyTypeOther",xmlDoc.getElementsByTagName('text').item(i).firstChild.data,false,xmlDoc.getElementsByTagName('text').item(i).firstChild.data);
					} else {
						addCheckBox("pt"+xmlDoc.getElementsByTagName('id').item(i).firstChild.data,"propertyType",xmlDoc.getElementsByTagName('text').item(i).firstChild.data,false,xmlDoc.getElementsByTagName('text').item(i).firstChild.data);
					}
				}
			} 
			else {
				alert('Failed to load Property Types list, please re-select Category');
			}
		}
	}
}

function addCheckBox(cbId,cbName,cbValue,cbChecked,cbText) {
	var cb = document.createElement("input");
	cb.type = "checkbox";
	cb.id = cbId;
	cb.name = cbName;
	cb.value = cbValue;
	cb.checked = cbChecked;
	var text = document.createTextNode(cbText);
	var br = document.createElement("br");
	document.getElementById('propertyTypesDisplay').appendChild(cb);
	document.getElementById('propertyTypesDisplay').appendChild(text);
	document.getElementById('propertyTypesDisplay').appendChild(br);
}

function addTextBox(cbId,cbName,tbId,tbName,cbValue,cbChecked,cbText) {
	var cb = document.createElement("input");
	cb.type = "checkbox";
	cb.id = cbId;
	cb.name = cbName;
	cb.value = cbValue;
	cb.checked = cbChecked;
	cb.onclick = function(){otherClick();};
	var text = document.createTextNode("Other: ");
	var br = document.createElement("br");
	var tb = document.createElement("input");
	tb.type = "text";
	tb.id = tbId;
	tb.name = tbName;
	tb.value = "";
	tb.size = 15;
	tb.disabled = true;
	document.getElementById('propertyTypesDisplay').appendChild(cb);
	document.getElementById('propertyTypesDisplay').appendChild(text);
	document.getElementById('propertyTypesDisplay').appendChild(tb);
	document.getElementById('propertyTypesDisplay').appendChild(br);
}

function addDiv(element,divid,divclassname,divonclick,divonmouseover,divonmouseout,divinnerhtml) {
	var dv = document.createElement("div");
	dv.id = divid;
	dv.className = divclassname;
	dv.fnonClick = divonclick;
	dv.fnonMouseOver = divonmouseover;
	dv.fnonMouseOut = divonmouseout;
	dv.innerHTML = divinnerhtml;
	document.getElementById(element).appendChild(dv);
}

function sendForm() {
	startFade();
	document.reqform.submit();
}