//******************************************************************************** GLOBAL VARIABLES
var br=brPlatform="";
var docLay="";
if(navigator.appVersion.indexOf("Win")!=-1) var brPlatform="windows";
else var brPlatform="Other";
if(document.getElementById) {
	docLay="document.getElementById";
	if(navigator.appName=="Microsoft Internet Explorer") br="IE";
	else br="NS6";
	var txtBrack1="(";
	var txtBrack2=")";
	var txtStyle=".style";
	var txtShow="visible";
	var txtHide="hidden"; }
else if(document.all) {
	br="IE";
	docLay="document.all";
	var txtBrack1="[";
	var txtBrack2="]";
	var txtStyle=".style";
	var txtShow="visible";
	var txtHide="hidden"; }
else if(document.layers) {
	br="NS";
	docLay="document.layers";
	var txtBrack1="[";
	var txtBrack2="]";
	var txtStyle="";
	var txtShow="show";
	var txtHide="hide"; }

//********************************************************************************** ARRAY FUNCTION
function inArray(needle, haystack) {
	var returnKey=-1;
	for(var i in haystack) {
		if(haystack[i]==needle) returnKey=i; }
	return returnKey;
}

//********************************************************************************** FORM FUNCTIONS
function frmObjSetFocus(docFrmElem, blnMoveCursorToEnd) {
	if(docFrmElem) {
		docFrmElem.focus();
		if(docFrmElem.type=="text" || docFrmElem.type=="textarea" || docFrmElem.type=="password") {
			if(blnMoveCursorToEnd) docFrmElem.value=docFrmElem.value;
			else docFrmElem.select(); } }
}
function updateChecks(frmObj, frmObjElMatch, frmObjElAll, blnOnAll) {
	if(frmObj && frmObjElMatch.indexOf("[")!=-1 && frmObjElMatch.indexOf("]")!=-1 && frmObjElAll!="") {
		if(blnOnAll) {
			for(var i=0;i<frmObj.elements.length;i++) {
				if(frmObj.elements[i].name.indexOf(frmObjElMatch)!=-1 && frmObj.elements[i].type=="checkbox") frmObj.elements[i].checked=false; } }
		else {
			var intCount=0;
			var intTotalChecked=0;
			for(var i=0;i<frmObj.elements.length;i++) {
				if(frmObj.elements[i].name.indexOf(frmObjElMatch)!=-1 && frmObj.elements[i].type=="checkbox") {
					intTotalChecked++;
					if(frmObj.elements[i].checked) intCount++; } }
			if(intCount==0) frmObj[frmObjElAll].checked=true;
			else if(intCount==intTotalChecked) {
				frmObj[frmObjElAll].checked=true;
				updateChecks(frmObj, frmObjElMatch, frmObjElAll, true); }
			else frmObj[frmObjElAll].checked=false; } }
}
var arrSelPropertyTypes=new Array();
function updateSel(objSelToUpdate, arrName, selOption, txtFirstItem) {
	var tmpArray=arrName;
	if(!txtFirstItem) txtFirstItem="";
	objSelToUpdate.length=0;
	var intKey=-1;
	var blnSel;

	if(txtFirstItem!="") objSelToUpdate.options[objSelToUpdate.length]=new Option(txtFirstItem, "");
	for(var i in tmpArray) {
		intKey=inArray(i, arrSelPropertyTypes);
		blnSel=(selOption && intKey!=-1);
//		var arrKey = tmpArray[i].replace("'", "").replace(/,/g, "").replace(/\D*/g, "");
		var arrKey = i;
		objSelToUpdate.options[objSelToUpdate.length]=new Option(tmpArray[i], arrKey, false, blnSel);
	}
}
function methodChanged(frmObjEl, varPosted) {
	if(!frmObjEl) return false;
	if( (frmObjEl.options[frmObjEl.selectedIndex].value==3 || frmObjEl.options[frmObjEl.selectedIndex].value==4)  &&  frmObjEl.form['frmPropertyType[]']) updateSel(frmObjEl.form['frmPropertyType[]'], arrCommercialTypes, varPosted);
	else if(frmObjEl.options[frmObjEl.selectedIndex].value!=""  &&  frmObjEl.form['frmPropertyType[]']) updateSel(frmObjEl.form['frmPropertyType[]'], arrPropertyTypes, varPosted);
	if( (frmObjEl.options[frmObjEl.selectedIndex].value==2 || frmObjEl.options[frmObjEl.selectedIndex].value==4)  &&  frmObjEl.form.frmRentalType) {
		frmObjEl.form.frmRentalType.disabled=false;
		if(frmObjEl.form.frmRentalType && frmObjEl.form.frmRentalType.selectedIndex==(frmObjEl.form.frmRentalType.length-1)) frmObjEl.form.frmRentalType.selectedIndex=0; }
	else if(frmObjEl.form.frmRentalType) {
		frmObjEl.form.frmRentalType.selectedIndex=(frmObjEl.form.frmRentalType.length-1);
		frmObjEl.form.frmRentalType.disabled=true; }
}
function reviewLettingOptions(frmObjEl) {
	var possibleLettingInputs = new Array(
		"frmGarden",
		"frmParking",
		"frmSmokers",
		"frmChildren",
		"frmPets"
	);
	var buying_selected = frmObjEl.options[frmObjEl.selectedIndex].value;
	buying_selected = (buying_selected == 1  ||  buying_selected == 3);
	for(var i=0; i<possibleLettingInputs.length; i++) {
		if(!document.frm  ||  !document.frm[possibleLettingInputs[i]]) {
			continue;
		}
		var inputObj = document.frm[possibleLettingInputs[i]];
		inputObj.disabled = buying_selected;
		if(!buying_selected) {
			continue;
		}
		if(inputObj.type == "select-one"  ||  inputObj.type == "select-multiple") {
			if(inputObj.options[inputObj.options.length-1].value == "n/a") {
				inputObj.selectedIndex = (inputObj.options.length-1);
			} else if(inputObj.type == "select-one") {
				inputObj.selectedIndex = 0;
			} else if(inputObj.type == "select-multiple") {
				inputObj.selectedIndex = -1;
			}
		}
	}
}

