function handleerror(){
 return true;
}

function hideshowObject(o,f){
 var s=getStyle(o);
 if(s){
  if((f && s.display=="none") || (!f && s.display=="block")){
   s.display=(f)?'block':'none';
  }
 }
}
function toggleMenu(o,p){
 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;
  collapseOthers(o,p,0);
 }
}
function showMenu(o,p){
 var thisMenu=getStyle("hs"+o);
 if(thisMenu){
  hideshowObject("hs"+o,1);  //DEFAULT TO SHOW
  getObject("mp"+o).src=minus.src;
  collapseOthers(o,p,0);
 }
}
function collapseOthers(o,p,f){
 var divs=document.getElementsByTagName('div');
 if(divs){
  for(i=0; i<divs.length; i++){
   a=divs[i].id;
   if(a.substr(0,2)=="hs" && a!=("hs"+o)){
    var s=a.split("_");
    var q=parseInt(s[1],10);
    if((p && q==1) || (!p && q>1)){
     getObject("mp"+(a.substr(2))).src=(f)?minus.src:plus.src;
     hideshowObject(a,f);
    }
   }
  }
 }
}

function openGeneric(n,w,h){
 var sw=screen.availWidth;
 var sh=screen.availHeight;
 var t=(sh)?(((sh-h)/2)-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;
 window.open(n,'_blank',c);
}

function openGeneric2(n,t,c,h,w,x,y){
 c+=(h)?(', height='+h):'';
 c+=(w)?(', width='+w):'';
 c+=(x)?(', screenX='+x+', left='+x):'';
 c+=(y)?(', screenY='+y+', top='+y):'';
 w=window.open(n,t,c);
 w.focus();
}



//ROLLOVER FUNCTIONS
function initToolTips(){
 if(document.layers){
  document.captureEvents(Event.MOUSEMOVE);
 }
 document.onmousemove=moveToMouseLoc;
}
function toolTip(m,t){
 var ttl=getStyle('toolTipLayer');
 if(ttl){
  if(t){
   var content='<table class="hovertext"><tr><td>'+m+'</td></tr></table>';
   $('toolTipLayer').innerHTML=content;
   ttl.display="block";
  }else{
   ttl.display="none";
  }
 }
}
function moveToMouseLoc(e){
 var ttl=getStyle('toolTipLayer');
 var coords=getEvents.mmove(e);
 var x=coords[0];
 var y=coords[1];
 if(ttl){
  var xOffset=($('offsetX'))?parseInt($('offsetX').value,10):0;
  var yOffset=($('offsetY'))?parseInt($('offsetY').value,10):0;
  ttl.left=(x+xOffset)+"px";
  ttl.top=(y+yOffset)+"px";
 }
 return true;
}




function timetablelist(){
 window.open("timetablelist.php","ttl","top=10, left=10, width=300, height=500, toolbar=yes, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=no");
}
function cardFacilities(){
 window.open("cardfacilities.php","cf","top=10, left=10, width=500, height=300, toolbar=yes, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=no");
}

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){
 return o.replace(/^\s*(.*)/, "$1").replace(/(.*?)\s*$/, "$1");
}
function cleanString(o){
 return trim(o).replace(/[\$\^\{\[\(\|\)\]\}\*\\\+]/g, "").replace(/[_<>~\"]/g, "");
}
function isNum(s){
 var numRegExp=/[\D]/;
 return !numRegExp.test(s);
}
function isNum2(s){
 var Chars="0123456789";
 for(var i=0; i<s.length; i++){
  if(Chars.indexOf(s.charAt(i))==-1){
   return false;
  }
 }
 return true;
}
function ddv(o){
 return (o)?o.options[o.selectedIndex].value:false;
}
function ddt(o){
 return (o)?o.options[o.selectedIndex].text:false;
}
function df(o){
 return document.forms[o];
}



function isTelNum(n,o){
 if(n){
  n.value=trim(n.value.replace(/[\(\)\.\-\ ]/g, ""));
  if(n.value.length>8){
   if(isNum(n.value)){
    return true;
   }else{
    alert("\n\nThe "+o+" number contains illegal characters\n\n");
    n.focus();
    return false;
   }
  }else{
   alert("\n\nThe "+o+" number is the wrong length\n\nPlease include an area code\n\n");
   n.focus();
   return false;
  }
 }else{
  return false;
 }
}
function cleanValue(o){
 if(o.type=="text" || o.type=="textarea"){
  o.value=cleanString(o.value);
 }
}
function requiredValues(reqf){
 var d=df(0);
 var a,b;
 var c=true;
 var f=false;
 for(var j=0;j<reqf.length;j++){
  a=d.elements[reqf[j]];
  if(a.type.substr(0,4)=="text"){
   cleanValue(a);
   if(a.name.indexOf("email")>=0){
    a.value=a.value.toLowerCase();
   }else if(a.name.indexOf("postcode")>=0){
    a.value=a.value.toUpperCase();
   }
   b=a.value;
  }else if(a.type=="selectone"){
   b=ddv(a);
  }
  if(b==""){
   c=false;
   if(!f){
    a.focus();
    f=true;
   }
  }
 }
 return c;
}
function checkContactForm(){
 var d=df(0);
 if(requiredValues(["fullname", "email", "enquiry"])){
  cleanValue(d.telfax);
  var t=d.telfax;
  var e=d.email;
  if(t.value=="" || (t.value!="" && isTelNum(t,"telfax"))){
   if(checkEmail(e.value,e)){
    return true;
   }else{
    return false;
   }
  }else{
   return false;
  }
 }else{
  alert("\n\nPlease complete all required fields\nbefore submitting the form\n\n");
  return false;
 }
}


//VERIFY EMAILS
function checkEmail(e,f){
 var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|mobi)$/;
 var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
 var validChars="\[^\\s"+specialChars+"\]";
 var atom=validChars+"+";
 var quotedUser="(\"[^\"]*\")";
 var word="("+atom+"|"+quotedUser+")";
 var prefix="\n\nThe E-Mail Address is formatted incorrectly.\n\n";

 var matchArray=e.match(/^(.+)@(.+)$/);
 if(matchArray==null){
  alert(prefix+"Please check the @ and . (dot) characters\n\n");
  if(f)f.focus();
  return false;
 }

 var user=matchArray[1];
 for(i=0;i<user.length;i++){
  if(user.charCodeAt(i)>127){
   alert(prefix+"It contains invalid characters.\n\n");
   if(f)f.focus();
   return false;
  }
 }
 var domain=matchArray[2];
 for(i=0;i<domain.length;i++){
  if(domain.charCodeAt(i)>127){
   alert(prefix+"It contains invalid characters.\n\n");
   if(f)f.focus();
   return false;
  }
 }

 var userPat=new RegExp("^"+word+"(\\."+word+")*$");
 if(user.match(userPat)==null){
  alert(prefix);
  if(f)f.focus();
  return false;
 }

 var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
 var IPArray=domain.match(ipDomainPat);
 if(IPArray!=null){
  for(i=1;i<5;i++){
   if(IPArray[i]>255){
    alert(prefix+"The destination IP address is invalid.\n\n");
    if(f)f.focus();
    return false;
   }
  }
 }

 var atomPat=new RegExp("^"+atom+"$");
 var domArr=domain.split(".");
 var len=domArr.length;

 if(len<2){
  alert(prefix+"It is missing a hostname.\n\n");
  if(f)f.focus();
  return false;
 }
 for(i=0;i<len;i++){
  if(domArr[i].search(atomPat)==-1){
   alert(prefix+"The domain name is not valid.\n\n");
   if(f)f.focus();
   return false;
  }
 }
 if(domArr[len-1].length!=2 && domArr[len-1].search(knownDomsPat)==-1){
  alert(prefix+"It must end in a well-known domain\nor a two letter country abbreviation.\n\n");
  if(f)f.focus();
  return false;
 }
 return true;
}
