function toggle(obj) {
	if (obj.style.display == "none") {
		obj.style.display = "";
	}
	else {
		obj.style.display = "none";
	}
}

function jsWait(millis) {
	var date = new Date();
	var curDate = null;
	
	do { curDate = new Date(); } 
	while(curDate-date < millis);
} 

function showPh(oid, mlnum, mid, phone, divid) {
		//alert(document.getElementById(divid).innerHTML);
		document.getElementById(divid).innerHTML = "<span class='smTextBold'>Phone:</span> <span class='smText'> " + phone + "</span>";
		if(navigator.appName=='Netscape'){
			var objHTTP = new XMLHttpRequest();
		}
		else if (navigator.appName.indexOf("Explorer") > 0) {
			var objHTTP = new ActiveXObject("Microsoft.XMLHTTP");
		}
		if (objHTTP) {
			objHTTP.open('GET','doBrokerPhone.cfm?officeid='+oid+'&MLNUM='+mlnum+'&MEMBER_NUMBER='+mid, false);
			objHTTP.send(null);
		}
}

function isMLNUM(obj) {
	var re = /([^0-9]){1,}/g;

	if (re.test(obj.value) == true)
	{
		alert('The format of your MLS number appears to be incorrect.  The proper format is digital');
		obj.value = '';
		obj.select();
		return false;
	}	
	return true;
}

function isEmail(str){
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	//filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/
	//(com|net|org|edu|biz|cc|us)[\/\w\?\.\-]*$/
	if (filter.test(str))
		testresults=true
	else {
		testresults=false
	}
	return (testresults)
}

function isZipCode(obj){
	var re = /([0-9]){5}/;
	var str = obj.value;
	if ( obj.value!='' && !re.test(str))	{
		alert('The format of the Zip Code you entered appears to be incorrect.  The proper format is: 77002');
		obj.value = '';
		obj.select();
		return false;
	}	
	return true;
}

function isNumeric(obj, descr){
	var re = /([^0-9]){1,}/;
	if (re.test(obj.value) == true)	{
		alert('The value, "' + obj.value + '", you entered for ' + descr + ' is not a number.  Please enter a number.');
		obj.value = '';
		obj.focus();
		return false;
	}	
}

function fnCompareRangeValues(objMin, objMax, descrMin, descrMax){
	if (parseInt(objMin.value) > parseInt(objMax.value))	{
		alert('The value you entered for ' + descrMin + ' is greater than the value you entered for ' + descrMax + '.');
		return false;
	}
	return true;
}

function fnClearFormObjects(frm){
	for(x=1; x < frm.elements.length; x++)	{	
		if (frm.elements[x].type == 'checkbox' || frm.elements[x].type == 'radio'){	
			frm.elements[x].checked = false;
		}
		else	{
			frm.elements[x].value = '';
		}
	}
}

function validChar(strInput){
	var j;
	for(j=0; j<strInput.length; j++){
		x = strInput.charAt(j);
		if ( (x > "z") || 
				(x > "Z" && x < "a") ||
				(x > "9" && x < "A") || 
				( (x<"0") && !(x =="," || x ==" " || x=="-"|| x=="'") )
			)
		{
			return false;
		}
	}
	return true;
}

function validNumList(obj) {
	var strInput = obj.value;
	var blnWellFormat = 0;
	for(j=0; j<strInput.length; j++){
		x = strInput.charAt(j);
		// first has to been 1 - 9
		if (j==0 && (x < '1' || x > '9')) {
			blnWellFormat = 1;
			break;
		} 
		// last has to been 0 - 9
		else if ( j== strInput.length && (x < '0' || x > '9') ) {
			blnWellFormat = 2;
			break;
		}
		// comma inbetween number 
		else if (x == ',') {
			y = strInput.charAt(j-1);
			if (y < '0' || y > '9') blnWellFormat = 3;
			y = strInput.charAt(j+1);
			if (y < '0' || y > '9') blnWellFormat = 4;
		}
		// middle has to been 1 - 9 or ','
		else if ( (x < '0' || x > '9') && x != ',' ) {
			blnWellFormat = 5;
			break;
		}
	}			
	if (blnWellFormat!=0) {
		alert ('MLS Area is in wrong format. Error Number ' + blnWellFormat);
		obj.focus();
		return false;
	}
	return true;
}

