	var timeoutId = "";
	var timeoutId2 = "";	
	var errorFormFields;
	var colorArray = new Array('#FF0000','#EE0000','#DD0000','#CC0000','#BB0000','#AA0000','#990000','#880000','#770000','#660000','#550000','#440000','#330000','#220000','#110000', "#C6C6C6");	

	function validate(form){
		errorFormFields = new Array();
		
		var error = "";
		//for each form element
		for(var i=0; i<form.length; i++){
			var element = form[i];
			element.style.backgroundColor="";
			element.style.border = "1px solid #C6C6C6";
			//if form field not required 
			if(!element.disabled){
				//if required
				if(element.getAttribute("required") == "yes"){
					//if form element if empty
					if(!valid(element.value,element.getAttribute("validate"),element)){
						error += element.getAttribute("message") + "\r\n";	
						errorFormFields.push(i);
						element.style.backgroundColor = "#CCFFFF";
					}
				}
				else if(element.getAttribute("validate") != ""){
					//if validation is need by not required
					if(element.value != ""){
						if(!valid(element.value,element.getAttribute("validate"),element))
							error += element.getAttribute("message") + "\r\n";
					}
				}
			}
		}
		
		//Alert Error
		if(error != ""){
			form[errorFormFields[0]].focus();
			alert(error);			
			changeColor(form.id, 0);
		}
		else{
			form.submit();
		}
			
			
	}
	
	function validateNs(form){
		errorFormFields = new Array();
		
		var error = "";
		//for each form element
		for(var i=0; i<form.length; i++){
			var element = form[i];
			element.style.backgroundColor="";
			element.style.border = "1px solid #C6C6C6";
			//if form field not required 
			if(!element.disabled){
				//if required
				if(element.getAttribute("required") == "yes"){
					//if form element if empty
					if(!valid(element.value,element.getAttribute("validate"),element)){
						error += element.getAttribute("message") + "\r\n";	
						errorFormFields.push(i);
						element.style.backgroundColor = "#CCFFFF";
					}
				}
				else if(element.getAttribute("validate") != ""){
					//if validation is need by not required
					if(element.value != ""){
						if(!valid(element.value,element.getAttribute("validate"),element))
							error += element.getAttribute("message") + "\r\n";
					}
				}
			}
		}
		
		//Alert Error
		if(error != ""){
			form[errorFormFields[0]].focus();
			alert(error);			
			changeColor(form.id, 0);
		}
		else{
			return true;
		}
			
			
	}	
	
	function changeColor(formId, colorId){
		
		form = document.getElementById(formId);
		
		for(var i=0;i<errorFormFields.length;i++){
//			alert(form[errorFormFields[i]]);
			if(colorArray[colorId] == "")
				form[errorFormFields[i]].style.border = "";			
			else
				form[errorFormFields[i]].style.border = "2px solid "+colorArray[colorId];
			
		}
		
		if(timeoutId != "")
			window.clearTimeout(timeoutId);
		
		colorId++;
		if(colorId<colorArray.length)
			timeoutId = window.setTimeout("changeColor('"+formId+"',"+colorId+")",300);
	}


	function changeColor2(divId, colorId){
		div = document.getElementById(divId);
		div.style.display = "";
		div.style.border = "2px solid "+colorArray[colorId];	
		if(timeoutId2 != "")
			window.clearTimeout(timeoutId2);		
		colorId++;
		if(colorId<colorArray.length)
			timeoutId2 = window.setTimeout("changeColor2('"+divId+"',"+colorId+")",300);
	}


	function valid(value,type,element){
		if(value == "")
			return false;
			
		switch(type){
			case "int":
				if(isNaN(parseInt(value)))
					return false;
				break;
			case "float":
				if(isNaN(parseFloat(value)))
					return false;
				break;
			case "email":					
				var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
				if (!filter.test(value))
					return false;
				break;
			case "date(YYYY-MM-DD)":
				var filter  = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/;
				if (!filter.test(value))
					return false;
				break;				
			case "checked":
				if(!element.checked)
					return false;
				break;
			case "phone":// 555-555-5555
				var filter  = /^[2-9]\d{2}-\d{3}-\d{4}$/;
				if (!filter.test(value))
					return false;
				break;			
			case "creditcard": // 4444-4444-4444-4444
				var filter  = /^(\d{4}[- ]){3}\d{4}|\d{16}$/;
				if (!filter.test(value))
					return false;
				break;
			case "expdate": // MM/YY
				var filter  = /^((0[1-9])|(1[0-2]))\/(\d{2})$/;
				if (!filter.test(value))
					return false;
				break;				
				
			default://string
				break;
		}
		return true;
	}	

    function check_length(maxchars,message,div_id)
    {
    	var len = message.value.length;

        if(len > maxchars){
        	message.value = message.value.substr(0,maxchars);
        	len = maxchars;
        }

        document.getElementById(div_id).innerHTML = maxchars - len;
    }

	function stopRKey(evt) { //http://www.mediacollege.com/internet/javascript/form/disable-return.html
	var evt  = (evt) ? evt : ((event) ? event : null);
	var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
	if ((evt.keyCode == 13) && (node.type=="text")) { return false; }
}
document.onkeypress = stopRKey;

