var plus=new Image(); plus.src="../graphics/plus.gif";
var minus=new Image(); minus.src="../graphics/minus.gif";

function hideshowObject(o,f){
 var el=getStyle(o);
 if(el && el!="undefined"){
  el.display=(f)?'block':'none';
 }
}
function toggleMenu(o){
 var thisMenu=getStyle("hs"+o);
 if(thisMenu){
  hideshowObject("hs"+o,((thisMenu.display=='none')?1:0));
  getObject("mp"+o).src=(thisMenu.display=='none')?plus.src:minus.src;
 }
}
function showImg(o,w,h){
 var sh=docProperties.screenHeight();
 var sw=docProperties.screenWidth();
 var t=(sh)?(((sh-h)/2)-((window.opera)?70:20)):20;
 var l=(sw)?((sw-w)/2):20;
 var c='toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', screenX='+l+', screenY='+t+', top='+t+', left='+l;
 w=window.open('gillimage.php?id='+o+'&w='+w+'&h='+h,'_blank',c);
 w.focus();
}
function openMap(){
 var sh=docProperties.screenHeight();
 var sw=docProperties.screenWidth();
 var ImgH=530;
 var ImgW=816;
 var t=(sh)?(((sh-ImgH)/2)-((window.opera)?70:20)):20;
 var l=(sw)?((sw-ImgW)/2):20;
 var c='toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+ImgW+', height='+ImgH+', screenX='+l+', screenY='+t+', top='+t+', left='+l;
 w=window.open('gillinghammap.html','_blank',c);
 w.focus();
}

if(window.RegExp){
 var pattern1=new RegExp("[\\s'-]","g");  //get word dividers
 var pattern2=new RegExp("^(\\w)(.*)");   //get first letter etc.
 var pattern3=new RegExp("^(mac|mc{1,2}){0,1}(.*)","i");
 var exceptions=new Array('Mackin', 'Machin', 'Machen', 'Macintosh', 'Macintyre', 'Macaulay', 'Macaskill', 'Macara', 'Mackay', 'Maciver', 'Maclaren', 'Macrae', 'Mach', 'MacO', 'MacA');
}

function checkForm(){
 var d=document.forms[0];
 var c=true;
 var reqf=new Array("fullname", "email", "comments");
 if(window.RegExp){
  for(i=0;i<d.elements.length;i++){
   a=d.elements[i];
   if((a.type=="text")||(a.type=="textarea")){
    b=trim(a.value);
    if(a.name != "email" && a.name != "comments"){
     b=cleanString(b);
    }
    if(a.name == "email"){
     b=b.toLowerCase();
    }
    if(a.name == "fullname"){
     b=titleCase(b);
    }
    a.value=b;
   }
  }
 }
 var f=0;
 for(i=0;i<reqf.length;i++){
  a=d.elements[reqf[i]];
  if(a && ((a.type=="text")||(a.type=="textarea"))){
   if(a.value==""){
    c=false;
    if(f==0){
     a.focus();
     f=1;
    }
   }
  }
 }
 if(!c){
  alert("\n\nPlease complete all required fields\nbefore submitting the form.\n\n");
 }else if(!checkEmail(d.email.value)){
  c=false;
 }
 return c;
}

function checkEmail(e){
 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=e.match(emailPat);
 var prefix="\n\nThe E-Mail Address is formatted incorrectly.\n\n";
 if(matchArray==null){
  alert(prefix+"Please check the @ and .\n\n");
  return false;
 }
 var user=matchArray[1];
 var domain=matchArray[2];
 
 for(i=0;i<user.length;i++){
  if(user.charCodeAt(i)>127){
   alert(prefix+"It contains invalid characters.\n\n");
   f.email.focus();
   return false;
  }
 }
 for(i=0;i<domain.length;i++){
  if(domain.charCodeAt(i)>127){
   alert(prefix+"It contains invalid characters.\n\n");
   f.email.focus();
   return false;
  }
 }
 
 if(user.match(userPat)==null){
  alert(prefix+"\n\n");
  f.email.focus();
  return false;
 }
 
 var IPArray=domain.match(ipDomainPat);
 if(IPArray!=null){
  for(i=1;i<=4;i++){
   if(IPArray[i]>255){
    alert(prefix+"The destination IP address is invalid.\n\n");
    f.email.focus();
    return false;
   }
  }
  return true;
 }
 
 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){
   alert(prefix+"The domain name is not valid.\n\n");
   f.email.focus();
   return false;
  }
 }
 
 if(checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1){
  alert(prefix+"It must end in a well-known domain\nor two letter country abbreviation.\n\n");
  f.email.focus();
  return false;
 }
 
 if(len<2){
  alert(prefix+"It is missing a hostname.\n\n");
  f.email.focus();
  return false;
 }
 return true;
}
 