function redrawList(objList, order, popURL, dispName, sortlink) {
		objHTTP = getHTTPObject()
		objHTTP.open("GET", popURL + ".cfm?sort="+order, false)
		objHTTP.send(null);
		strList = objHTTP.responseText;
		pos = strList.lastIndexOf('|');
		strList = strList.substring(0, pos);	
		
		objList.length = 0;
		objList.style.width='160px';
		objList.options[0] = new Option("ALL " + dispName, "")
		aryList = strList.split('|')
		for (i=0; i<aryList.length; i++) {
			arrTemp=aryList[i].split(',');
			objList.options[i+1] = new Option(LTrim(arrTemp[0]), arrTemp[1])
		}
		if (order == 1) {
			document.getElementById(sortlink).innerHTML = "<a class='smText' href=\"javascript:redrawList(document.getElementById('" + objList.id + "'), 0, '" + popURL + "', '" + dispName + "', '" + sortlink + "');\">Sort " + dispName + " By Number</a>"
		}
		else {
			document.getElementById(sortlink).innerHTML = "<a class='smText'  href=\"javascript:redrawList(document.getElementById('" + objList.id + "'), 1, '" + popURL + "', '" + dispName + "', '" + sortlink+ "');\">Sort " + dispName + " Alphabetically</a>"
		}
}

