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

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

// DATE FUNCTIONS **********************************************************************************************************
function dteGetLeapYear(storeYear) {
	if(!(storeYear%4)) {
		if(storeYear%100) {
			return true;
		} else if(!(storeYear%400)) {
			return true;
		}
	}
	return false;
}
function dteGetNumberOfDays(storeYear,storeMonth) {
	var storeMonthArray=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if(dteGetLeapYear(storeYear)) {
		storeMonthArray[1]=29;
	}
	if((storeYear>1990) && (storeMonth>=0) && (storeMonth<=11)) {
		return parseInt(storeMonthArray[storeMonth]);
	}
	return 0;
}

// FORM FUNCTIONS **********************************************************************************************************
function frmObjSetFocus(docFrmElem, noHighlight) {
	if(docFrmElem) {
		docFrmElem.focus();
		if(!noHighlight && (docFrmElem.type=="text" || docFrmElem.type=="textarea" || docFrmElem.type=="password")) {
			docFrmElem.select();
		} else if(docFrmElem.type=="text" || docFrmElem.type=="textarea" || docFrmElem.type=="password") {
			docFrmElem.value=docFrmElem.value;
		}
	}
}
function frmObjSetFocusPause(docFrmElem, blnDoNotSelect) {
	if(docFrmElem) setTimeout("frmObjSetFocus(document."+docFrmElem.form.name+"['"+docFrmElem.name+"'], "+blnDoNotSelect+")", 250);
}
function frmUpdateCounter(txtValue, intMax) {
	var intCount=0;
	if(!isNaN(intCount=parseInt(txtValue.length)) && !isNaN(parseInt(intMax))) {
		wS("Character count: "+intCount+", Characters left: "+(intMax-intCount));
	}
}
function fPopulateSelect(elObj, arrItems, txtNoOptions, txtOptOne, txtSelectedItem) {
	if(elObj && arrItems) {
		elObj.length=0;
		if(arrItems.length>0) {
			if(txtOptOne && txtOptOne!="") elObj[elObj.length]=new Option(txtOptOne, "");
			for(var i in arrItems) elObj[elObj.length]=new Option(arrItems[i], i, false, (txtSelectedItem && txtSelectedItem==i)); }
		else elObj[elObj.length]=new Option(txtOptOne, ((txtNoOptions)?txtNoOptions:"- There are no items available -")); }
}
function frmPopulateSelect(objSelect, txtNoOptionsText, arrItemsVal, arrItemsTxt, arrItemsSel) {
	var intKey=-1;
	var blnOptionSel=false;
	objSelect.length=0;
	if(arrItemsSel && arrItemsSel.length>0) {
		var blnCheckSelect=true;
	} else {
		var blnCheckSelect=false;
	}
	if(arrItemsVal.length>0) {
		for(var i in arrItemsVal) {
			blnOptionSel=false;
			if(blnCheckSelect) {
				intKey=arrIn(arrItemsVal[i], arrItemsSel);
				blnOptionSel=(intKey!=-1);
			}
			objSelect.options[objSelect.options.length]=new Option(arrItemsTxt[i], arrItemsVal[i], false, blnOptionSel);
		}
	} else if(txtNoOptionsText!="") {
		objSelect.options[objSelect.options.length]=new Option(txtNoOptionsText, 0, false, false);
	}
}

// FORMAT FUNCTION *********************************************************************************************************
function fmtMoney(fltNumeric, blnReturnPoundSymbol) {
	var fltReturn=0;
	if(!isNaN(parseFloat(fltNumeric))) {
		var arrParts=fltNumeric.toString().split(".");
		if(arrParts.length==1) {
			fltReturn=arrParts[0]+".00";
		} else if(arrParts.length==2 && arrParts[1].length==0) {
			fltReturn=arrParts[0]+"."+arrParts[1]+"00";
		} else if(arrParts.length==2 && arrParts[1].length==1) {
			fltReturn=arrParts[0]+"."+arrParts[1]+"0";
		} else if(arrParts.length==2) {
			fltReturn=arrParts[0]+"."+arrParts[1].substring(0, 2);
		}
	}
	return ((blnReturnPoundSymbol)?"£":"")+fltReturn;
}

