//******************************************************************************** GLOBAL VARIABLES
var redirectTo="http://www.gillbornassociates.com";
var allowedURLs=new String("www.gillbornassociates.local,www.gillbornassociates.com,www.gillborn.com,www.gillborn.co.uk");
eval("var myRE = /"+top.location.hostname+"\\b/i \n"+
  "if(!myRE.test(allowedURLs)) top.location.href=redirectTo;");

var br=brPlatform="";
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";
		var winLay="document.body";
		var txtLeftPos=".pixelLeft";
		var txtTopPos=".pixelTop";
		var txtWinWidth=".offsetWidth";
		var txtWinHeight=".offsetHeight"; }
	else {
		br="NS6";
		var winLay="document.body";
		var winLay="window";
		var txtLeftPos=".left";
		var txtTopPos=".top";
		var txtWinWidth=".innerWidth";
		var txtWinHeight=".innerHeight"; }
	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";
	var winLay="document.body";
	var txtLeftPos=".pixelLeft";
	var txtTopPos=".pixelTop";
	var txtWinWidth=".offsetWidth";
	var txtWinHeight=".offsetHeight"; }
else if(document.layers) {
	br="NS";
	docLay="document.layers";
	var txtBrack1="[";
	var txtBrack2="]";
	var txtStyle="";
	var txtShow="show";
	var txtHide="hide";
	var winLay="document.body";
	var winLay="window";
	var txtLeftPos=".left";
	var txtTopPos=".top";
	var txtWinWidth=".innerWidth";
	var txtWinHeight=".innerHeight"; }

//********************************************************************************** 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) {
	if(docFrmElem) {
		docFrmElem.focus();
		if(docFrmElem.type=="text" || docFrmElem.type=="textarea" || docFrmElem.type=="password") docFrmElem.select(); }
}
function formUpdateCounter(txtValue, intMax) {
	var intCount=0;
	if(!isNaN(intCount=parseInt(txtValue.length)) && !isNaN(parseInt(intMax))) winStatus("Character count: "+intCount+", Characters left: "+(intMax-intCount));
}
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;
			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) intCount++; }
			if(intCount==0) frmObj[frmObjElAll].checked=true;
			else frmObj[frmObjElAll].checked=false; } }
}

//********************************************************************************* 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]; } }
}
function imgSwap(imgName, imgSrc, imgWidth, imgHeight) {
	if(br!="") {
		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; } }
}

//********************************************************************************* 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 getLeapYear(storeYear) {
	if(!(storeYear%4)) {
		if(storeYear%100) return true;
		else if(!(storeYear%400)) return true; }
	return false;
}
function getNumberOfDays(storeYear,storeMonth) {
	var storeMonthArray=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if(getLeapYear(storeYear)) storeMonthArray[1]=29;
	if((storeYear>1990) && (storeMonth>=0) && (storeMonth<=11)) return parseInt(storeMonthArray[storeMonth]);
	return 0;
}
function validateDate(docFrmYear, docFrmMonth, docFrmDay, txtErrorMsg) {
	var blnError=false;
	if(docFrmYear && docFrmMonth && docFrmDay) {
		var intYear=docFrmYear.options[docFrmYear.selectedIndex].value;
		var intMonth=docFrmMonth.options[docFrmMonth.selectedIndex].value-1;
		var intDay=docFrmDay.options[docFrmDay.selectedIndex].value;
		if(isNaN(parseInt(intYear)) || isNaN(parseInt(intMonth)) || isNaN(parseInt(intDay))) blnError=true;
		else if((parseInt(intYear)<1990) || (parseInt(intMonth)<0) || (parseInt(intMonth)>11) || (parseInt(intDay)<1) || (parseInt(intDay)>31)) blnError=true;
		else if(getNumberOfDays(intYear, intMonth)<intDay) blnError=true;
		if(blnError) {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmDay.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmDay);
			return false; }
		else return true; }
	else return false;
}
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 validateImageRef(docFrmElem, txtErrorMsg, blnOptional) {
	var blnError=false;
	if(docFrmElem) {
		if(docFrmElem.value=="" && blnOptional) return true;
		else {
			var splitElement=docFrmElem.value.split(".");
			var fileExtension=splitElement[(splitElement.length-1)];
			if(splitElement.length!=2) blnError=true;
			else if((fileExtension!="gif") && (fileExtension!="jpg") && (fileExtension!="jpeg")) blnError=true; }
		if(blnError) {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmDay.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmElem);
			return false; }
		else return true; }
	return false;
}
function validateSelect(docFrmElem, txtErrorMsg, blnCheckVal) {
	if(docFrmElem) {
		var 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=255;
		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 validateURL(docFrmElem, txtErrorMsg, blnOptional) {
	var blnError=false;
	if(docFrmElem) {
		if(docFrmElem.value=="" && blnOptional) return true;
		else {
			var splitElement=docFrmElem.value.split("://");
			if(splitElement.length!=2) blnError=true;
			else if((splitElement[0]!="http" && splitElement[0]!="https") || (splitElement[1].length<6)) blnError=true;
			else {
				var splitElement2=splitElement[1].split(".");
				if(splitElement2.length<3) blnError=true;
				else if((splitElement2[0].length<2) || (splitElement2[1].length<2) || (splitElement2[2].length<2)) blnError=true; }
			if(blnError) {
				if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmDay.name+"'";
				alert(txtErrorMsg);
				frmObjSetFocus(docFrmElem);
				return false; }
			else return true; } }
	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") 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; }
		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);
			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) {
	if(!newURL || newURL=="") newURL="/";
	if(window.opener) {
		window.opener.focus();
		top.close(); }
	else top.location.href=newURL;
}

//******************************************************************************* 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!="www.gillbornassociates.local") {
	if(document.layers) document.captureEvents(Event.MOUSEDOWN);
	document.onmousedown=click; }