function getHTTPObject() {
	if(navigator.appName=='Netscape'){
		var objHTTP = new XMLHttpRequest();
	}
	else if (navigator.appName.indexOf("Explorer") > 0) {
		var objHTTP = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return objHTTP;
}
	
function LTrim( value ) {
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

function fnQuickSearch(frm, criteriaAppend) {
	if (frm.QUICKSEARCH.value=='' || frm.QUICKSEARCH.value== 'Enter Address or MLS Number') {
		alert("Please enter your quick search criteria");
		return false;
	}
	frm.action = "doSearch.cfm?QUICKSEARCH=" + frm.QUICKSEARCH.value; 
	if (criteriaAppend) frm.action = frm.action + "&" + criteriaAppend;
	location.href=frm.action;
}

function fnValidateForm(frm, popwait) {	
	//this function called in 10 forms , myhf_dispEditCriteria, 
	if(frm.QUICKSEARCH) {frm.QUICKSEARCH.value = "";}
	if ( (frm.LISTING_PRICE_MIN) && (frm.LISTING_PRICE_MIN.value != '' && frm.LISTING_PRICE_MAX.value != '') )	{
		if (fnCompareRangeValues(frm.LISTING_PRICE_MIN, frm.LISTING_PRICE_MAX, 'Minimum Price', 'Maximum Price') == false)	{
			return false;
		}
	}
	if ( (frm.LEASE_PRICE_MIN) && (frm.LEASE_PRICE_MIN.value != '' && frm.LEASE_PRICE_MAX.value != '') )	{
		if (fnCompareRangeValues(frm.LEASE_PRICE_MIN, frm.LEASE_PRICE_MAX, 'Minimum Price', 'Maximum Price') == false)	{
			return false;
		}
	}
	if ( (frm.SQURE_FEET_MIN) && (frm.SQURE_FEET_MIN.value != '' && frm.SQURE_FEET_MAX.value != ''))
	{
		if (fnCompareRangeValues(frm.SQURE_FEET_MIN, frm.SQURE_FEET_MAX, 'Minimum Square Feet', 'Maximum Square Feet') == false){
			return false;
		}
	}

	if (!isZipCode(frm.ZIP_CODE)){
		return false;
	}
	
	<!-- prevent special char for input text field -->
	for (i=0; i<frm.elements.length; i++){
		if (frm.elements[i].type=="text" && frm.elements[i].name != 'Search_Name'){
			if(!validChar(frm.elements[i].value)){
				alert("Please don't put special character in " + frm.elements[i].name +  " field");
				return false;
			}
		}
	}
	
	j = 0;
	//prevent too many seletions for MLS_AREA
	for(i=0; i<frm.MLS_AREA.options.length; i++){
		if(frm.MLS_AREA.options[i].selected) {
			j++;
		}
		if (j>10) {
			alert("Please do not select more than 10 MLS Areas.");
			return false;
		}
	}
	
	j=0;
	//prevent too many seletions for and city
	for(i=0; i<frm.LOCATION.options.length; i++){
		if(frm.LOCATION.options[i].selected) {
			j++;
		}
		if (j>10) {
			alert("Please do not select more than 10 Locations.");
			return false;
		}
	}
	if(popwait) (popupURL('divWait.htm?'+appendRand(), 350, 250, '', 0));
	//alert('divWait.htm?'+appendRand());
	return true;
}


function printable() {
	 var bgc;
	 var fgc;
	 var lc;
	 var vlc;
	 var alc;
	 var bkg;
	 bgc = document.bgColor;
	 fgc = document.fgColor;
	 lc =  document.linkColor;
	 vlc = document.vlinkColor;
	 alc = document.alinkColor; 
	 bkg = document.body.background;
	 document.bgColor = "white"; 
	 document.fgColor = "black";
	 document.linkColor = "black";
	 document.vlinkColor = "black";
	 document.alinkColor = "black";
	 document.body.background = "";
	 focus();
	 print();
	 document.bgColor = bgc;
	 document.fgColor = fgc;
	 document.linkColor = lc;
	 document.vlinkColor = vlc;
	 document.alinkColor = alc;
	 document.body.background = bkg;
}

function showdiv(id){
	var elem = document.getElementById(id);
	if (elem) {
		elem.style.display = '';
	}
}
function hidediv(id){
	if (document.getElementById(id)) {
		document.getElementById(id).style.display = 'none';
	}
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
				curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
}


function captureMousePosition(e) {
	var xMousePos = 0;
	var yMousePos = 0;
   if (document.all) {
        // When the page scrolls in IE, the event's mouse position
        // reflects the position from the top/left of the screen the
        // user is looking at. scrollLeft/Top is the amount the user
        // has scrolled into the page. clientWidth/Height is the height/
        // width of the current page the user is looking at. So, to be
        // consistent with Netscape (above), add the scroll offsets to
        // both so we end up with an absolute value on the page, no
        // matter if the user has scrolled or not.
        xMousePos = window.event.x+document.body.scrollLeft;
        yMousePos = window.event.y+document.body.scrollTop;
    } else if (document.getElementById) {
        // Netscape 6 behaves the same as Netscape 4 in this regard
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    }
	return [xMousePos,yMousePos]
}


function showBuyDiv(obj){
	if(obj.checked){
		document.getElementById("divBuy").style.display = '';
		document.getElementById("divBuyPrice").style.display = '';
		document.getElementById("divLease").style.display = 'none';
		document.getElementById("divLeasePrice").style.display = 'none';
		document.frmSearch.LEASE_PRICE_MIN.selectedIndex = 0;
		document.frmSearch.LEASE_PRICE_MAX.selectedIndex = 0;
		for (var i=0; i < document.frmSearch.PROP_TYPE.length; i++ ) {
			document.frmSearch.PROP_TYPE[i].checked = false;
		}
	}
}
function showLeaseDiv(obj){
	if(obj.checked){
		document.getElementById("divLease").style.display = '';
		document.getElementById("divLeasePrice").style.display = '';
		document.getElementById("divBuy").style.display = 'none';
		document.getElementById("divBuyPrice").style.display = 'none';
		document.frmSearch.LISTING_PRICE_MIN.selectedIndex = 0;
		document.frmSearch.LISTING_PRICE_MAX.selectedIndex = 0;
		for (var i=0; i < document.frmSearch.PROPERTY_CLASS_ID.length; i++ ) {
			document.frmSearch.PROPERTY_CLASS_ID[i].checked = false;
		}
	}
}

function writeToLayer(id, sHTML) {
  var el = (document.getElementById)? document.getElementById(id): (document.all)? document.all[id]: (document.layers)? document.layers[id]: null;
  if (!el) return;
  if (typeof el.innerHTML!="undefined") {
      el.innerHTML = sHTML;
  } else if (document.layers) {
			el.document.write(sHTML);
			el.document.close();
  }
}

function openWin( windowURL, windowName, windowFeatures ) { 
	return window.open( windowURL, windowName, windowFeatures ) ; 
} 


function reloadSearch() {
	// if it is firefox, reload not repost the form param, need force to getListings again with new consumer id)
	//if doSearch
	var scriptname = window.location.href.toLowerCase();
	if(scriptname.indexOf('dosearch.cfm')>0) {					 
		getListings(null) // post to getsearchresult.cfj will take the new cookie value.
		hidediv("disableDiv");
		hidediv("divSmlPop");
		//writeMyHfmenu();
	}
	else {
		window.location.reload(); 
	}
}

function doSaveSearch(frm) {
	// Called from iframe page myhf_dispEditCriteria.cfm
	if(!fnValidateForm(frm, 0) ) 	return false;
	
	if (document.getElementById("search_name").value == "") {
			alert("Please name your saved search.");
			return false;
	}	
}

function ajLeadCall() {
	var frm = document.forms['leadcall'];
	if (frm.phone1.value.length != 3 || frm.phone2.value.length != 3 || frm.phone3.value.length != 4) {
		alert("Please check your phone number");	
	} else {
		if (frm.member_number.value != '' && frm.agentLeadPhone.value.length == 10) {
			url = buildQS(frm);
			//alert('/_leadtrack/doLeadConnect.cfm?' + url + appendRand());
			doAjx('/_leadtrack/doLeadConnect.cfm?' + url + appendRand(), 'resPhone', false);
		}
	}
}

function ajShowBookmark (fid, sortby) {
	var url = "myhf_divBookmarks.cfm?folder_id="+ fid;
	if (sortby) url += "&sort=" + sortby ;
	//alert(url);
	doAjx(url, 'divBookmarks', false);
}

function changeCnt (divid, aom, cnt) {
	objNum = document.getElementById(divid);
	if (objNum) {
		num = parseInt(objNum.innerHTML);
		if (aom == 'a') {objNum.innerHTML = num + cnt;}
		if (aom == 'm' && num >= cnt) {objNum.innerHTML = num - cnt;}
	}
}

function checkboxValue(frm, ckboxname) {
	var val = '';
	for (x=0; x < frm.elements.length; x++)	{
		if (frm.elements[x].type == 'checkbox' && frm.elements[x].name==ckboxname)	{
			if (frm.elements[x].checked == true) {	
				val += frm.elements[x].value + ",";
			}
		}
	}
	val = val.substring(0,val.length-1);
	//alert(val);
	return val;
}

function ajDeleteBookmark(mlnum, folder,sortby) {
	if(confirm("Are you sure that you want to delete this bookmark?")) {
		qs = "act=del&folder_id=" + folder + "&mlnum=" + mlnum +"&SORT=" + sortby + appendRand();
		doAjxPost("myhf_UpdateBookmark.cfm", qs, 'divBookmarks', false);
		ajShowBookmark (folder,sortby);
		changeCnt ('folder' + folder + 'Cnt', 'm', 1);
		changeCnt ('bktotalCnt', 'm', 1);
	}
}

function ajAddCart(frm, ckbox) {
	listMLNUM = checkboxValue(frm, ckbox);
	if (listMLNUM ==''){
		alert("Please click on checkbox to select a bookmarked listing first.");	
		return false; 
	}
	else{
			aryMLN=listMLNUM.split(',');
			if(aryMLN.length > 8) {
				alert("Please select maximum of 8 listings to put into your cart");	
				return false;
			}
	}
	//alert('popAddToCart.cfm?MLNUMS='+listMLNUM+ appendRand());
	popupURL('popAddToCart.cfm?MLNUMS='+listMLNUM+ appendRand(), '640', '480', '', 1);
}


function ajDeleteBookmarks(frm, ckbox, folder,sortby) {
	
	if (checkboxValue(frm, ckbox) ==''){
		alert("Please click on checkbox to select a bookmarked listing first.");	
		return false;
	}
	aryCk = checkboxValue(frm, ckbox).split(',');
	if(confirm("Are you sure that you want to delete selected bookmarks?")) {
		var qs = buildQS(frm, ckbox);
		qs += "&act=del2";
		doAjxPost("myhf_UpdateBookmark.cfm", qs, '', false);
		ajShowBookmark (folder,sortby);
		changeCnt ('folder' + folder + 'Cnt', 'm', aryCk.length);
		changeCnt ('bktotalCnt', 'm', aryCk.length);
	}
}

function ajMoveBookmark(new_folder_id, frm, ckbox,  folder, sortby) {
	var mlnumVal = checkboxValue(frm, ckbox)
	if (mlnumVal!= '') {
		aryCk = mlnumVal.split(',');
		url = "myhf_UpdateBookmark.cfm?act=MOVE&folder_id="+new_folder_id+ "&listMLNUM=" + mlnumVal + appendRand();
		//document.write(url);
		doAjx(url, '', true);
	//	changeCnt ('folder' + folder + 'Cnt', 'm', aryCk.length);
	//	changeCnt ('folder' + new_folder_id + 'Cnt', 'a', aryCk.length);
	//	ajShowBookmark (folder,sortby);
	}
	else {
		alert ("Please select a property by click on the checkbox.");
		return false;
	}
}

function ajAddFolder () {
	var fname = document.getElementById("folder_name").value;
	if (fname != "") {
		var theURL="myhf_doBookmarkFolder.cfm?ACT=ADD&folder_name=" + fname;
		doAjx(theURL, 'frmFolder', true);
	}
	else {
		alert("Please enter a folder name.");
	}	
}

function ajDeleteFolder (fid) {
	if(confirm("Are you sure that you want to delete this folder and all the bookmarks under this folder?")) {
		doAjx("myhf_doBookmarkFolder.cfm?ACT=DEL&folder_id=" + fid, '', true);
	}
}

function appendRand(qstr) {
	return qstr ? qstr + "&src=" + Math.floor(Math.random()*10000000) :  "&src=" + Math.floor(Math.random()*10000000)
}

function changeContent (divobj, contentpage) {
	// same as doAjx, but pass obj, called by iframe
	//alert(divobj);
	//alert(contentpage);
	var xmlhttp=getHTTPObject();
	xmlhttp.open("GET", contentpage, true);
	xmlhttp.send(null);
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status == 200) {
			if (divobj) {
				divobj.innerHTML = xmlhttp.responseText;
				divobj.style.display = 'block';
			}
		}
	}
}
function doAjx(url, responsediv, needReload) {
	
	var xmlhttp=getHTTPObject();
	
 	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status == 200) {
			if (responsediv != "") {
				document.getElementById(responsediv).innerHTML = xmlhttp.responseText;
				document.getElementById(responsediv).style.display = 'block';
			}
		}
	}
	xmlhttp.open("GET", appendRand(url), true);
	xmlhttp.send(null);
	if (needReload) {
			setTimeout("window.location.reload()",800);
	}
}