//********************************************************************************* IMAGE FUNCTIONS
var myImages=new Array;
var preImages=new Array;
function imgPreload() {
	if(br!="") {
		for(var i=0;i<myImages.length;i++) {
			preImages[i]=new Image();
			preImages[i].src=myImages[i]; } }
}
var movieHTML = "";
function imgSwap(imgName, imgSrc, imgWidth, imgHeight, imgContainerID) {
	if(slideshowtimer) {
		clearTimeout(slideshowtimer);
	}
	if(br == "") {
		return false;
	}
	if(imgName == "movie") {
		if(movieHTML == "") {
			return false;
		}
		if(!document.getElementById(imgContainerID)) {
			return false;
		}
		document.getElementById(imgContainerID).innerHTML = movieHTML;
		return false;
	}
	if(document[imgName]) {
		document[imgName].src=imgSrc;
		if(imgWidth && imgHeight) {
			if(document[imgName].width!=imgWidth) {
				document[imgName].width=imgWidth;
			}
			if(document[imgName].height!=imgHeight) {
				document[imgName].height=imgHeight;
			}
		}
		return false;
	}
	if(document.getElementById(imgContainerID)) {
		movieHTML = document.getElementById(imgContainerID).innerHTML;
		document.getElementById(imgContainerID).innerHTML = '<img src="' + imgSrc + '" width="' + imgWidth + '" height="' + imgHeight + '" alt="" name="' + imgName + '" />';
		return false;
	}
}

//********************************************************************************* LAYER FUNCTIONS
function layerMakeHidden(objLayer) {
	if(docLay) eval(docLay+txtBrack1+"'"+objLayer+"'"+txtBrack2+txtStyle+".visibility='"+txtHide+"';");
}
function layerMakeVisible(objLayer) {
	if(docLay) eval(docLay+txtBrack1+"'"+objLayer+"'"+txtBrack2+txtStyle+".visibility='"+txtShow+"';");
}