// IMAGE FUNCTIONS *********************************************************************************************************
var preImg=new Array;
function imgPreload() {
	if(br!="") {
		for(var i=0;i<arguments.length;i++) {
			preImg[i]=new Image();
			preImg[i].src=arguments[i];
		}
	}
}
function imgSwap(imgName, imgSrc) {
	var imgSrcPreSwap="";
	if(br!="") {
		if(document.getElementById(imgName)) {
		
			imgSrcPreSwap=document.getElementById(imgName).src;
			document.getElementById(imgName).src=imgSrc;
		}
	}
	return imgSrcPreSwap;
}
var txtLastImageName=txtLastImageSrc="";
function imgRoll(imgName, imgSrc) {
	if(txtLastImageName!="" && txtLastImageSrc!="") {
		imgSwap(txtLastImageName, txtLastImageSrc);
		txtLastImageName="";
		txtLastImageSrc="";
	}
	if(imgName && imgSrc && imgName!="" && imgSrc!="") {
		txtLastImageSrc=imgSwap(imgName, imgSrc);
		if(txtLastImageSrc!="") {
			txtLastImageName=imgName;
		}
	}
	return true;
}

// LAYER FUNCTIONS *********************************************************************************************************
function layMakeHidden(objLayer) {
	if(docLay) {
		eval(docLay+txtBrack1+"'"+objLayer+"'"+txtBrack2+txtStyle+".visibility='"+txtHide+"';");
	}
}
function layMakeVisible(objLayer) {
	if(docLay) {
		eval(docLay+txtBrack1+"'"+objLayer+"'"+txtBrack2+txtStyle+".visibility='"+txtShow+"';");
	}
}
function layerSetWidth(objLayer, intPixelPos) {
	if(docLay && !isNaN(parseInt(intPixelPos))) {
		eval(docLay+txtBrack1+"'"+objLayer+"'"+txtBrack2+txtStyle+".width="+intPixelPos+";");
	}
}
function layUpdateContent(txtLayer, txtContent) {
	if(br=="IE" || br=="NS6") {
		if(!txtContent) txtContent="";
		eval("if("+docLay+txtBrack1+"'"+txtLayer+"'"+txtBrack2+") "+docLay+txtBrack1+"'"+txtLayer+"'"+txtBrack2+".innerHTML=txtContent;"); }
}

// STYLE FUNCTIONS *********************************************************************************************************
function styleFontColour(obj, hexColourTo) {
	if(docLay && br!="NS") {
		if((typeof obj)=="string") {
			eval("obj="+docLay+txtBrack1+"'"+obj+"'"+txtBrack2+"';");
		}
		eval("obj"+txtStyle+".color='"+hexColourTo+"';");
	}
}
function styleBackColour(obj, hexColourTo) {
	if(docLay && br!="NS") {
		if((typeof obj)=="string") {
			eval("obj="+docLay+txtBrack1+"'"+obj+"'"+txtBrack2+"';");
		}
		eval("obj"+txtStyle+".backgroundColor='"+hexColourTo+"';");
	}
}
function styleDisplayShow(obj) {
	if(docLay && br!="NS") {
		if((typeof obj)=="string") {
			eval("obj="+docLay+txtBrack1+"'"+obj+"'"+txtBrack2+";");
		}
		eval("obj"+txtStyle+".display='block';");
	}
}
function styleDisplayHide(obj) {
	if(docLay && br!="NS") {
		if((typeof obj)=="string") {
			eval("obj="+docLay+txtBrack1+"'"+obj+"'"+txtBrack2+";");
		}
		eval("obj"+txtStyle+".display='none';");
	}
}