function doAjxPost(url, param, responsediv, needReload) {
	var xmlhttp=getHTTPObject();
	
	xmlhttp.onreadystatechange=function() {
		//alert(xmlhttp.readyState);
		if (xmlhttp.readyState==4 ) {
			if (responsediv != "") {
				document.getElementById(responsediv).innerHTML = xmlhttp.responseText;
				document.getElementById(responsediv).style.display = 'block';
				
			}
		}
	}
	xmlhttp.open("POST",url,true);
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", param.length);
	xmlhttp.setRequestHeader("Connection", "close");
	xmlhttp.send(appendRand(param));
	
	if (needReload) {
			setTimeout("window.location.reload()",1000);
	}
}

function buildParam (theForm) {
	frm = theForm; 
    var strQS = '';
	for ( var i=0;i<frm.elements.length;i++) { 
		frmElement = frm.elements[i];
		if (frmElement.name!='') { 
        	switch (frmElement.type){
        		case 'radio':
					if (frmElement.checked) {
						strQS += "&"+ frmElement.name + "=" + frmElement.value;
					}
					break;
				case 'select-multiple':
					var tempQS = ""
					for(var j=1; j < frmElement.options.length; j++) {
						if(frmElement.options[j].selected){
							tempQS += frmElement.options[j].value + ",";
						}
					}
					if (tempQS != "") strQS += "&" + frmElement.name + "=" + tempQS.substring(0,tempQS.length-1);
					break; 
				case 'checkbox':
					if (frmElement.checked ) {
						strQS += "&"+ frmElement.name + "=" + frmElement.value;
					}
					break;
				case 'submit': break;
				case 'button': break;
				case 'reset': break;
				default :
					if (frmElement.value!="") {
					strQS += "&"+ frmElement.name + "=" + escape(frmElement.value);
					}
				break;
			}
        } 
	}
	return  strQS.substring(1, strQS.length);
}

