function Is() {
  agent       = navigator.userAgent.toLowerCase();
  this.major  = parseInt(navigator.appVersion);
  this.minor  = parseFloat(navigator.appVersion);
  this.ns     = ((agent.indexOf('mozilla')   != -1) &&
                (agent.indexOf('spoofer')    == -1) &&
                (agent.indexOf('compatible') == -1) &&
                (agent.indexOf('opera')      == -1) &&
                (agent.indexOf('webtv')      == -1) &&
                (agent.indexOf('hotjava')    == -1) &&
      (agent.indexOf("msie")  == -1));
  this.ns2    = (this.ns && (this.major      ==  2));
  this.ns3    = (this.ns && (this.major      ==  3));
  this.ns4    = (this.ns && (this.major      ==  4));
  this.ns6    = (this.ns && (this.major      >=  5));
  this.ie     = ((agent.indexOf("msie")      != -1) &&
                (agent.indexOf("opera")      == -1));
  this.ie3    = (this.ie && (this.major      <   4));
  this.ie4    = (this.ie && (this.major      ==  4) &&
                (agent.indexOf("msie 4")     != -1));
  this.ie5    = (this.ie && (this.major      ==  4) &&
                (agent.indexOf("msie 5")     != -1) &&
                (agent.indexOf("msie 5.5")   == -1) &&
                (agent.indexOf("mac")        == -1));
  this.iem5   = (this.ie && (this.major      ==  4) &&
                (agent.indexOf("msie 5.")    != -1) &&
               (agent.indexOf("mac")        != -1));
  this.ie55   = (this.ie && (this.major      ==  4) &&
                (agent.indexOf("msie 5.5")   != -1));
  this.ie6    = (this.ie && (this.major      ==  4) &&
                (agent.indexOf("msie 6")     != -1 || agent.indexOf("msie 7") != -1 || agent.indexOf("msie 8") != -1));
  
  this.moz = (agent.indexOf("gecko")!= -1)
  this.nsdom  = (this.ns4  || this.ns6);
  this.win = (agent.indexOf("win") != -1);
  this.iestrict = (this.win && this.ie6 && document.compatMode == "CSS1Compat");
  this.macstrict = (this.ie5 && this.iemac && document.doctype && document.doctype.name.indexOf(".dtd") != -1);
  this.strict = (this.iestrict || this.macstrict);
  this.iemac =(this.iem5);
  this.iewin = ((this.ie5 && !this.iemac || this.ie55 || this.ie6) && this.win);
  this.dom = (this.iewin || this.ns6 || this.moz);
}
var is = new Is();
var css_px = (is.ns4 || is.ie4) ?"" : "px";

if (is.iewin) {var ga=document.all; var pga=parent.document.all};

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function RollButton(Idy,dest) {
if (is.iewin) {eval('document.all.'+Idy+'.background=dest;')};
if (is.moz) {eval('document.getElementById("'+Idy+'").style.backgroundImage="url("+dest+")";')};
}

// section below sorts INFOLINK array into alphabetical order (by TITLE) and creates sorted array SortedInfoLinks[j][0 to 8]
var TotalNumberOfInfoLinks = INFOLINK.length ;

var Sort1=new Array();
var SortedInfoLinks=new Array();
	for (l=0; l<TotalNumberOfInfoLinks; l++) {SortedInfoLinks[l] = new Array()};
	for (j=0; j<TotalNumberOfInfoLinks; j++) {Sort1[j]=INFOLINK[j][0]};
	Sort1.sort();
	for (k=0; k<TotalNumberOfInfoLinks; k++) {
		for (j=0; j<TotalNumberOfInfoLinks; j++) {
			if (Sort1[k]==INFOLINK[j][0]){
				for (m=0; m<INFOLINK[0].length; m++) {SortedInfoLinks[k][m]=INFOLINK[j][m];}
									}
		}
	};
// EO array sorting	

/* removing InfoLinks who have display field [4] set to 0 from sorted array */
	var check=0;
	var ink=0;
	var TempArray=new Array();
	for (j=0; j<TotalNumberOfInfoLinks; j++) {
		if (SortedInfoLinks[j][4]==1){check=check+1};
		if (check > 0) {check=0;
		TempArray[ink] = new Array();
		TempArray[ink]=SortedInfoLinks[j];
		ink=ink+1;};
	};
	TotalNumberOfInfoLinks=TempArray.length;
/* EO removing InfoLinks who have all areas set to 0 (ie. not displaying AD) from sorted array */