//**************************************************************************** VALIDATION FUNCTIONS
function validateEmail(docFrmElem, txtErrorMsg, blnOptional) {
	if(docFrmElem) {
		if(!docFrmElem.value && blnOptional) return true;
		var regExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/;
		if(!regExp.test(docFrmElem.value)) {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmElem.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmElem);
			return false; }
		return true; }
	else return false;
}
function validateSelect(docFrmElem, txtErrorMsg, blnCheckVal) {
	if(docFrmElem) {
		var blnError=false;
		if(docFrmElem.type=="select-multiple" && docFrmElem.selectedIndex==-1) blnError=true;
		if(!blnError) blnError=(blnCheckVal)?(docFrmElem.options[docFrmElem.selectedIndex].value==""):((docFrmElem.type=="select-multiple" && docFrmElem.selectedIndex==-1) || (docFrmElem.type=="select-one" && docFrmElem.selectedIndex==0));
		if(blnError) {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmElem.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmElem);
			return false; }
		return true; }
	else return false;
}
function validateString(docFrmElem, txtErrorMsg, intMin, intMax, blnOptional) {
	if(docFrmElem) {
		if(!docFrmElem.value && blnOptional) return true;
		if(!intMin) intMin=1;
		if(!intMax) intMax=16777216;
		if(!docFrmElem.value || docFrmElem.value.length<intMin || docFrmElem.value.length>intMax) {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmElem.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmElem);
			return false; }
		return true; }
	else return false;
}
function validateCheck(docFrmElem, txtErrorMsg) {
	if(docFrmElem) {
		if(!docFrmElem.checked)  {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmElem.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmElem);
			return false; }
		return true; }
	else return false;
}