// VALIDATION FUNCTIONS ****************************************************************************************************
function valEmail(docFrmElem, txtErrorMsg, blnOptional, blnSuppressErrorMessage, blnSuppressFocus) {
	var blnError=false;
	if(docFrmElem) {
		if(!docFrmElem.value && blnOptional) {
			blnError=false;
		} else {
			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+"'";
				}
				if(!blnSuppressErrorMessage) {
					alert(txtErrorMsg);
				}
				if(!blnSuppressFocus) {
					frmObjSetFocus(docFrmElem);
				}
				blnError=true;
			} else {
				blnError=false;
			}
		}
	} else {
		blnError=true;
	}
	if(blnError) {
		return ((!blnSuppressErrorMessage)?false:txtErrorMsg);
	} else {
		return ((!blnSuppressErrorMessage)?true:"");
	}
}
function valSelect(docFrmElem, txtErrorMsg, blnCheckVal, blnSuppressErrorMessage, blnSuppressFocus) {
	var blnError=false;
	if(docFrmElem) {
		if(docFrmElem.selectedIndex!=-1) {
			blnError=(blnCheckVal)?(docFrmElem.options[docFrmElem.selectedIndex].value==""):((docFrmElem.type=="select-multiple" && docFrmElem.selectedIndex==-1) || (docFrmElem.type=="select-one" && docFrmElem.selectedIndex==0));
		} else {
			blnError=true;
		}
		if(blnError) {
			if(!txtErrorMsg) {
				txtErrorMsg="Error at form entry: '"+docFrmElem.name+"'";
			}
			if(!blnSuppressErrorMessage) {
				alert(txtErrorMsg);
			}
			if(!blnSuppressFocus) {
				frmObjSetFocus(docFrmElem);
			}
		}
	}
	if(blnError) {
		return ((!blnSuppressErrorMessage)?false:txtErrorMsg);
	} else {
		return ((!blnSuppressErrorMessage)?true:"");
	}
}
function valString(docFrmElem, txtErrorMsg, intMin, intMax, blnOptional, blnDisplayCount, blnSuppressErrorMessage, blnSuppressFocus) {
	var blnError=false;
	if(docFrmElem) {
		if(!docFrmElem.value && blnOptional) {
			blnError=false;
		} else {
			if(!intMin) {
				intMin=1;
			}
			if(!intMax) {
				intMax=65536;
			}
			if(!docFrmElem.value || docFrmElem.value.length<intMin || docFrmElem.value.length>intMax) {
				if(!txtErrorMsg) {
					txtErrorMsg="Error at form entry: '"+docFrmElem.name+"'";
				}
				if(!blnSuppressErrorMessage) {
					alert(txtErrorMsg+((blnDisplayCount && docFrmElem.value.length>intMax)?"\n- You have exceeded the maximum character count of "+intMax+" by "+(docFrmElem.value.length-intMax)+" characters!":""));
				}
				if(!blnSuppressFocus) {
					frmObjSetFocus(docFrmElem);
				}
				blnError=true;
			} else {
				blnError=false;
			}
		}
	} else {
		blnError=true;
	}
	if(blnError) {
		return ((!blnSuppressErrorMessage)?false:txtErrorMsg);
	} else {
		return ((!blnSuppressErrorMessage)?true:"");
	}
}
function valDate(docFrmYear, docFrmMonth, docFrmDay, txtErrorMsg, blnSuppressErrorMessage, blnSuppressFocus) {
	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(dteGetNumberOfDays(intYear, intMonth)<intDay) {
			blnError=true;
		}
		if(blnError) {
			if(!txtErrorMsg) {
				txtErrorMsg="Error at form entry: '"+docFrmDay.name+"'";
			}
			if(!blnSuppressErrorMessage) {
				alert(txtErrorMsg);
			}
			if(!blnSuppressFocus) {
				frmObjSetFocus(docFrmDay);
			}
		}
	}
	if(blnError) {
		return ((!blnSuppressErrorMessage)?false:txtErrorMsg);
	} else {
		return ((!blnSuppressErrorMessage)?true:"");
	}
}
function valFileExtension(docFrmElem, txtErrorMsg, blnOptional, blnSuppressErrorMessage, blnSuppressFocus) {
	var blnError=false;
	if(docFrmElem) {
		if(docFrmElem.value=="" && blnOptional) {
			blnError=false;
		} else {
			var splitElement=docFrmElem.value.split(".");
			if(splitElement.length<2) {
				blnError=true;
			} else {
				var fileExtension=splitElement[(splitElement.length-1)].toLowerCase();
				if(arguments.length>3) {
					blnError=true;
					for(var i=5;i<arguments.length;i++) {
					  // CHECK TO SEE IF THE ARGUMENTS PASSED CONTAIN "."
						if(arguments[i].indexOf(".")!=-1 && arguments[i].toLowerCase()=="."+fileExtension) {
							blnError=false;
						} else if(arguments[i].indexOf(".")==-1 && arguments[i].toLowerCase()==fileExtension) {
							blnError=false;
						}
						if(!blnError) {
							break;
						}
					}
				}
			}
		}
		if(blnError) {
			if(!txtErrorMsg) {
				txtErrorMsg="Error at form entry: '"+docFrmDay.name+"'";
			}
			if(!blnSuppressErrorMessage) {
				alert(txtErrorMsg);
			}
			if(!blnSuppressFocus) {
				frmObjSetFocus(docFrmElem);
			}
		}
	}
	if(blnError) {
		return ((!blnSuppressErrorMessage)?false:txtErrorMsg);
	} else {
		return ((!blnSuppressErrorMessage)?true:"");
	}
}
function valFloat(docFrmElem, txtErrorMsg, intMin, intMax, blnOptional, blnSuppressErrorMessage, blnSuppressFocus) {
	var blnError=false;
	if(docFrmElem) {
		if((!docFrmElem.value || docFrmElem.value=='0' || docFrmElem.value=='0.00') && blnOptional) {
			return true;
		}
		if(!intMin) {
			intMin=0;
		}
		if(!intMax) {
			intMax=65536;
		}
		if(isNaN(parseFloat(docFrmElem.value)) || parseFloat(docFrmElem.value)<intMin || parseFloat(docFrmElem.value)>intMax) {
			if(!txtErrorMsg) {
				txtErrorMsg="Error at form entry: '"+docFrmElem.name+"'";
			}
			if(!blnSuppressErrorMessage) {
				alert(txtErrorMsg+((!isNaN(parseFloat(docFrmElem.value)) && parseFloat(docFrmElem.value)>intMax)?"\n- You have exceeded the maximum value of "+intMax+"!":""));
			}
			if(!blnSuppressFocus) {
				frmObjSetFocus(docFrmElem);
			}
			blnError=true;
		} else {
			blnError=false;
		}
	} else {
		blnError=true;
	}
	if(blnError) {
		return ((!blnSuppressErrorMessage)?false:txtErrorMsg);
	} else {
		return ((!blnSuppressErrorMessage)?true:"");
	}
}
function valCheck(docFrmElem, txtErrorMsg, blnSuppressErrorMessage, blnSuppressFocus) {
	var blnError=false;
	if(docFrmElem) {
		if(!docFrmElem.checked) {
			if(!txtErrorMsg) {
				txtErrorMsg="Error at form entry: '"+docFrmElem.name+"'";
			}
			if(!blnSuppressErrorMessage) {
				alert(txtErrorMsg);
			}
			if(!blnSuppressFocus) {
				frmObjSetFocus(docFrmElem);
			}
			blnError=true;
		} else {
			blnError=false;
		}
	} else {
		blnError=false;
	}
	if(blnError) {
		return ((!blnSuppressErrorMessage)?false:txtErrorMsg);
	} else {
		return ((!blnSuppressErrorMessage)?true:"");
	}
}