// block for periodically offseting  SortedInfoLinks array into ShiftedInfoLinks array
	var NowDate = new Date();
	var StartDate = new Date();
	StartDate.setMonth(0);StartDate.setFullYear(2008);StartDate.setDate(1);StartDate.setHours(0);StartDate.setMinutes(0);
	var MinutesSinceStartDate=((NowDate-StartDate)/(1000*(60*PeriodInMinutes)));
	var xx=(MinutesSinceStartDate/TotalNumberOfInfoLinks);
	var offset=(Math.round((xx-Math.floor(xx))*TotalNumberOfInfoLinks));  
	//offset is a value 0 to TotalNumberOfInfoLinks-1, changes every PeriodInMinutes
	var ShiftedInfoLinks=new Array();
	for (g=0; g<TotalNumberOfInfoLinks; g++) {ShiftedInfoLinks[g] = new Array()};
	for (v=0; v<TotalNumberOfInfoLinks; v++) {  
	if (v+offset >= TotalNumberOfInfoLinks) {ShiftedInfoLinks[v]=TempArray[v+offset-TotalNumberOfInfoLinks];}
	else {ShiftedInfoLinks[v]=TempArray[v+offset];}};

// EO shift block

function LoadGallery(picture, state, bgd) {
if (state==1) {
	picture=picture.slice(picture.lastIndexOf('\/')+1);
	picture=picture.slice(0,picture.lastIndexOf('.'));
	(is.iewin)?document.all.EN.src='gallery/'+picture+'.jpg':(is.moz)?document.getElementById("EN").src='gallery/'+picture+'.jpg':0;
	(is.iewin && bgd!=0)?document.all.SHADOWBODY.style.backgroundImage='url(gallery/fade.png)':(is.moz)?document.getElementById("SHADOWBODY").style.background='url(gallery/fade.png)':0;
	(bgd!=0) ?MM_showHideLayers('SHADOWCORE','','show'):0;
	MM_showHideLayers('GALLERY','','show');
};
if (state==0) {
	MM_showHideLayers('GALLERY','','hide');MM_showHideLayers('SHADOWCORE','','hide');
	(is.iewin)?document.all.EN.src='gallery/spacer500.gif':(is.moz)?document.getElementById("EN").src='gallery/spacer500.gif':0;
	(is.iewin)?document.all.SHADOWBODY.style.backgroundImage='url(generalimages/spacer.gif)':(is.moz)?document.getElementById("SHADOWBODY").style.backgroundImage='url(generalimages/spacer.gif)':0;

}
}

function LoadBenefit(statement, state) {
if (state==1) {
	(is.iewin)?document.all.BEN.innerText=statement:(is.moz)?document.getElementById("BEN").firstChild.data=statement:0;
	MM_showHideLayers('BENEFITS','','show');
};
if (state==0) {
	MM_showHideLayers('BENEFITS','','hide');
	(is.iewin)?document.all.BEN.innerText='NA':(is.moz)?document.getElementById("BEN").firstChild.data='NA':0;
}	
}


function MM_showHideLayers() { //v9.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) 
  with (document) if (getElementById && ((obj=getElementById(args[i]))!=null)) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}


function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function flvFTSS4(){//v1.02
this.style.filter="";}

function flvFTSS3(){//v1.02
var v1=arguments,v2=v1[0],v3=MM_findObj(v2);if (v3&&v3.TSS2!=null){clearTimeout(v3.TSS2);}}

function flvFTSS2(){//v1.02
var v1=arguments,v2=v1[0],v3=MM_findObj(v2),v4=v1[1],v5=v1[2],v6,v7,v8,v9,v10,v11,v12=document;if (v3&&v3.TSS7){flvFTSS3(v2);v9="flvFTSS2('"+v2+"',"+v4+","+v5+")";if (v4==1){if (!v3.TSS5.complete){v3.TSS2=setTimeout(v9,50);return;}v6=v3.TSS9+1;if (v6>v3.TSS7.length-1){if (v3.TSS10==0){return;}else {v6=0;}}else if (v6+1<v3.TSS7.length){v3.TSS5.src=v3.TSS7[v6+1][0];}}else {if (!v3.TSS3.complete){v3.TSS2=setTimeout(v9,50);return;}v6=v3.TSS9-1;if (v6<0){if (v3.TSS10==0){return;}else {v6=v3.TSS7.length-1;}}else if (v6-1>0){v3.TSS3.src=v3.TSS7[v6-1][0];}}v3.TSS9=v6;v10=v3.TSS7[v6][0];v11=v3.TSS7[v6][1];v7=(v3.filters&&!v12.TSS6&&v11<25);if (v7){if (v3.filters[0]&&v3.filters[0].status==2){v3.filters[0].Stop();}if (v11==0){v8="blendTrans(Duration="+v3.TSS8+")";}else {v8="revealTrans(Duration="+v3.TSS8+",Transition="+(v11-1)+")";}v3.style.filter=v8;v3.onfilterchange=flvFTSS4;v3.filters[0].Apply();}v3.src=v10;if (v7){v3.filters[0].Play();}if (v5==1){v3.TSS2=setTimeout(v9,v3.TSS4);}}}