function postcodeLookUp(form){
	var node = new geoNode();
	node.returnHandler = function(result){ 
		form.lat.value = result.lat;
		form.lng.value = result.lng;
		form.submit();
	};
	node.geocode(form.postcode.value+', '+form.countryIso.value);
}

function locationLookUp(form){
	var node = new geoNode();
	node.returnHandler = function(result){ 
		form.lat.value = result.lat;
		form.lng.value = result.lng;
		form.submit();
	};
	var loc = form.location.value + ", " + form.countryIso.value;
//	alert(loc);
	node.geocode(loc);	
}

function townLookUp(form){
	var node = new geoNode();
	node.returnHandler = function(result){ 
		form.lat.value = result.lat;
		form.lng.value = result.lng;
		form.town.value = result.city;
		form.state.value = result.region;
		form.submit();
	};
	var loc = form.town.value + " " + form.state.value + ", " + form.countryIso.value;
//	alert(loc);
	node.geocode(loc);	
}

function addressLookUp(form){
	if(form.fetchLL.checked){
		var node = new geoNode();
		node.returnHandler = function(result){ 
			form.latitude.value = result.lat;
			form.longitude.value = result.lng;
			form.fetchLL.checked = false;
			form.latitude.disabled = '';
			form.longitude.disabled = '';
			form.submit();
		};
		var loc = form.address.value + ", " + form.city.value + ", " + form.state.value + " " + form.zipcode.value
//		alert(loc);
	}else{
		form.submit();
	}
	node.geocode(loc);	
}

function geoNode(){
	this.gls = new GlocalSearch();
	this.returnHandler = function (latitude, longitude){ };
	this.parseResult = function(){ 
//		alert(this.gls.completionFailureDetails);
		if(this.gls.results[0]){
			this.returnHandler(this.gls.results[0]);
		}else{
			alert('Sorry your location was not found. Please check your address and other location information and try again. If this does not work try a different address');
		}
	}
	this.geocode = function(loc){
		this.gls.setSearchCompleteCallback(this, this.parseResult);
		this.gls.execute(loc);
	}	
}
//<Script>

function toggleButton(button, propertyid, vars){
	var handler = function(html, xml){
		var result = parseInt(xml.getElementsByTagName("result")[0].firstChild.nodeValue);		
		if(result){
			button.value = xml.getElementsByTagName("value")[0].firstChild.nodeValue;
		}else{
			alert('Sorry, cannot update sold status at this time');
		}
	}
	ajax(vars, "manageoptions.php", handler);
}

function ge2(a, b, s){
	var j = a+"@"+b;
	return "<a class='"+s+"' href='mailto:"+j+"'>"+j+"</a>";
}


function ge(a, b, c, s){
	var j = a+"@"+b+"."+c;
	return "<a class='"+s+"' href='mailto:"+j+"'>"+j+"</a>";
}

function dump(obj){
	alert(obj);
	var str = "";
	for(var i in obj){
		str += i+"\n";
	}
	alert(str);
}

function voidr(){
}

function loadTab(tab, tabmenuId){
	var tabmenu = document.getElementById(tabmenuId);
	
	var tabs = tabmenu.getElementsByTagName('DIV');
	for(var i=0; i<tabs.length; i++){
		tabs[i].id = "";
	}
	
	tab.id = "on";
}

function sendForm(divId, form, page, loadingId){
	var sendVars = "";
	for(var i=0;i<form.elements.length;i++){
		if(!form.elements[i].disabled && form.elements[i].name != ""){
			sendVars += "&"+escape(form.elements[i].name)+"="+escape(form.elements[i].value);
		}
	}
	loadAjaxDiv(divId, page, sendVars, loadingId);
}

function removeSavedR(page, sendVars, redirect){
	var handler = function(text, xml){
		window.location=redirect;
	}
	ajax(sendVars, page, handler);
}

function loadAjaxDiv(divId, page, sendVars, loadingId){
	var loading = getObj(loadingId);
	if(loading) loading.style.display='';
	var div = getObj(divId);
	var handler = function(text,xml){
		if(loading!=null){
			loading.style.display='none';
		}
		var div = getObj(divId);
		try { 
			div.innerHTML = text; 
		}catch(e){ 
			alert(e); 
		} 
	} 
	ajax(sendVars, page, handler);
}

//********************************************
var drMap;
var gdir;
var geocoder = null;
var addressMarker;    