function checkNumFields(n,l){
 n.value=n.value.replace(/[\(\)\.\-\ ]/g, "")
 if(n.value!=""){
  if(!isNum(n.value)){
   alert("\n\nThe "+l+" number contains illegal characters.\n\n")
   n.focus()
  }
  if(n.value.length!=11){
   alert("\n\nThe "+l+" number is the wrong length.\nPlease include an area code.\n\n")
   n.focus()
  }
 }
}
function titleCase(n){
 if(window.RegExp){
  n=cleanString(n);
  if(n.length>0){
   var newString='';
   var wordDividers=n.match(pattern1);   //find word dividing characters
   var words=n.split(pattern1);    //divide into separate words
   for(i=0; i<words.length; i++){
    var e=isException(words[i]);    //check for exceptions
    if(e){
     var newwords=e;
    }else{
     var newwords='';
     var wordParts=words[i].match(pattern3);  //check for mac,mc,mcc
     for(j=1;j<wordParts.length;j++)newwords+=(!wordParts[j])?'':upperLower(wordParts[j]);
    }
    newString+=newwords+((wordDividers==null)?'':
 ((wordDividers[i]==undefined)?'':
 wordDividers[i]));     //replace word dividers, if any
   }
   return newString;
  }
 }
 return n;
}
function isException(w){
 for(k=0;k<exceptions.length;k++){    //look for exceptions
  var reg=new RegExp("^"+exceptions[k],'i');  //only looks at start of string
  if(reg.test(w))return exceptions[k];
 }
 return false;
}
function upperLower(w){
 var p=pattern2.exec(w);
 var firstLetter=p[1].toUpperCase();
 var restOfWord=p[2].toLowerCase();
 return firstLetter+restOfWord;
}
 