function flvFTSS1(){//v1.02
var v1=arguments,v2=document,v3=v1[0],v4=MM_findObj(v3),v5,v6;if (v4){v2.TSS6=(navigator.userAgent.toLowerCase().indexOf("mac")!=-1);v4.TSS8=v1[1]/1000;v4.TSS4=v1[2]+v1[1];v6=v1[3];v4.TSS10=v1[4];v4.TSS7=new Array();for (var v7=5;v7<v1.length;v7+=2){v4.TSS7[v4.TSS7.length]=new Array(v1[v7],v1[v7+1]);}v4.TSS9=0;v4.TSS5=new Image();v4.TSS5.src=v1[7];v4.TSS3=new Image();v4.TSS3.src=v1[v1.length-2];if (v6==1){v5="flvFTSS2('"+v3+"',1,"+v6+")";v4.TSS2=setTimeout(v5,v4.TSS4);}}}




function flevPersistentLayer() { // v3.3, Marja Ribbers-de Vroed, FlevOOware
	var sD = arguments[0], oD = eval("MM_findObj('" + sD + "')"), iWW, iWH, iSX, iSY, iT = 10, sS = "";
	if (!document.layers) {oD = oD.style;}
	if (oD.tmpTimeout != null) {clearTimeout(oD.tmpTimeout);}
	var sXL = arguments[1], sXC = arguments[2], sXR = arguments[3], sYT = arguments[4], sYC = arguments[5], sYB = arguments[6];
	var iS = (arguments.length > 7) ? parseInt(arguments[7]) : 0, iPx = (arguments.length > 8) ? parseInt(arguments[8]) : 0;
	if (window.innerWidth) { // NS4, NS6 and Opera
		var oW = window; iWW = oW.innerWidth; iWH = oW.innerHeight; iSX = oW.pageXOffset; iSY = oW.pageYOffset; }
	else if (document.documentElement && document.documentElement.clientWidth) { // IE6 in standards compliant mode
		var oDE = document.documentElement; iWW = oDE.clientWidth; iWH = oDE.clientHeight; iSX = oDE.scrollLeft; iSY = oDE.scrollTop; }
	else if (document.body) { // IE4+
		var oDB = document.body; iWW = oDB.clientWidth; iWH = oDB.clientHeight; iSX = oDB.scrollLeft; iSY = oDB.scrollTop; }
	else {return;}
	var iCX = iNX = flevDivPositionValue(sD, 'left'), iCY = iNY = flevDivPositionValue(sD, 'top');
	if (sXL != "") {iNX = iSX + parseInt(sXL);} 
	else if (sXC != "") {iNX = Math.round(iSX + (iWW/2) - (flevDivPositionValue(sD, 'width')/2));}
	else if (sXR != "") {iNX = iSX + iWW - (flevDivPositionValue(sD, 'width') + parseInt(sXR));}
	if (sYT != "") {iNY = iSY + parseInt(sYT);}
	else if (sYC != "") {iNY = Math.round(iSY + (iWH/2) - (flevDivPositionValue(sD, 'height')/2));}
	else if (sYB != "") {iNY = iSY + (iWH - flevDivPositionValue(sD, 'height') - parseInt(sYB));}
	if ((iCX != iNX) || (iCY != iNY)) {
		if (iS > 0) {
			if (iPx > 0) { iT = iS;
				var iPxX = iPx, iPxY = iPx, iMX = Math.abs(iCX - iNX), iMY = Math.abs(iCY - iNY);
				// take care of diagonal movement
				if (iMX < iMY) {iPxY = (iMX != 0) ? ((iMY/iMX)*iPx) : iPx;}
				else {iPxX = (iMY != 0) ? ((iMX/iMY)*iPx) : iPx;}
				if (iPxX >= iMX) {iPxX = Math.min(Math.ceil(iPxX), iPx);}
				if (iPxY >= iMY) {iPxY = Math.min(Math.ceil(iPxY), iPx);}
				// temporary X/Y coordinates
				if ((iCX < iNX) && (iCX + iPxX < iNX)) {iNX = iCX + iPxX;}
				if ((iCX > iNX) && (iCX - iPxX > iNX)) {iNX = iCX - iPxX;}
				if ((iCY < iNY) && (iCY + iPxY < iNY)) {iNY = iCY + iPxY;}
				if ((iCY > iNY) && (iCY - iPxY > iNY)) {iNY = iCY - iPxY;} }
			else { 
				var iMX = ((iNX - iCX) / iS), iMY = ((iNY - iCY) / iS); 
				iMX = (iMX > 0) ? Math.ceil(iMX) : Math.floor(iMX); iNX = iCX + iMX; 
				iMY = (iMY > 0) ? Math.ceil(iMY) : Math.floor(iMY); iNY = iCY + iMY; } }
		if ((parseInt(navigator.appVersion)>4 || navigator.userAgent.indexOf("MSIE")>-1) && (!window.opera)) {sS="px";}
		if (iMX != 0) {eval("oD.left = '" + iNX + sS + "'");}
		if (iMY != 0) {eval("oD.top = '" + iNY + sS + "'");} }
	var sF = "flevPersistentLayer('" + sD + "','" + sXL + "','" + sXC + "','" + sXR + "','" + sYT + "','" + sYC + "','" + sYB + "'," + iS + "," + iPx + ")";
	oD.tmpTimeout = setTimeout(sF,10);
}