function setDirections(fromAddress, toAddress, locale) {
	document.getElementById("drOutDiv").style.display = '';		
	document.getElementById("directions").innerHTML = '';
	drMap = new GMap2(document.getElementById("drMap"));
	gdir = new GDirections(drMap, document.getElementById("directions"));
	GEvent.addListener(gdir, "error", handleErrors);		
	gdir.load("from: " + fromAddress + " to: " + toAddress, { "locale": locale });
}

function handleErrors(){
	if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS){
		document.getElementById("drOutDiv").style.display = 'none';		   
		alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + gdir.getStatus().code);
	}else if (gdir.getStatus().code == G_GEO_SERVER_ERROR){
		document.getElementById("drOutDiv").style.display = 'none';		   		   
		alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gdir.getStatus().code);
	}else if (gdir.getStatus().code == G_GEO_MISSING_QUERY){
		document.getElementById("drOutDiv").style.display = 'none';		   		   			
		alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code);
	}else if (gdir.getStatus().code == G_GEO_BAD_KEY){
		document.getElementById("drOutDiv").style.display = 'none';		   		   		
		alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);
	}else if (gdir.getStatus().code == G_GEO_BAD_REQUEST){
		document.getElementById("drOutDiv").style.display = 'none';		   		   			
		alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code);
	}else{ 
		document.getElementById("drOutDiv").style.display = 'none';		   		   					
		alert("Sorry. I'm unable to get directions for this address.");
	}
}


function selectOption(selectId, value){
	var obj = getObj(selectId);
	for(var i=0; i<obj.options.length; i++){
		if(obj.options[i].value==value){
			obj.options[i].selected = true;
			return;
		}
	}
}

function fetchCities(countyObj){
	form = countyObj.form;
	form.city.disabled=true;
	form.city.innerHTML = null;
	form.city.options[0] = new Option("-- All City, or Select County Above --","");
	if(countyObj.value=="") return; //cancel call	
	
	var vars = "act=fcities&cid="+escape(countyObj.value);
	document.getElementById("workingcounty").style.display='';	
	
	var handler = function(html, xml){
	document.getElementById("workingcounty").style.display='none';
		var result = parseInt(xml.getElementsByTagName("result")[0].firstChild.nodeValue);		
		if(result){
			var row = xml.getElementsByTagName("row");
			if(parseInt(xml.getElementsByTagName("totalrows")[0].firstChild.nodeValue)>0){
				form.city.innerHTML = "";
				form.city.options[0] = new Option("-- All Cities --","");				
				for(i=0;i<row.length;i++){
					form.city.options[form.city.length] = new Option(row[i].firstChild.nodeValue, row[i].getAttribute('value'));
				}
				form.city.disabled=false;
			}else{
				alert('No cities found for county.');
			}
		}else{
			alert('Unable to fetch cities.');
		}
	}	
	ajax(vars, "manageoptions.php", handler);
}

var popUpWin=0;
function popUpWindow(URLStr, left, top, width, height){
  if(popUpWin){
    if(!popUpWin.closed) popUpWin.close();
  }
  popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}


function ch(spanId, formId){
	try{
		var span = document.getElementById(spanId);
	}catch (e){
		alert('Unable to change country. Please contact site owner. Error Message: Iso div id is invalid.');
		return;
	}
	try{
		var form = document.getElementById(formId);
	}catch (e){
		alert('Unable to change country. Please contact site owner. Error Message: Iso form id is invalid.');
	}
	span.style.display='none';
	form.countryIso.style.display = '';
	
}

//ajax function for w3c school tutorial
function ajax(sendVars, page, responceHandler){
  var xmlHttp;
  try{
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
  }catch (e){
    // Internet Explorer
    try{
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }catch (e){
      try{
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }catch (e){
        alert("Your browser does not support AJAX!");
        return false;
        }
      }
    }
    xmlHttp.onreadystatechange=function(){
      if(xmlHttp.readyState==4)
        {		
          responceHandler(xmlHttp.responseText, xmlHttp.responseXML);
        }
      }
    xmlHttp.open("POST",page,true);
	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 	  	
    xmlHttp.send(sendVars);
}


function getObj(name){
	return document.getElementById(name);
}

function loadSchools(form){
	//e.g. http://www.schoolmatters.com/schools.aspx/q/page=sr/txt=myrtle$sp;beach/ust=SC/p=1/fp=1
	var url = "http://www.schoolmatters.com/schools.aspx/q/page=sr/txt=";
	url += form.city.value.replace(/ /, '$sp;');
	url += "/ust=";
	url += form.state.value;
	url += "/p=1/fp=1";
	popUpWindow(url, 10, 10, 800, 500);
}

function loadNeighborhoodinfo(form){
	var url = "http://www.bestplaces.net/search/default.aspx?q=";
	url += escape(form.city.value);
	popUpWindow(url, 10, 10, 850, 500);
}