function buildQS(frm, mutiCheckbox) {
    var strQS = '' 
	var aryMultiCheckboxName = [], aryMultiCheckboxVal=[]; 
	
	if (mutiCheckbox) {
		//alert('multicheckbox');
		aryMultiCheckboxName = mutiCheckbox.split(",");
	}
	for (var x=0; x<aryMultiCheckboxName.length; x++) {
		aryMultiCheckboxVal[x] = '';
	}
	
    for ( var i=0;i<frm.elements.length;i++) { 
		frmElement = frm.elements[i];
        if (frmElement.name!='') { 
        	switch (frmElement.type){
        		case 'radio':
					if (frmElement.checked) {
						strQS += "&"+ frmElement.name + "=" + frmElement.value;
					}
					break;
				case 'select-multiple':
					var tempQS = ""
					for(var j=1; j < frmElement.options.length; j++) {
						if(frmElement.options[j].selected){
							tempQS += frmElement.options[j].value + ",";
						}
					}
					if (tempQS != "") strQS += "&" + frmElement.name + "=" + tempQS.substring(0,tempQS.length-1);
					break;
				case 'checkbox':
					if (frmElement.checked && mutiCheckbox.indexOf(frmElement.name) == -1 ) {
						strQS += "&"  + frmElement.name + "=" + frmElement.value;
					} else if (frmElement.checked && mutiCheckbox.indexOf(frmElement.name) != -1 ) {
						for (var x=0; x<aryMultiCheckboxName.length; x++) {
							if (aryMultiCheckboxName[x] == 	frmElement.name ) {
								aryMultiCheckboxVal[x]	= aryMultiCheckboxVal[x]  + frmElement.value+ ",";
							}
						}
					}
					break;
				case 'submit': break;
				case 'button': break;
				case 'reset': break;
				default :
					if (frmElement.value!="") {
					strQS += "&"+ frmElement.name + "=" + escape(frmElement.value);
					}
				break;
			}
        } 
	}
	
	for (var x=0; x<aryMultiCheckboxName.length; x++) {
		if (aryMultiCheckboxVal[x] != "") {
			strQS+= "&"+ aryMultiCheckboxName[x] + "=" + aryMultiCheckboxVal[x].substring(0,  aryMultiCheckboxVal[x].length-1);
		}
	}
    return strQS.substring(1, strQS.length);
}
