var bVer = parseInt(navigator.appVersion);

var cookieexpiry=readCookie("lifetime");
if (""+cookieexpiry=="") cookieexpiry=1;
// the cookie starts with null, so ignore the first item

function onFocusI(field,defaultvalue){
	if (field.value==defaultvalue) field.value="";
}
function onBlurI(field,defaultvalue){
	if (field.value=="") field.value=defaultvalue;
}
function readCookie(Name) {
	var cookies = ' ' + document.cookie;
	if (cookies.indexOf(' ' + Name + '=') == -1) return "";
	var start = cookies.indexOf(' ' + Name + '=') + (Name.length + 2);
	var finish = cookies.substring(start,cookies.length);
	finish = (finish.indexOf(';') == -1) ? cookies.length : start + finish.indexOf(';');
	return unescape(cookies.substring(start,finish));
}
function makeCookie(Name,Value,Expiry,Path,Domain,Secure) {
	//if you want to save the cookie
	if (Expiry != null && !isNaN(Expiry)) {
		var datenow = new Date();
		datenow.setTime(datenow.getTime() + 86400000*Expiry);
		Expiry = datenow.toGMTString();
	//	alert(Expiry);
	}
	Expiry = (Expiry) ? '; expires='+Expiry : '';
	Path = (Path)?'; path='+Path:'; path=/';
	Domain = (Domain) ? '; domain='+Domain : '';
	Secure = (Secure) ? '; secure' : '';
	
	document.cookie = Name + '=' + escape(Value) + Expiry + Path + Domain + Secure;
}

function checkpostcode(t){
// modified 20/6/5
// pass the form element instead of the value so we can change it if necessary
	sIn=t.value;
	if ((sIn=="Enter postcode")||(sIn=="")){
		alert("Please enter a postcode");
		return false;
	}
//	alert("the character where the space should be is: '"+sIn.substring(sIn.length-4,sIn.length-3)+"'")
	if (sIn.substring(sIn.length-4,sIn.length-3)!=" "){
//		alert("adding a space");
		t.value=sIn.substring(0,sIn.length-3)+" "+sIn.substring(sIn.length-3,sIn.length);
		sIn=t.value;
	}
	reg=/^[a-z]{1,2}[\da-z]{1,2} \d[a-z][a-z]$/i; 
	if (!reg.test(sIn)){
	    alert("Your postcode does not seem to be well-formed. Remember the space is part of your postcode too.");
		return false;
	}
	return true;
	
}

