/* 
* google maps loading code
*/
var map;
var gDir;
var point

function gMapLoad() {
      if (GBrowserIsCompatible()) {
        
        map = new GMap2(document.getElementById("map"));
        point= new GLatLng(52.782180,-1.202556);
        map.setCenter(point, 11);
        map.addControl(new GSmallZoomControl());
        
        var marker=new GMarker(point);
        var windowContent="<b>Studio-40</b><br />18 The Office Village<br />North Road<br />Loughborough<br />Leicestershire<br/>LE11 1QJ<br /><br /><strong>01509 631136</strong><br /><br /><form action=\"http://maps.google.co.uk/maps\" method=\"get\" target=\"_blank\"><input id=\"daddr\" class=\"text\" type=\"hidden\" size=\"10\" value=\"LE11 1QJ\" name=\"daddr\"/><label for='saddr'>Enter your postcode</label><br /><input id=\"saddr\" class=\"text\" type=\"text\" size=\"10\" value=\"\" name=\"saddr\" style=\"margin-right:10px;\" /><input type='submit' value='Get Directions!' name='submit'  /><br /><p style=\"font-size:10px;\">directions open in a new window</p></form>"
        map.addOverlay(marker);
        //GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(windowContent);
        //});
        GEvent.addListener(marker,"click",function(){
          marker.openInfoWindowHtml(windowContent);
        });
        
        gDir=new GDirections(map,document.getElementById("directionsCon"));
        GEvent.addListener(gDir,"load",onGDirectionsLoad);
        GEvent.addListener(gDir, "error", handleErrors);
        //setDirections("LE11 1NL");
        
      }
      
    }

    function setDirections(fromAddress){
      //alert (fromAddress);
      gDir.load("from: "+fromAddress+", UK to: 52.782180,-1.202556"); 
    }
    
    function onGDirectionsLoad(){
      //don't know what to do here....
      //document.getElementById("directionsCon").innerHTML = gDir.getStatus().code;
    }
    
    function handleErrors(){
        if (gDir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
        alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + gDir.getStatus().code);
        else if (gDir.getStatus().code == G_GEO_SERVER_ERROR)
        alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gDir.getStatus().code);
        
        else if (gDir.getStatus().code == G_GEO_MISSING_QUERY)
        alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gDir.getStatus().code);
        
        // else if (gDir.getStatus().code == G_UNAVAILABLE_ADDRESS) <--- Doc bug... this is either not defined, or Doc is wrong
        // alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gDir.getStatus().code);
        
        else if (gDir.getStatus().code == G_GEO_BAD_KEY)
        alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gDir.getStatus().code);
        
        else if (gDir.getStatus().code == G_GEO_BAD_REQUEST)
        alert("A directions request could not be successfully parsed.\n Error code: " + gDir.getStatus().code);
        
        else alert("An unknown error occurred.");
     }

/*
* use JS to hide controls which are only required when JS is not enabled
* - do this by adding hideJS as a class to the css
*/
function hideElements() {
  if (document.styleSheets) {
    if (document.styleSheets[0].addRule) {    // IE
      document.styleSheets[0].addRule('.hideJS','display: none',0);
    } else {    // !IE
      document.styleSheets[0].insertRule('.hideJS {display: none}', 0);
    }
  }

}

/*
* Add the onload function to any other onload function
*/
function addLoadEvent(func) {
  var oldonload = window.onload;

  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}



// show the form wait box
function showWait(id) {
  if (document.getElementById(id)) {
    var el=document.getElementById(id);

    el.style.position='absolute';
    el.style.left='50%';
    el.style.top='50%';
    el.style.display='block';
    el.style.marginLeft="-" + parseInt(el.offsetWidth  / 2)+'px';
    el.style.marginTop ="-" + parseInt(el.offsetHeight / 2)+'px';
    // IE has a quirk which means we need to reload the animated gif to make it animate
    if (document.getElementById(id+'wImg')) setTimeout("document.getElementById('"+id+"wImg').src=document.getElementById('"+id+"wImg').src",20);
  }
}