// WINDOW FUNCTIONS ********************************************************************************************************
var timerID;
function wClose(txtHref) {
	if(window.opener && !window.opener.closed) {
		if(txtHref && txtHref!="") {
			window.opener.location.href=txtHref;
		}
		setTimeout("top.close()", 500);
		window.opener.focus();
	} else if(txtHref) {
		top.location.href=txtHref;
	} else {
		return true;
	}
	return false;
}
function wS(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;
	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;
}
function wN(obj) {
	if(obj) {
		return winNew(obj.target, obj.href);
	} else {
		return true;
	}
}
function winNew(winName, url, theWidth, theHeight, scroll, showToolbar, allowResize, showStatus, showMenubar, showLocation) {
	var txtNewHost="";
	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];
		}
	} else {
		txtNewHost=self.location.hostname;
	}
	window.focus();
	if((br!="IE") && (url.indexOf(".pdf")!=-1 || winName=="winPDF")) {
		top.location.href=url;
		return false;
	}
	if(url) {
		if(url.indexOf(".pdf")!=-1) {
			theWidth=800;
			theHeight=480;
			scroll="yes";
			allowResize="1";
		} else if(self.location.hostname!=txtNewHost && !theWidth && !theHeight) {
			theWidth=800;
			theHeight=490;
			scroll=showToolbar=allowResize=showStatus=showMenubar=showLocation="yes";
			allowResize="1";
		}
		if(!isNaN(parseInt(theWidth)) && !isNaN(parseInt(theHeight))) {
			params="width="+theWidth+",height="+theHeight+",left="+((screen.width)?(screen.width-theWidth)/2:0)+",top="+((screen.height)?((screen.height-theHeight)/2)-30:0)+",scrollbars="+((scroll)?scroll:"no")+",toolbar="+((showToolbar)?showToolbar:"no")+",resizable="+((allowResize)?allowResize:"no")+",status="+((showStatus)?showStatus:"no")+",menubar="+((showMenubar)?showMenubar:"no")+",location="+((showLocation)?showLocation:"no");
			popupName=window.open(url, winName, params);
			if(popupName) {
				popupName.focus();
			}
			return false;
		}
	}
	return true;
}
function wReturnWidth() {
	if(br=="IE") {
		return document.body.offsetWidth;
	} else if(br=="NS6" || br=="NS") {
		return window.innerWidth;
	} else {
		return 0;
	}
}
function wReturnHeight() {
	if(br=="IE") {
		return document.body.offsetHeight;
	} else if(br=="NS6" || br=="NS") {
		return window.innerHeight;
	} else {
		return 0;
	}
}