function flevInitPersistentLayer() { // v3.3, Marja Ribbers-de Vroed, FlevOOware
	if (arguments.length < 8) {return;}
	var sD = arguments[0]; if (sD == "") {return;}
	var	oD = eval("MM_findObj('" + sD + "')"); if (!oD) {return;}
	var iCSS = parseInt(arguments[1]);
	var sXL = arguments[2], sXC = arguments[3], sXR = arguments[4], sYT = arguments[5], sYC = arguments[6], sYB = arguments[7];
	var iS = (arguments.length > 8) ? parseInt(arguments[8]) : 0, iPx = (arguments.length > 9) ? parseInt(arguments[9]) : 0;
	if (iCSS != 0) { if (!document.layers) {oD = oD.style;} sXL = parseInt(oD.left), sYT = parseInt(oD.top);}
	var sF = "flevPersistentLayer('" + sD + "','" + sXL + "','" + sXC + "','" + sXR + "','" + sYT + "','" + sYC + "','" + sYB + "'," + iS + "," + iPx + ")";
	eval(sF);
}

function flevDivPositionValue(sDiv, sProperty) { // v2.1, Marja Ribbers-de Vroed, FlevOOware
	this.opera = (window.opera); // Opera 5+
	this.ns4 = (document.layers); // Netscape 4.x
	this.ns6 = (document.getElementById && !document.all && !this.opera); // Netscape 6+
	this.ie = (document.all);  // Internet Explorer 4+
    var sValue = ""; docObj = eval("MM_findObj('" + sDiv + "')"); if (docObj == null) {return 0;}
	if ((sProperty == "left") || (sProperty == "top")) {
		if (!this.ns4) {docObj = docObj.style;} 
		sValue = eval("docObj." + sProperty);
		if ((this.ie) && (sValue == "")) { // IE (on PC) bug with nested layers
			if (sProperty == "top") { sValue = eval(sDiv + ".offsetTop"); } 
			else { sValue = eval(sDiv + ".offsetLeft"); } 
		};
	}
	else {
		if (this.opera) {
			docObj = docObj.style;
			if (sProperty == "height") { sValue = docObj.pixelHeight; } 
			else if (sProperty == "width") { sValue = docObj.pixelWidth; } 
		}
		else if (this.ns4) {sValue = eval("docObj.clip." + sProperty);} 
		else if (this.ns6) {sValue = document.defaultView.getComputedStyle(docObj, "").getPropertyValue(sProperty); } 
	    else if (this.ie) { 
			if (sProperty == "width") { sValue = eval(sDiv + ".offsetWidth"); } 
			else if (sProperty == "height") { sValue = eval(sDiv + ".offsetHeight"); } 
		}
   	}
	sValue = (sValue == "") ? 0 : sValue; 
	if (isNaN(sValue)) { if (sValue.indexOf('px') > 0) { sValue = sValue.substring(0,sValue.indexOf('px')); } } 
	return parseInt(sValue); 
}