//******************************************************************************** WINDOW FUNCTIONS
function winStatus(txt) {
// NETSCAPE 6 WILL OVER-RIDE THE STATUS BAR TEXT WITH THE URL IF THERE IS NOT A SLIGHT DELAY!
// - HOPEFULLY THIS WILL BE SORTED OUT IN THE FUTURE!?
	var displayMe, timerID;
	if(txt) {
		displayMe = txt;
	} else {
		displayMe = "";
	}
	if(timerID) {
		clearTimeout(timerID);
	}
	if(br=="NS6") {
		displayMe = displayMe.replace(/'/g, '\\\'');
		timerID = setTimeout("window.status='" + displayMe + "'", 1);
	} else {
		window.status = displayMe;
	}
	return true;
}
var popupName;
function winNew(winName, url, theWidth, theHeight, scroll, showToolbar, allowResize, showStatus, showMenubar, showLocation) {
	var txtNewHost="";
  // CHECK TO SEE IF THIS IS AN EXTERNAL URL
	if(url.indexOf("http")!=-1) {
	  // THIS IS USED SO WE CAN ALWAYS GIVE "FOCUS" TO POPUP (EVEN EXTERNAL)
		var arrItems=url.split(/\//, 2);
		if(arrItems.length>=2) {
			txtNewHost=arrItems[1];
		  // MAKE SURE WE'VE GOT RID OF ANY EMBEDDED USERNAME/PASSWORDS
			var arrURL=txtNewHost.split(/@/, 2);
			if(arrURL.length==2) txtNewHost=arrURL[1];
			else if(arrURL.length==1) txtNewHost=arrURL[0]; } }
	if(txtNewHost=="") txtNewHost=self.location.hostname;
	if((br!="IE") && (url.indexOf(".pdf")!=-1)) {
		top.location.href=url;
		return false; }
	if(url) {
		if(url.indexOf(".pdf")!=-1) {
			theWidth=770;
			theHeight=550;
			scroll="yes";
			allowResize="yes"; }
		else if(winName.indexOf("winAdminPreview")!=-1) {
			theWidth=624;
			theHeight=420;
			scroll="yes"; }
		else if(self.location.hostname!=txtNewHost) {
			theWidth=798;
			theHeight=520;
			scroll=showToolbar=allowResize=showStatus=showMenubar=showLocation="yes";
			allowResize="1"; }
		if(!isNaN(parseInt(theWidth)) && !isNaN(parseInt(theHeight))) {
			intLeft=(screen.width)?(screen.width-theWidth)/2:0;
			if(self.location.hostname!=txtNewHost) intTop=10;
			else intTop=(screen.height)?(screen.height-theHeight)/2:0;
			params="width="+theWidth+",height="+theHeight+",left="+intLeft+",top="+intTop+",scrollbars=";
			params+= (scroll) ? scroll:"no";
			params+=",toolbar=";
			params+= (showToolbar) ? showToolbar:"no";
			params+=",resizable=";
			params+= (allowResize) ? allowResize:"no";
			params+=",status=";
			params+= (showStatus) ? showStatus:"no";
			params+=",menubar=";
			params+= (showMenubar) ? showMenubar:"no";
			params+=",location=";
			params+= (showLocation) ? showLocation:"no";
			popupName=window.open(url, winName, params);
			if(popupName) popupName.focus();
			return false; } }
	if(!popupName) return true;
}
function winFitPicture(intImgW, intImgH) {
	if(brPlatform=="Windows") {
//		var iWidth=(br=="NS")?window.innerWidth:document.body.clientWidth;
//		var iHeight=(br=="NS")?window.innerHeight:document.body.clientHeight;
		var iWidth=winReturnWidth();
		var iHeight=winReturnHeight();
		if(!intImgW || !intImgH) {
		  // CALCULATE WIDTH & HEIGHT
			if(document.images[0].width<=screen.width && document.images[0].height<=screen.height) {
				iWidth=document.images[0].width-iWidth;
				iHeight=document.images[0].height-iHeight; }
			else iWidth=iHeight=0; }
		else {
			if(intImgW<=screen.width && intImgH<=screen.height) {
				iWidth=intImgW-iWidth;
				iHeight=intImgH-iHeight; }
			else iWidth=iHeight=0; }
		window.resizeBy(iWidth, iHeight); }
}
function winPrint() {
	if(window.print) {
		window.print();
		return false; }
	else {
		alert("Your browser does not support this feature. You should be\n"+
		  "able to print using the menu which appears when you\n"+
		  "right click this page.\n \n"+
		  "Upgrade to either Netscape 4 or Internet Explorer 5 to make\n"+
		  "the Print button work (this software is usually available\n"+
		  "on any computer magazine coverdisk, or can be downloaded\n"+
		  "from the Internet if you have a fast connection)."); }
}
function winReturnWidth() {
	if(br=="IE") return document.body.offsetWidth;
	else if(br=="NS6" || br=="NS") return window.innerWidth;
	else return 0;
}
function winReturnHeight() {
	if(br=="IE") return document.body.offsetHeight;
	else if(br=="NS6" || br=="NS") return window.innerHeight;
	else return 0;
}
function closePopup(newURL, openinparent) {
	if(!newURL || newURL=="") {
		newURL="/";
	}
	if(window.opener && !window.opener.closed) {
		if(openinparent) {
			window.opener.location.href=newURL;
			window.opener.focus();
			setTimeout("top.close();", 1000);
		} else {
			window.opener.focus();
			top.close();
		}
	} else {
		top.location.href=newURL;
	}
}

//************************************************************************** ESTATE AGENT FUNCTIONS
function updateCounties(frmObjElem, txtIslandName, displayAll) {
	frmObjElem.length=1;
	if(displayAll) {
		frmObjElem.options[frmObjElem.length]=new Option("Any Parish / County", "ALL");
	}
	if(txtIslandName && txtIslandName!="" && arrCounties[txtIslandName]) {
		for(var key2 in arrCounties[txtIslandName]) {
			frmObjElem.options[frmObjElem.length]=new Option(arrCounties[txtIslandName][key2], arrCounties[txtIslandName][key2]); } }
	else {
		for(var key in arrCounties) {
			frmObjElem.options[frmObjElem.length]=new Option(" ", "");
			frmObjElem.options[frmObjElem.length]=new Option(key, "");
			frmObjElem.options[frmObjElem.length]=new Option("--------------------", "");
			for(var key2 in arrCounties[key]) {
				frmObjElem.options[frmObjElem.length]=new Option(arrCounties[key][key2], arrCounties[key][key2]); } } }
}
var arrPricesBuy=new Array(), arrPricesRent=new Array(), arrPricesFrance=new Array();
var chrLastSelected="";
function updatePriceRanges(frmBuyRent, txtOption1) {
  // MAKE SURE THE NECESSARY ARRAYS EXIST AND HAVE DATA
	if(arrPricesBuy.length>0 && arrPricesRent.length>0) {
		var disableQualDropDown = false;
		var arrPrices=new Array();
		var tmpLastSelected="";
		if(frmBuyRent.value=="B" && frmBuyRent.checked) {
		  // UPDATE PRICE DROPDOWNS TO ONLY DISPLAY PURCHASE PRICES
			tmpLastSelected="B";
			arrPrices=arrPricesBuy;
		} else if(frmBuyRent.value=="R" && frmBuyRent.checked) {
		  // UPDATE PRICE DROPDOWNS TO ONLY DISPLAY RENTAL PRICES
			tmpLastSelected="R";
			arrPrices=arrPricesRent;
		} else if((frmBuyRent.value=="4"  ||  frmBuyRent.value=="France") && frmBuyRent.checked) {
		  // UPDATE PRICE DROPDOWNS TO ONLY DISPLAY EURO PRICES
			tmpLastSelected="4";
			arrPrices=arrPricesFrance;
		  // IF FRANCE IS SELECTED MAKE SURE THE QUALIFICATION DROP-DOWN IS DISABLED
			disableQualDropDown = true;
		} else {
			// DEFAULT OPTION
			arrPrices=arrPricesBuy;
		}
	  // CHECK TO SEE IF WE'RE SUPPOSED TO UPDATE THE DROP-DOWNS
		if(chrLastSelected!=tmpLastSelected && arrPrices.length>0) {
			chrLastSelected=tmpLastSelected;
			if(!txtOption1) txtOption1="";
			if(frmBuyRent.form.prMa) updateSel(frmBuyRent.form.prMa, arrPrices, frmBuyRent.form.prMa.selectedIndex, "Max Price"+((txtOption1=="")?"":": "+txtOption1)+"...");
			if(frmBuyRent.form.prMi) updateSel(frmBuyRent.form.prMi, arrPrices, frmBuyRent.form.prMi.selectedIndex, "Min Price"+((txtOption1=="")?"":": "+txtOption1)+"...");
		}
	  // DISABLE QUALIFICATION DROP-DOWN (IF IT EXISTS)
		if(document.getElementById('prHC')) {
			document.getElementById('prHC').disabled = disableQualDropDown;
		}
	  // CHECK TO SEE IF WE NEED TO UPDATE THE COUNTY OPTIONS
		if(document.getElementById('prC')) {
			var objSel = document.getElementById('prC');
			// This is necessary to make sure the 'optgroup' objects are removed
			while(objSel.hasChildNodes()) {
				objSel.removeChild(objSel.firstChild);
			}
			if(tmpLastSelected == "4") {
				var source_county_list = arrCountiesFrance;
			} else {
				var source_county_list = arrCounties;
			}
			for(var i=0; i<source_county_list.length; i++) {
				objSel.options[objSel.options.length] = new Option(source_county_list[i], source_county_list[i]);
			}
		}
	}
}
function updateQuals(frmObjElem, txtIslandName) {
	frmObjElem.length=0;
	if(txtIslandName && txtIslandName!="" && arrQuals[txtIslandName]) {
		var blnSel;
		var tmpQual=((frmObjElem.form.origHousingCat)?frmObjElem.form.origHousingCat.value:"");
		frmObjElem.options[frmObjElem.length]=new Option(((txtIslandName=="Guernsey")?"Market":"Qualification")+"...", "");
		for(var key2 in arrQuals[txtIslandName]) {
			blnSel=(tmpQual==key2);
			frmObjElem.options[frmObjElem.length]=new Option(arrQuals[txtIslandName][key2], key2, blnSel, blnSel); } }
	else {
		frmObjElem.options[frmObjElem.length]=new Option("Market/Qual...", "");
		frmObjElem.options[frmObjElem.length]=new Option("N/A", "", true, true); }
}
var arrCounties=new Array(), arrQuals=new Array();

//******************************************************************************* ANNOYING FUNCTION
function click(e) {
	var txtMessage="The right-click is disabled.\nIf you require any imagery please contact us for more information.";
	if(document.all) {
		if((event.button==2) || (event.button==3)) {
		window.alert(txtMessage);
		return false; } }
	if(document.layers) {
		if(e.which==3) {
		window.alert(txtMessage);
		return false; } }
}
if(document.location.pathname.indexOf("/admin/")==-1 && top.location.hostname.indexOf(".local")==-1) {
	if(document.layers) document.captureEvents(Event.MOUSEDOWN);
	document.onmousedown=click; }

//***************************************************************************** SLIDESHOW FUNCTIONS
var preload_image_objects = new Array();
var preload_image_counter = 0;
var slideshowtimer;
function slideshow() {
	var img = document.images['imgLarge'];
	if(!img) {
		alert('Sorry, but the slideshow is unavailable');
		return false;
	}
	if(!preload_image_objects[preload_image_counter]) {
		alert('Sorry, but the slideshow is unavailable');
		return false;
	}
	img.src = preload_image_objects[preload_image_counter].src;
	preload_image_counter++;
	if(preload_image_counter >= preload_image_objects.length) {
		preload_image_counter = 0;
	}
	if(slideshowtimer) {
		clearTimeout(slideshowtimer);
	}
	slideshowtimer = setTimeout("slideshow()", 2000);
}
function preload_slideshow() {
	for(var i=0; i<arguments.length; i++) {
		preload_image_objects[i] = new Image();
		preload_image_objects[i].src = arguments[i];
	}
}

//************************************************************ AJAX FUNCTIONS (USING SCRIPTACULOUS)
var storeFeaturedPropertyHTML = "";
var storeFeaturedPropertyData_key = 0;
var storeFeaturedPropertyData = new Array();
var featuredPropertyTimer;
var featuredPropertyTimerMilliSeconds = 10000;
function triggerFeaturedProperties() {
	var storeFeaturedPropertyData_key = Math.floor(Math.random() * storeFeaturedPropertyData.length);
	featuredPropertyTimer = setTimeout("updateFeaturedProperty()", featuredPropertyTimerMilliSeconds);
}
function updateFeaturedProperty() {
	clearTimeout(featuredPropertyTimer); // Just incase!
	storeFeaturedPropertyData_key++;
	if(storeFeaturedPropertyData_key >= storeFeaturedPropertyData.length) {
		storeFeaturedPropertyData_key = 0;
	}
	new Effect.Fade('featuredproperty', {
		duration:1,
		afterFinish:function() {
			var newHTML = storeFeaturedPropertyHTML;
			newHTML = newHTML.replace('{PROPERTY_ID}', storeFeaturedPropertyData[storeFeaturedPropertyData_key][0]);
			newHTML = newHTML.replace('{PROPERTY_ID}', storeFeaturedPropertyData[storeFeaturedPropertyData_key][0]);
			newHTML = newHTML.replace('{PROPERTY_TITLE}', storeFeaturedPropertyData[storeFeaturedPropertyData_key][1]);
			newHTML = newHTML.replace('{PROPERTY_ABSTRACT}', storeFeaturedPropertyData[storeFeaturedPropertyData_key][2]);
			newHTML = newHTML.replace('{PROPERTY_IMAGE}', storeFeaturedPropertyData[storeFeaturedPropertyData_key][3]);
			$('featuredproperty').innerHTML = newHTML;
			new Effect.Appear('featuredproperty', {
				duration:1,
				afterFinish:function() {
					featuredPropertyTimer = setTimeout("updateFeaturedProperty()", featuredPropertyTimerMilliSeconds);
				}
			});
		}
	});
}

