String.prototype.ltrim=new Function("return this.replace(/^\\s+/,'')");
String.prototype.rtrim=new Function("return this.replace(/\\s+$/,'')");
String.prototype.trim=new Function("return this.replace(/^\\s+|\\s+$/g,'')");
String.prototype.nocr=new Function("return this.replace(/(\\r\\n|[\\r\\n])/g,'')");
String.prototype.makeplain=new Function("return this.toLowerCase().replace(/\\s/g,'_')");
String.prototype.startsWith = function (str) { return (this.match("^" + str) == str); }
String.prototype.endsWith = function (s) { return (new RegExp(s + "$")).test(this); }

function obj(id) {
   return document.getElementById(id);
}
function clearList(l) {
   for (var i = l.length - 1; i >= 1; i -= 1) l.options[i] = null;
}
function setSelected(l, v) {
   var iSelIndex = 0;
   if (v.length != 0) {
      for (var i = 0; i < l.length; i++)
         if (l.options[i].value == v) iSelIndex = i;
   }
   l.selectedIndex = iSelIndex;
}
function classOn(id, cls) {
   var o = obj(id);
   if (o != null) {
      if (o.className == '') o.className = cls;
      else if (o.className.indexOf(' ' + cls) == -1) o.className += ' ' + cls;
   }
}
function classOff(id, cls) {
   var o = obj(id);
   if (o != null) {
      if (o.className == cls) o.className = '';
      else if (o.className.startsWith(cls)) o.className = o.className.substring(cls.length);
      else if (o.className.indexOf(' ' + cls) != -1) o.className = o.className.replace(' ' + cls, '');
   }
}

function setDTab(idx) {
   for (var i=0 ; i<3 ; i++) {
      obj('dtab'+i).className=(i==idx ? 'sel' : '');
      obj('dtabinfo'+i).className=(i==idx ? 'spec sel' : 'spec');
   }
}
function focustxt(o, msg) {
   if (o.value == msg) o.value = '';
}
function blurtxt(o, msg) {
   if (o.value == '') o.value = msg;
}
function getXMLToken(xml,tag) {
   var ret='';
   var ifrom=xml.indexOf('<'+tag+'>');
   if (ifrom!=-1) {
      ifrom+=tag.length+2;
      var ito=xml.indexOf('</'+tag+'>');
      if (ito!=-1)
         ret=xml.substring(ifrom,ito);
   }
   return ret;
}
function formatNumber(n, dp) {
   return ((n+"").indexOf(".") == -1 ? n : (parseInt(n) + "." + parseInt((n - parseInt(n)) * Math.pow(10, dp))));
}
function formatPrice(sIn) {
//   sIn = sIn.toString();
   sIn = formatNumber(sIn,2)+"";
   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 "&pound;" + sInt + sDec;
}
function swapImg(id,src) {
   var img = obj(id);
   if (img!=null) img.src=src;
}
function validFAD(fldPC) {
   if (!validPostcode(fldPC.value.trim())) {
       alert('Your postcode is not recognised, ensure you have included a space within it.');
      return false;
   }
   else {
      return true;
   }
}
function validName(sVal) {
   var reg = /^[a-z\-\ \']+$/i;
   return reg.test(sVal);
}
function validPostcode(pc) {
   var reg = /^[a-z]{1,2}[\da-z]{1,2} \d[a-z][a-z]$/i;
   return reg.test(pc);
}
function validEmail(email) {
   var reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/i;
   return reg.test(email);
}
function validPhone(sIn) {
   phonepat = /^([0-9 +()])+$/i
   return phonepat.test(sIn);
}
function validAlphanumeric(val) {
   var alphaExp = /^[0-9a-zA-Z]+$/;
   return (val.match(alphaExp));
}
function mapLoad(divid, lat, lon, lvl, lbl) {
   var latlng = new google.maps.LatLng(lat, lon);
   var opts = { zoom: lvl, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP };
   map = new google.maps.Map(obj(divid), opts);
   var mark0 = new google.maps.Marker({ position: new google.maps.LatLng(lat, lon), map: map, title: lbl });
}
function openclose(id) {
   var o = obj(id);
   if (o!=null) {
      if (!isopen(id))
         o.style.display = 'block';
      else
         o.style.display = 'none';
   }
}
function open(id) {
   var o = obj(id);
   if (o != null) o.style.display = 'block';
}
function close(id) {
   var o = obj(id);
   if (o != null) o.style.display = 'none';
}
function isopen(id) {
   return (styleDisplay(id)=='block');
}
function selectedValue(o) {
   return (o!=null ? o.options[o.selectedIndex].value : '');
}
function styleDisplay(id) {
   var o=obj(id);
   var ret=o.style.display;
   if (o.currentStyle)
      ret = o.currentStyle.display;
   else if (window.getComputedStyle)
      ret= window.getComputedStyle(o, null).getPropertyValue("display");

   return ret;
}
function addHidden(frm, name, value) {
   if (value != '') {
      if (frm[name] == null) {
         var el = document.createElement('input');
         el.type = 'hidden';
         el.name = name;
         el.value = value;
         frm.appendChild(el);
      }
      else {
         frm[name].value = value;
      }
   }
}
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 confirmdelete(sURL) {
    if (confirm("DELETE - are you sure you want to delete this record?")) location.replace(sURL);
}
function confirmremove(sURL) {
    if (confirm("REMOVE - are you sure you want to remove this item from the homepage?")) location.replace(sURL);
}

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, "Ø", "&Oslash;");
    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, "œ", "&oelig;");
    sTemp = replaceString(sTemp, "ø", "&oslash;");
    sTemp = replaceString(sTemp, "š", "&scaron;");
    sTemp = replaceString(sTemp, "Š", "&Scaron;");
    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, "’", "&rsquo;");
    sTemp = replaceString(sTemp, "‘", "&lsquo;");
    sTemp = replaceString(sTemp, "’", "'");
    sTemp = replaceString(sTemp, "‘", "'");
    sTemp = replaceString(sTemp, "–", "-");
    sTemp = replaceString(sTemp, "—", "&mdash;");
    sTemp = replaceString(sTemp, "•", "-");
    return sTemp;
}
// functions for dhtml calendar
bVer = parseInt(navigator.appVersion);
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;
}
// end functions for dhtml calendar