/*
* Add the photo banner effect
*/
function imgHover() {
  var chover=null;
  if(chover=document.getElementById('chover')) {
   // document.getElementById('chover');
    chover.onmouseover=function(e) {document.getElementById('cContent').style.display='block';}
    chover.onmouseout=function(e) {document.getElementById('cContent').style.display='none';}
  }
}
/* ////////////////// Home page functions ///////////////// */
addLoadEvent(replaceHover);
addLoadEvent(imgHover);
/*
* if on the home page then replace the CSS hover effects with JS ones
*/
function replaceHover() {
  if(document.getElementById('isHomePage')) {
    var cssRules=document.styleSheets[0];
    var numRules=cssRules.cssRules? cssRules.cssRules.length : cssRules.rules.length;

    // delete existing css rules (last 5 in css file)
    if (cssRules.removeRule) { // IE
      cssRules.removeRule(numRules-1);
      cssRules.removeRule(numRules-2);
      cssRules.removeRule(numRules-3);
      cssRules.removeRule(numRules-4);

      // make popups clickable
      cssRules.addRule('.home .mainCon .sectionCon .hover:hover','cursor: pointer;',0);
      document.getElementById('onhover0').onclick=function(e) {document.location.href=document.getElementById('pLink0').href;}
      document.getElementById('onhover1').onclick=function(e) {document.location.href=document.getElementById('pLink1').href;}
      document.getElementById('onhover2').onclick=function(e) {document.location.href=document.getElementById('pLink2').href;}
    } else { // !IE
      cssRules.deleteRule(numRules-1);
      cssRules.deleteRule(numRules-2);
      cssRules.deleteRule(numRules-3);
      cssRules.deleteRule(numRules-4);

      // for safari which doesn't let us modify style sheets
      var el = document.getElementById('wbox0');
      el.parentNode.removeChild(el);
      el = document.getElementById('wbox1');
      el.parentNode.removeChild(el);
      el = document.getElementById('wbox2');
      el.parentNode.removeChild(el);

      // make popups clickable
      cssRules.insertRule('.home .mainCon .sectionCon .hover:hover {cursor: pointer;}', 0);
      document.getElementById('onhover0').onclick=function(e) {document.location.href=document.getElementById('pLink0').href;}
      document.getElementById('onhover1').onclick=function(e) {document.location.href=document.getElementById('pLink1').href;}
      document.getElementById('onhover2').onclick=function(e) {document.location.href=document.getElementById('pLink2').href;}
    }
  }
}

var fadeDir=0;
var fadeLevel=100;

function showBox(boxNum) {
  if(1) {
    document.getElementById('onhover'+boxNum).style.display='block';
    document.getElementById('bArrow'+boxNum).style.display='block';
    fadeDir=-1;
    fadeWhite(boxNum);
  }
}

function hideBox(boxNum) {
  if(1) {
    document.getElementById('onhover'+boxNum).style.display='none';
    document.getElementById('bArrow'+boxNum).style.display='none';

    fadeDir=1;
    fadeWhite(boxNum);
  }
}


function fadeWhite(boxNum) {
  var wbox=document.getElementById('hBanner');
  if(fadeDir<0 && fadeLevel>80) {
    fadeLevel=fadeLevel-3;
    if(fadeLevel<80) {
      fadeLevel=80;
    }
    wbox.style.opacity = fadeLevel/100;
    wbox.style.filter = 'alpha(opacity='+fadeLevel+')';
  } else if(fadeDir>0 && fadeLevel<100) {
    fadeLevel=fadeLevel+3;
    if(fadeLevel>100) {
      fadeLevel=100;
    }
    wbox.style.opacity = fadeLevel/100;
    wbox.style.filter = 'alpha(opacity='+fadeLevel+')';
  } else {
    fadeDir=0;
  }
  if(fadeDir!=0) setTimeout('fadeWhite('+boxNum+')',25);
}

/* /////////////////////Gallery functions////////////////////// */
var gDestPos=0;
/* preload next image */
function gPreload() {
  if((gImgs.length-1)> gCurImg) { // preload next image
    var gPre=new Image();
    gPre.src='/cm_sitedata/page_images/'+gImgs[(gCurImg+1)][0];
  }
}

/* decide whether to show the sidebars or not */
function gSideBars() {
  if(gCurImg >0) document.getElementById('preFix').style.display='block';
  else document.getElementById('preFix').style.display='none';

  if((gCurImg+1)<gImgs.length) document.getElementById('postFix').style.display='block';
  else document.getElementById('postFix').style.display='none';
}

/* initiate sliding to previous image */
function gPrevious() {
  if(gCurImg>0) {
    var gNewImg=gCurImg-1;
    document.getElementById('preFix').style.display='none';
    document.getElementById('postFix').style.display='none';
    gDestPos=720*gNewImg;
    gSlide(gNewImg);
  }
  return false;
}