function isValid(s){
 var Chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
 for(var i=0; i<s.length; i++){
  if(Chars.indexOf(s.charAt(i))==-1){
   return false
  }
 }
 return true
}
function trim(o){
 var temp=o;
 var obj=/^(\s*)([\W\w]*)(\b\s*$)/;
 if(obj.test(temp))temp=temp.replace(obj,'$2');
 var obj=/ +/g;
 temp=temp.replace(obj," ");
 if(temp==" ")temp="";
 return temp;
}
function cleanString(o){
 o=o.replace(/^\s*(.*)/, "$1").replace(/(.*?)\s*$/, "$1");
 o=o.replace(/[\$\^\{\[\(\|\)\]\}\*\?\\\+]/g, "");
 o=o.replace(/[_.;:<>~%£\"!]/g, "");
 return o;
}
function isNum(s){
 var Chars="0123456789";
 for(var i=0; i<s.length; i++){
  if(Chars.indexOf(s.charAt(i))==-1){
   return false;
  }
 }
 return true;
}
 
function submitForm(){
 var d=document.forms[0];
 if(checkForm()){
  d.action="sendemail.php";
  d.submit();
 }
}
function resetForm(){
 var d=document.forms[0];
 d.reset();
 d.fullname.focus();
}



function getObject(o){
 var d=document;
 return ((d.all)?d.all(o):(d.getElementById)?d.getElementById(o):(d.layers)?d.layers[o]:null);
}
function getStyle(o){
 var el=getObject(o);
 return (el)?((el.style)?el.style:el):null;
}

divStyle={
 left:function(o){
  var ds=getStyle(o);
  if(ds){
   if(ds.pixelLeft){
    return ds.pixelLeft;
   }else if(ds.left){
    return ds.left;
   }else{
    return 0;
   }
  }else{
   return 0;
  }
 },
 right:function(o){
  var ds=getStyle(o);
  if(ds){
   if(ds.pixelRight){
    return ds.pixelRight;
   }else if(ds.right){
    return ds.right;
   }else{
    return 0;
   }
  }else{
   return 0;
  }
 },
 top:function(o){
  var ds=getStyle(o);
  if(ds){
   if(ds.pixelTop){
    return ds.pixelTop;
   }else if(ds.top){
    return ds.top;
   }else{
    return 0;
   }
  }else{
   return 0;
  }
 },
 bottom:function(o){
  var ds=getStyle(o);
  if(ds){
   if(ds.pixelBottom){
    return ds.pixelBottom;
   }else if(ds.bottom){
    return ds.bottom;
   }else{
    return 0;
   }
  }else{
   return 0;
  }
 },
 height:function(o){
  var ds=getStyle(o);
  if(ds){
   if(ds.pixelHeight){
    return ds.pixelHeight;
   }else if(ds.height){
    return ds.height;
   }else{
    return 0;
   }
  }else{
   return 0;
  }
 },
 width:function(o){
  var ds=getStyle(o);
  if(ds){
   if(ds.pixelWidth){
    return ds.pixelWidth;
   }else if(ds.width){
    return ds.width;
   }else{
    return 0;
   }
  }else{
   return 0;
  }
 },
 visible:function(o){
  var ds=getStyle(o);
  if(ds){
   ds.visibility=(document.layers)?"show":"visible";
  }
 },
 hidden:function(o){
  var ds=getStyle(o);
  if(ds){
   ds.visibility=(document.layers)?"hide":"hidden";
  }
 }
}


function jstoolkit(){
 var toolkit=java.awt.Toolkit.getDefaultToolkit();
 return toolkit.getScreenSize();
}

docProperties={
 screenWidth:function(){
  if(screen.width){
   return screen.width;
  }else if(navigator.javaEnabled()){
   return jstoolkit().width;
  }else{
   return 0;
  }
 },
 screenHeight:function(){
  if(screen.height){
   return screen.height;
  }else if(navigator.javaEnabled()){
   return jstoolkit().height;
  }else{
   return 0;
  }
 },
 screenAvailWidth:function(){
  return screen.availWidth;
 },
 screenAvailHeight:function(){
  return screen.availHeight;
 },
 scrollTop:function(){
  var db=document.body;
  var de=document.documentElement;
  if(typeof(window.pageYOffset)=='number'){
   return window.pageYOffset;
  }else if(db && db.scrollTop){
   return db.scrollTop;
  }else if(de && de.scrollTop){
   return de.scrollTop;
  }else{
   return 0;
  }
 },
 scrollLeft:function(){
  var db=document.body;
  var de=document.documentElement;
  if(typeof(window.pageYOffset)=='number'){
   return window.pageXOffset;
  }else if(db && db.scrollLeft){
   return db.scrollLeft;
  }else if(de && de.scrollLeft){
   return de.scrollLeft;
  }else{
   return 0;
  }
 },
 windowWidth:function(){
  var db=document.body;
  var de=document.documentElement;
  if(typeof(window.innerWidth)=='number'){
   return window.innerWidth;
  }else if(de && de.clientWidth){
   return de.clientWidth;
  }else if(db && db.clientWidth){
   return db.clientWidth;
  }else{
   return 0;
  }
 },
 windowHeight:function(){
  var db=document.body;
  var de=document.documentElement;
  if(typeof(window.innerWidth)=='number'){
   return window.innerHeight;
  }else if(de && de.clientHeight){
   return de.clientHeight;
  }else if(db && db.clientHeight){
   return db.clientHeight;
  }else{
   return 0;
  }
 },
 pageHeight:function(){
  var db=document.body;
  var a=db.scrollHeight;
  var b=db.offsetHeight
  return (a>b)?a:b;
 },
 pageWidth:function(){
  var db=document.body;
  var a=db.scrollHeight;
  var b=db.offsetHeight
  return (a>b)?a:b;
 }
}