function checkemail(email){
	emailpat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/i;
	if (!emailpat.test(email)){
		alert("Your Email address does not appear well-formed. Please fill it in then submit again..");
		return false;
	}
	return true;
}
function checkemailnd(email){
	emailpat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/i;
	if (!emailpat.test(email)){
		return false;
	}
	return true;
}
function makenumeric(strIn){
	s="";
	for (i=0;i<strIn.length;i++){
		c=strIn.charAt(i);
		if ((c=="1")||(c=="2")||(c=="3")||(c=="4")||(c=="5")||(c=="6")||(c=="7")||(c=="8")||(c=="9")||(c=="0")||(c==".")) s+=c;
	}
	return s;
}
function checknumber(sIn,sError){
	//sIn.value=makenumeric(sIn.value);
	if (sIn.value==""){
		alert("Please enter "+sError+" then submit again.");
		return false;
	}
	else if (!checkphone(sIn)) {
		alert("Please enter "+sError+" as a number ONLY then submit again.");
		return false;
	}
	return true;
}
function checkphone(sIn){
	phonepat=/^([0-9 +()])+$/i
	return phonepat.test(sIn);
}
function isnumber(sIn,sError){
	sIn.value=makenumeric(sIn.value);
	if (sIn.value==""){
		alert("Please enter "+sError+" then submit again.");
		return false;
	}
	else if (isNaN(parseFloat(sIn.value))) {
		alert("Please enter "+sError+" as a number ONLY then submit again.");
		return false;
	}
	return true;
}
function formatPrice(sIn){
	var iEnd=sIn.indexOf(".");
	var sDec="";
	var sInt="";
	if (iEnd==-1) sInt=sIn;
	else {
		sInt=sIn.substring(0,iEnd);
		sDec=sIn.substring(iEnd,sIn.length);
	}
	if (sInt.length>6) sInt=sInt.substring(0,sInt.length-6)+","+sInt.substring(sInt.length-6,sInt.length);
	if (sInt.length>3) sInt=sInt.substring(0,sInt.length-3)+","+sInt.substring(sInt.length-3,sInt.length);
	if ((sDec.length<3)&&(sDec.length!=0)) sDec=(sDec+"00").substring(0,3);
	return "£"+sInt+sDec;
}
function checkname(sVal) {
	var reg = /^[a-z\-\ \']+$/i;
	return reg.test(sVal);
}
function addleadingzero(sIn){
	var sTemp=sIn;
	if (sTemp.length<2) sTemp=("00"+sTemp).substring(("00"+sTemp).length-2,("00"+sTemp).length);
	return sTemp;
}
function checkdate(DDMMYYYY) {
	var bOk=false;
	if (DDMMYYYY.length==10) {
		var day = (1*DDMMYYYY.substring(0,2));
		var month = (1*DDMMYYYY.substring(3,5))-1;
		var year = (1*DDMMYYYY.substring(6,10));
		var td = new Date(year,month,day);
		bOk=(yearvalid(td.getYear(),year) && month==td.getMonth() && day==td.getDate());
	}
	return bOk;
}
function yearvalid(yy,yyyy) {
	return (((yy<1000) ? yy+1900 : yy) == yyyy);
}
function getconfirm(sType,sURL){
	if (sType=="delete"){
		if (confirm("DELETE - are you sure you want to delete this record?")) location.replace(sURL);
	}
	else if (sType=="push"){
		if (confirm("PUSH - are you sure you want to make this page live?")) location.replace(sURL);
	}
	else if (sType=="push all"){
		if (confirm("PUSH ALL - are you sure you want to make all changes live?")) location.replace(sURL);
	}
	else if (sType=="cancel"){
		if (confirm("CANCEL - are you sure you want to discard changes?")) location.replace(sURL);
	}
}
function replaceString(sSrc, sFrom, sTo){
	sReturn=sSrc;
    iFromLen=sFrom.length;
    iToLen=sTo.length;
    iPos=0;
    iEnd=0;
    do {
        iPos=sReturn.indexOf(sFrom,iEnd);
        if (iPos!=-1) {
            sReturn = sReturn.substring(0,iPos)+sTo+sReturn.substring(iPos+iFromLen);
            iEnd=iPos+iToLen;
        }
    } while (iPos!=-1);
	return sReturn;

}
function onFocusX(obj,sVal) {
	if (obj.value==sVal)
		obj.value="";
}
function onBlurX(obj,sVal) {
	if (obj.value=="")
		obj.value=sVal;
}

// functions for dhtml
if (document.layers) {
visible = 'show';
hidden = 'hide';
} else {
visible = 'visible';
hidden = 'hidden';
}
function getObject(sID) {
if (document.layers) {
return document.layers[sID];
} else if (document.all) {
return document.all(sID).style;
} else if (document.getElementById) {
return document.getElementById(sID).style;
}
}
function show(sID) {
if (bVer>3) getObject(sID).visibility = visible;
}
function hide(hID) {
if (bVer>3) getObject(hID).visibility = hidden;
}
var nCurrentt=1;  
function tshow(n) {
hide('tip_'+nCurrentt);
show('tip_'+n);
nCurrentt=n;
}
function isDateTF(strDate, strFmt) {

  function isLeapYear(y) {
    return (y%4!=0) ? false : (y%100!=0) ? true : (y%400!=0) ? false : true;
  }

  strFmt = strFmt || "ymd";           // default date format

  switch (strFmt.toLowerCase()) {
    case "ymd" :
      var reDate = /^(\d{4})\/(\d{1,2})\/(\d{1,2})$/;
      var y = 1, m = 2, d = 3;
      break;
    case "dmy" :
      var reDate = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
      var y = 3, m = 2, d = 1;
      break;
    case "mdy" :
      var reDate = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
      var y = 3, m = 1, d = 2;
      break;
    default:
      return false;                  // invalid date format specified
  }

  if (!reDate.test(strDate)) return false;  // date has invalid format

  var dateParts = reDate.exec(strDate)
  var year  = dateParts[y];
  var month = dateParts[m];
  var day   = dateParts[d];

  switch (parseInt(month)) {
    case 1 :
    case 3 :
    case 5 :
    case 7 :
    case 8 :
    case 10:
    case 12:
      if (day > 31) return false;
      break;
    case 4 :
    case 6 :
    case 9 :
    case 11:
      if (day > 30) return false;
      break;
    case 2 :
      if (day > (isLeapYear(year) ? 29 : 28)) return false;
      break;
    default:
      return false;
  }

  // Put any year range checks here
  // if (year < min || year > max) return false;

  return true;

}

function isDate(strDate, strFmt) {

  function isLeapYear(y) {
    return (y%4!=0) ? false : (y%100!=0) ? true : (y%400!=0) ? false : true;
  }

  strFmt = strFmt || "ymd";           // default date format

  switch (strFmt.toLowerCase()) {
    case "ymd" :
      var reDate = /^(\d{4})\/(\d{1,2})\/(\d{1,2})$/;
      var y = 1, m = 2, d = 3;
      break;
    case "dmy" :
      var reDate = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
      var y = 3, m = 2, d = 1;
      break;
    case "mdy" :
      var reDate = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
      var y = 3, m = 1, d = 2;
      break;
    default:
      return null;                  // invalid date format specified
  }

  if (!reDate.test(strDate)) return null;  // date has invalid format

  var dateParts = reDate.exec(strDate)
  var year  = dateParts[y];
  var month = dateParts[m];
  var day   = dateParts[d];

  switch (parseInt(month)) {
    case 1 :
    case 3 :
    case 5 :
    case 7 :
    case 8 :
    case 10:
    case 12:
      if (day > 31) return null;
      break;
    case 4 :
    case 6 :
    case 9 :
    case 11:
      if (day > 30) return null;
      break;
    case 2 :
      if (day > (isLeapYear(year) ? 29 : 28)) return null;
      break;
    default:
      return null;
  }

  // Put any year range checks here
  // if (year < min || year > max) return false;

  return new Date(year,month-1,day);

}
function makeCookie(Name,Value,Expiry,Path,Domain,Secure) {
//if you want to save the cookie
if (Expiry != null && !isNaN(Expiry)) {
	var datenow = new Date();
	datenow.setTime(datenow.getTime() + Math.round(86400000*Expiry));
	Expiry = datenow.toGMTString();
}
Expiry = (Expiry) ? '; expires='+Expiry : '';
Path = (Path)?'; path='+Path:'';
Domain = (Domain) ? '; domain='+Domain : '';
Secure = (Secure) ? '; secure' : '';

document.cookie = Name + '=' + escape(Value) + Expiry + Path + Domain + Secure;

}

function readCookie(Name) {

var cookies = ' ' + document.cookie;
if (cookies.indexOf(' ' + Name + '=') == -1) return null;

var start = cookies.indexOf(' ' + Name + '=') + (Name.length + 2);
var finish = cookies.substring(start,cookies.length);
finish = (finish.indexOf(';') == -1) ? cookies.length : start + finish.indexOf(';');

return unescape(cookies.substring(start,finish));
}
function oOpen(sID) {
	var o=getObject(sID);
	if (o) o.display="block";
}
function oClose(sID) {
	var o=getObject(sID);
	if (o) o.display="none";
}
function countItems(sIn,sDiv){
	count=0;
	for (i=0;i<sIn.length;i++){
		if (sDiv==(sIn.substring(i,i+1))) count++;
	}
	return count;
}
function encode(sIn){
	sTemp=sIn;
	sTemp=replaceString(sTemp,"£","&pound;");
	sTemp=replaceString(sTemp,"€","&euro;");
	sTemp=replaceString(sTemp,"À","&Agrave;");
	sTemp=replaceString(sTemp,"Á","&Aacute;");
	sTemp=replaceString(sTemp,"Â","&Acirc;");
	sTemp=replaceString(sTemp,"Ã","&Atilde;");
	sTemp=replaceString(sTemp,"Ä","&Auml;");
	sTemp=replaceString(sTemp,"Å","&Aring;");
	sTemp=replaceString(sTemp,"Ç","&Ccedil;");
	sTemp=replaceString(sTemp,"È","&Egrave;");
	sTemp=replaceString(sTemp,"É","&Eacute;");
	sTemp=replaceString(sTemp,"Ê","&Ecirc;");
	sTemp=replaceString(sTemp,"Ë","&Euml;");
	sTemp=replaceString(sTemp,"Ì","&Igrave;");
	sTemp=replaceString(sTemp,"Í","&Iacute;");
	sTemp=replaceString(sTemp,"Î","&Icirc;");
	sTemp=replaceString(sTemp,"Ï","&Iuml;");
	sTemp=replaceString(sTemp,"Ñ","&Ntilde;");
	sTemp=replaceString(sTemp,"Ò","&Ograve;");
	sTemp=replaceString(sTemp,"Ó","&Oacute;");
	sTemp=replaceString(sTemp,"Ô","&Ocirc;");
	sTemp=replaceString(sTemp,"Õ","&Otilde;");
	sTemp=replaceString(sTemp,"Ö","&Ouml;");
	sTemp=replaceString(sTemp,"Ù","&Ugrave;");
	sTemp=replaceString(sTemp,"Ú","&Uacute;");
	sTemp=replaceString(sTemp,"Û","&Ucirc;");
	sTemp=replaceString(sTemp,"Ü","&Uuml;");
	sTemp=replaceString(sTemp,"Ý","&Yacute;");
	sTemp=replaceString(sTemp,"ß","&szlig;");
	sTemp=replaceString(sTemp,"à","&agrave;");
	sTemp=replaceString(sTemp,"á","&aacute;");
	sTemp=replaceString(sTemp,"â","&acirc;");
	sTemp=replaceString(sTemp,"ã","&atilde;");
	sTemp=replaceString(sTemp,"ä","&auml;");
	sTemp=replaceString(sTemp,"å","&aring;");
	sTemp=replaceString(sTemp,"ç","&ccedil;");
	sTemp=replaceString(sTemp,"è","&egrave;");
	sTemp=replaceString(sTemp,"é","&eacute;");
	sTemp=replaceString(sTemp,"ê","&ecirc;");
	sTemp=replaceString(sTemp,"ë","&euml;");
	sTemp=replaceString(sTemp,"ì","&igrave;");
	sTemp=replaceString(sTemp,"í","&iacute;");
	sTemp=replaceString(sTemp,"î","&icirc;");
	sTemp=replaceString(sTemp,"ï","&iuml;");
	sTemp=replaceString(sTemp,"ñ","&ntilde;");
	sTemp=replaceString(sTemp,"ò","&ograve;");
	sTemp=replaceString(sTemp,"ó","&oacute;");
	sTemp=replaceString(sTemp,"ô","&ocirc;");
	sTemp=replaceString(sTemp,"õ","&otilde;");
	sTemp=replaceString(sTemp,"ö","&ouml;");
	sTemp=replaceString(sTemp,"ù","&ugrave;");
	sTemp=replaceString(sTemp,"ú","&uacute;");
	sTemp=replaceString(sTemp,"û","&ucirc;");
	sTemp=replaceString(sTemp,"ü","&uuml;");
	sTemp=replaceString(sTemp,"ý","&yacute;");
	sTemp=replaceString(sTemp,"ÿ","&yuml;");
	sTemp=replaceString(sTemp,"“","&ldquo;");
	sTemp=replaceString(sTemp,"”","&rdquo;");
	sTemp=replaceString(sTemp,"®","&reg;");
	sTemp=replaceString(sTemp,"…","...");
	sTemp=replaceString(sTemp,"’","'");
	sTemp=replaceString(sTemp,"‘","'");
	sTemp=replaceString(sTemp,"–","-");
	sTemp=replaceString(sTemp,"—","-");
	sTemp=replaceString(sTemp,"•","-");
	return sTemp;
}
/* Function that swaps images. */
function di20(id, newSrc) {
var theImage = FWFindImage(document, id, 0);
if (theImage) {
theImage.src = newSrc;
}
}
/* Functions that track and set toggle group button states. */
function FWFindImage(doc, name, j) {
var theImage = false;
if (doc.images) {
theImage = doc.images[name];
}
if (theImage) {
return theImage;
}
if (doc.layers) {
for (j = 0; j < doc.layers.length; j++) {
theImage = FWFindImage(doc.layers[j].document, name, 0);
if (theImage) {
return (theImage);
}
}
}
return (false);
}