/* initiate sliding to next image */
function gNext() {
  if((gCurImg+1)<gImgs.length) {
    var gNewImg=gCurImg+1;
    document.getElementById('preFix').style.display='none';
    document.getElementById('postFix').style.display='none';

    if(gImgs[gNewImg][2]==false) { // draw slide
      var img=document.createElement("img");
      img.setAttribute("src", '/cm_sitedata/page_images/'+gImgs[gNewImg][0]);
      img.setAttribute("alt", gImgs[gNewImg][1]);
      document.getElementById('gSlide').style.width=(720*(gNewImg+1))+'px';
      document.getElementById('gSlide').appendChild(img);
      gImgs[gNewImg][2]=true; // slide is drawn
    }
    gDestPos=720*gNewImg;
    gSlide(gNewImg);
  }
  return false;
}

/* slide to the new position */
function gSlide(gNewImg) {
  var inc=0;

  if(gNewImg>gCurImg) {// next
    if(gSlidePos<gDestPos) {
      inc=7+((gDestPos-gSlidePos)/25);
      gSlidePos=gSlidePos+inc; // keep going
      if(gSlidePos>gDestPos) gSlidePos=gDestPos; // error check
    }
  } else { // previous
    if(gSlidePos>gDestPos) {
      inc=-7+((gDestPos-gSlidePos)/25);
      gSlidePos=gSlidePos+inc;
      if(gSlidePos<gDestPos) gSlidePos=gDestPos; // error check
    }
  }

  if (inc!=0) { // move slide
    document.getElementById('gFrame').scrollLeft=gSlidePos;
    setTimeout('gSlide('+gNewImg+')',15);
  } else { // end sliding
    gCurImg=gNewImg;
    gSideBars();
    gPreload();
  }
}
/*////////////////////////////hide / show /////////////////////////////// */
// change the display attribute of two elements
function switchDisplay(id1,id2) {
  if(document.getElementById(id2)) {
    if(document.getElementById(id2).style.display!='block') {
      document.getElementById(id2).style.display='block';
      document.getElementById(id1).style.display='none';
    } else {
      document.getElementById(id2).style.display='none';
      document.getElementById(id1).style.display='block';
    }
  }
  return false;
}

// scroll an element to show a new part
// the two parts need to be equal height so the new part totally replaces the old one!
function raiseDisplay(id,focusid) {
  var el=document.getElementById(id);

  if(el.scrollTop<(el.scrollHeight/2)) {
    var scrollTop=el.scrollTop+1+((el.scrollHeight-el.scrollTop)/20);

    if(scrollTop>el.scrollHeight) scrollTop=el.scrollHeight;

    el.scrollTop=parseInt(scrollTop);
    setTimeout('raiseDisplay("'+id+'","'+focusid+'")',15);
  } else if(focusid.length>0) {
    var focusel=document.getElementById(focusid);
    focusel.focus();
    if(focusel.selectionStart) { // set cursor position
      focusel.selectionStart=0;
      focusel.selectionEnd=0;
    }
  }

  return false;
}

/* account functions */
function showAccPop(e) {
  var accPop=document.getElementById('accPop');
  var el=document.getElementById('accClick');

  if(accPop.style.display!='block') {
    accPop.style.display='block';
    focusel=document.getElementById('userFP');
    try {
      focusel.focus();
      if(focusel.selectionStart) { // set cursor position
        focusel.selectionStart=0;
        focusel.selectionEnd=0;
      }
    }
    catch(e) {}
    el.className='sel';
  } else {
    accPop.style.display='none';
    el.className='nosel';
  }
  return false;
}

addLoadEvent(hideElements);

function toggleAccFields(bOn,enPassword) {
  document.getElementById('userFP').disabled=!bOn;
  if(bOn && enPassword) document.getElementById('passwordP').disabled=false;
  else document.getElementById('passwordP').disabled=true;

  if(bOn==true) {
    document.getElementById('userFP').focus();
    document.getElementById('userFP').className='txtfield';
    if(enPassword) document.getElementById('passwordP').className='txtfield';
    else document.getElementById('passwordP').className='txtdisabled';
  } else {
    document.getElementById('userFP').className='txtdisabled';
    document.getElementById('passwordP').className='txtdisabled';
  }
}
addLoadEvent(toggleAccFields);