function tmt_findObj(n){
	var x,t; if((n.indexOf("?"))>0&&parent.frames.length){t=n.split("?");
	x=eval("parent.frames['"+t[1]+"'].document.getElementById('"+t[0]+"')");
	}else{x=document.getElementById(n)}return x;
}

function tmt_DivMove(theDiv, l, t){
	var x = (document.layers) ? ".left" : ".style.left";
	var y = (document.layers) ? ".top" : ".style.top";
	var fun = (document.getElementById) ? "tmt_findObj" : "MM_findObj";
	var obj = eval(fun+"(theDiv)");if(obj){
	eval(fun+"('"+theDiv+"')"+y+"="+t);
	eval(fun+"('"+theDiv+"')"+x+"="+l);}
}


function FormatPrice(pric) {	
	var s = "" + Math.round(pric * 100) / 100;
  	var i = s.indexOf('.');
  	if (s.indexOf('.') < 0) {pric = s + ".00"}
	else if (i + 2 == s.length) {var t = s.substring(0, i + 1) + s.substring(i + 1, i + 3); pric= t + "0"}
	else {pric=s;}
	if (pric==0) {pric='0.00'};
	return pric;
}

function ProcessForm () {
	var test='pass';
	if (is.iewin) {if (ga.NAME.value=="" || ga.BILLING_ADDRESS.value=="" || XCheckEmailValidity(ga.EMAIL_ADDRESS.value)!="YES" || ga.PHONE.value=='' ){test='fail'}};
	if (is.moz) {if (document.getElementById("NAME").value=='' || document.getElementById("BILLING_ADDRESS").value=='' || XCheckEmailValidity(document.getElementById("EMAIL_ADDRESS").value)!='YES' || isNaN(document.getElementById("PHONE").value)){test='fail'}};
	if (test=='fail') {alert('There are problems with your form, please check you have entered\nall required fields correctly...\n\n');return;}
	LoadGallery('thankyou.jpg',1);
}

function CompleteProcess() {
	(is.iewin)?PROCESS.submit():(is.moz)?document.getElementById("PROCESS").submit():0;
}

function ProcessQuery () {
	var test='pass';
	if (is.iewin) {if (ga.Name.value=="" || ga.Notes.value=="" || XCheckEmailValidity(ga.email.value)!="YES" || ga.Home_Phone.value=='' ){test='fail'}};
	if (is.moz) {if (document.getElementById("Name").value=='' || document.getElementById("Notes").value=='' || XCheckEmailValidity(document.getElementById("email").value)!='YES' || isNaN(document.getElementById("Home_Phone").value)){test='fail'}};
	if (test=='fail') {alert('There are problems with your form, please check you have entered\nall required fields correctly...\n\n');return;}
	LoadGallery('thankyouQ.jpg',1);
}
function CompleteQuery() {
	(is.iewin)?QUERYFORM.submit():(is.moz)?document.getElementById("QUERYFORM").submit():0;
}

function XCheckEmailValidity(EmailAddress) {
		var checkTLD=1;
		var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
		var emailPat=/^(.+)@(.+)$/;
		var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
		var validChars="\[^\\s" + specialChars + "\]";
		var quotedUser="(\"[^\"]*\")";
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
		var atom=validChars + '+';
		var word="(" + atom + "|" + quotedUser + ")";
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
		var matchArray=EmailAddress.match(emailPat);

		if (matchArray==null) {return 'no';}
		var user=matchArray[1];
		var domain=matchArray[2];

		for (i=0; i<user.length; i++) {	if (user.charCodeAt(i)>127) {return 'no';}}
		for (i=0; i<domain.length; i++) { if (domain.charCodeAt(i)>127) {return 'no';}}
		if (user.match(userPat)==null) {return 'no';}

		var IPArray=domain.match(ipDomainPat);
		if (IPArray!=null) {for (var i=1;i<=4;i++) { if (IPArray[i]>255) {return 'no';}}
		return 'YES';
		}
		var atomPat=new RegExp("^" + atom + "$");
		var domArr=domain.split(".");
		var len=domArr.length;
		for (i=0;i<len;i++) {if (domArr[i].search(atomPat)==-1) {return 'no';}}
		if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {return 'no';}
		if (len<2) {return 'no';}
		return 'YES';
}