﻿/********************************************************/
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

/********************************************************/
/* NOTE: MM_findObj is used in MM_swapImage and MM_replaceImage */

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

/********************************************************/
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

/********************************************************/
function MM_replaceImage() { //v3.0
 var i,j=0,x,a=MM_replaceImage.arguments; document.MM_sr=new Array;  for(i=0;i<(a.length-2);i+=3) 
  if ((x=MM_findObj(a[i]))!=null)  {document.MM_sr[j++]=x; x.src=a[i+2];  }
  }

/**********************************************************/ 
/* Function: LaunchWindow
/* Purpose: Opens pop-up form
/**********************************************************/ 
function LaunchWindow(strURL, strName, intWidth, intHeight)
{
    var sw = screen.availWidth;
    var sh = screen.availHeight;
    var left = (sw-intWidth)/2;
    var top = (sh-intHeight)/2;
    var strURL = strURL;
   
    windowHandle = window.open(strURL, strName,"width=" + intWidth + ", height="+intHeight+", location=no, menubar=no, status=no, toolbar=no, scrollbars=yes, resizable=yes, left="+left+", top="+top+"")
    windowHandle.focus();
}

/**********************************************************/ 
/* Function: SendFriend
/* Purpose: Opens pop-up form to send page to a friend passing 
/*          the referrer in the querystring.
/**********************************************************/             
function SendFriend(strURL, strName, intWidth, intHeight)
{
    var sw = screen.availWidth;
    var sh = screen.availHeight;
    var left = (sw-intWidth)/2;
    var top = (sh-intHeight)/2;
    var url = strURL + '?url=' + window.location.toString();
   
    windowHandle = window.open(url, strName,"width=" + intWidth + ", height="+intHeight+", location=no, menubar=no, status=no, toolbar=no, scrollbars=yes, resizable=yes, left="+left+", top="+top+"");
    windowHandle.focus();
}

/********************************************************/

// Function for Print
function PrintAlert()
{
// Print warning has default set in placeholder: Please change your print settings to landscape orientation for best print results.
alert("Please change your print settings to landscape orientation for best print results.")
//If user clicks OK then launch print
window.print()
}

/********************************************************/
function Addtofavourites(url, title) 
{
url = location.href;
title = document.title;
 if (window.sidebar) { // Mozilla Firefox Bookmark
  window.sidebar.addPanel(title, url,"");
 } else if( window.external ) { // IE Favorite 
  window.external.AddFavorite(url, title); }
 else if(window.opera && window.print) { // Opera Hotlist 
  return true; }
}
/********************************************************/
 
/* Flash Object on Home Page */

/**
 * SWFObject v1.4.4: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * **SWFObject is the SWF embed script formerly known as FlashObject. The name was changed for
 *   legal reasons.
 */
if(typeof deconcept == "undefined") var deconcept = new Object();
if(typeof deconcept.util == "undefined") deconcept.util = new Object();
if(typeof deconcept.SWFObjectUtil == "undefined") deconcept.SWFObjectUtil = new Object();
deconcept.SWFObject = function(swf, id, w, h, ver, c, useExpressInstall, quality, xiRedirectUrl, redirectUrl, detectKey){
 if (!document.getElementById) { return; }
 this.DETECT_KEY = detectKey ? detectKey : 'detectflash';
 this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY);
 this.params = new Object();
 this.variables = new Object();
 this.attributes = new Array();
 if(swf) { this.setAttribute('swf', swf); }
 if(id) { this.setAttribute('id', id); }
 if(w) { this.setAttribute('width', w); }
 if(h) { this.setAttribute('height', h); }
 if(ver) { this.setAttribute('version', new deconcept.PlayerVersion(ver.toString().split("."))); }
 this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion();
 if(c) { this.addParam('bgcolor', c); }
 var q = quality ? quality : 'high';
 this.addParam('quality', q);
 this.setAttribute('useExpressInstall', useExpressInstall);
 this.setAttribute('doExpressInstall', false);
 var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location;
 this.setAttribute('xiRedirectUrl', xir);
 this.setAttribute('redirectUrl', '');
 if(redirectUrl) { this.setAttribute('redirectUrl', redirectUrl); }
}
deconcept.SWFObject.prototype = {
 setAttribute: function(name, value){
  this.attributes[name] = value;
 },
 getAttribute: function(name){
  return this.attributes[name];
 },
 addParam: function(name, value){
  this.params[name] = value;
 },
 getParams: function(){
  return this.params;
 },
 addVariable: function(name, value){
  this.variables[name] = value;
 },
 getVariable: function(name){
  return this.variables[name];
 },
 getVariables: function(){
  return this.variables;
 },
 getVariablePairs: function(){
  var variablePairs = new Array();
  var key;
  var variables = this.getVariables();
  for(key in variables){
   variablePairs.push(key +"="+ variables[key]);
  }
  return variablePairs;
 },
 getSWFHTML: function() {
  var swfNode = "";
  if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture
   if (this.getAttribute("doExpressInstall")) { this.addVariable("MMplayerType", "PlugIn"); }
   swfNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'"';
   swfNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';
   var params = this.getParams();
    for(var key in params){ swfNode += [key] +'="'+ params[key] +'" '; }
   var pairs = this.getVariablePairs().join("&");
    if (pairs.length > 0){ swfNode += 'flashvars="'+ pairs +'"'; }
   swfNode += '/>';
  } else { // PC IE
   if (this.getAttribute("doExpressInstall")) { this.addVariable("MMplayerType", "ActiveX"); }
   swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';
   swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';
   var params = this.getParams();
   for(var key in params) {
    swfNode += '<param name="'+ key +'" value="'+ params[key] +'" />';
   }
   var pairs = this.getVariablePairs().join("&");
   if(pairs.length > 0) {swfNode += '<param name="flashvars" value="'+ pairs +'" />';}
   swfNode += "</object>";
  }
  return swfNode;
 },
 write: function(elementId){
  if(this.getAttribute('useExpressInstall')) {
   // check to see if we need to do an express install
   var expressInstallReqVer = new deconcept.PlayerVersion([6,0,65]);
   if (this.installedVer.versionIsValid(expressInstallReqVer) && !this.installedVer.versionIsValid(this.getAttribute('version'))) {
    this.setAttribute('doExpressInstall', true);
    this.addVariable("MMredirectURL", escape(this.getAttribute('xiRedirectUrl')));
    document.title = document.title.slice(0, 47) + " - Flash Player Installation";
    this.addVariable("MMdoctitle", document.title);
   }
  }
  if(this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))){
   var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;
   n.innerHTML = this.getSWFHTML();
   return true;
  }else{
   if(this.getAttribute('redirectUrl') != "") {
    document.location.replace(this.getAttribute('redirectUrl'));
   }
  }
  return false;
 }
}
/* ---- detection functions ---- */
deconcept.SWFObjectUtil.getPlayerVersion = function(){
 var PlayerVersion = new deconcept.PlayerVersion([0,0,0]);
 if(navigator.plugins && navigator.mimeTypes.length){
  var x = navigator.plugins["Shockwave Flash"];
  if(x && x.description) {
   PlayerVersion = new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
  }
 }else{
  // do minor version lookup in IE, but avoid fp6 crashing issues
  // see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
  try{
   var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
  }catch(e){
   try {
    var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
    PlayerVersion = new deconcept.PlayerVersion([6,0,21]);
    axo.AllowScriptAccess = "always"; // throws if player version < 6.0.47 (thanks to Michael Williams @ Adobe for this code)
   } catch(e) {
    if (PlayerVersion.major == 6) {
     return PlayerVersion;
    }
   }
   try {
    axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
   } catch(e) {}
  }
  if (axo != null) {
   PlayerVersion = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
  }
 }
 return PlayerVersion;
}
deconcept.PlayerVersion = function(arrVersion){
 this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0;
 this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0;
 this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0;
}
deconcept.PlayerVersion.prototype.versionIsValid = function(fv){
 if(this.major < fv.major) return false;
 if(this.major > fv.major) return true;
 if(this.minor < fv.minor) return false;
 if(this.minor > fv.minor) return true;
 if(this.rev < fv.rev) return false;
 return true;
}
/* ---- get value of query string param ---- */
deconcept.util = {
 getRequestParameter: function(param) {
  var q = document.location.search || document.location.hash;
  if(q) {
   var pairs = q.substring(1).split("&");
   for (var i=0; i < pairs.length; i++) {
    if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
     return pairs[i].substring((pairs[i].indexOf("=")+1));
    }
   }
  }
  return "";
 }
}
/* fix for video streaming bug */
deconcept.SWFObjectUtil.cleanupSWFs = function() {
 if (window.opera || !document.all) return;
 var objects = document.getElementsByTagName("OBJECT");
 for (var i=0; i < objects.length; i++) {
  objects[i].style.display = 'none';
  for (var x in objects[i]) {
   if (typeof objects[i][x] == 'function') {
    objects[i][x] = function(){};
   }
  }
 }
}
// fixes bug in fp9 see http://blog.deconcept.com/2006/07/28/swfobject-143-released/
deconcept.SWFObjectUtil.prepUnload = function() {
 __flash_unloadHandler = function(){};
 __flash_savedUnloadHandler = function(){};
 if (typeof window.onunload == 'function') {
  var oldUnload = window.onunload;
  window.onunload = function() {
   deconcept.SWFObjectUtil.cleanupSWFs();
   oldUnload();
  }
 } else {
  window.onunload = deconcept.SWFObjectUtil.cleanupSWFs;
 }
}
if (typeof window.onbeforeunload == 'function') {
 var oldBeforeUnload = window.onbeforeunload;
 window.onbeforeunload = function() {
  deconcept.SWFObjectUtil.prepUnload();
  oldBeforeUnload();
 }
} else {
 window.onbeforeunload = deconcept.SWFObjectUtil.prepUnload;
}
/* add Array.push if needed (ie5) */
if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }}
/* add some aliases for ease of use/backwards compatibility */
var getQueryParamValue = deconcept.util.getRequestParameter;
var FlashObject = deconcept.SWFObject; // for legacy support
var SWFObject = deconcept.SWFObject;
 
/* End Flash Object on Home Page */
/********************************************************/

/*****************************************************************************
Purpose: to limit the amount of characters that can be entered into a textarea
Form field Limiter script- By Dynamic Drive
For full source code and more DHTML scripts, visit http://www.dynamicdrive.com
This credit MUST stay intact for use 
*****************************************************************************/

function restrictinput(maxlength,e,placeholder)
{
 if (window.event&&event.srcElement.value.length>=maxlength)
  return false
 else if (e.target&&e.target==eval(placeholder)&&e.target.value.length>=maxlength)
 {
  var pressedkey=/[a-zA-Z0-9\.\,\/]/ //detect alphanumeric keys
  if (pressedkey.test(String.fromCharCode(e.which)))
  e.stopPropagation()
 }
}

function countlimit(maxlength,e,placeholder)
{
 var theform=eval(placeholder)
 var lengthleft=maxlength-theform.value.length
 var placeholderobj=document.all? document.all[placeholder] : document.getElementById(placeholder)
 if (window.event||e.target&&e.target==eval(placeholder))
 {
  if (lengthleft<0)
   theform.value=theform.value.substring(0,maxlength)
   placeholderobj.innerHTML=lengthleft
 }
}

function displaylimit(theform,thelimit,thetext)
{
var ns6=document.getElementById&&!document.all
var limit_text='<b><span id="'+theform.toString()+'">'+thelimit+'</span></b> '+ thetext;
 if (document.all||ns6)
  document.write(limit_text)
  if (document.all)
  {
   eval(theform).onkeypress=function()
   
   { 
   return restrictinput(thelimit,event,theform)
   }
   eval(theform).onkeyup=function()
   { 
    countlimit(thelimit,event,theform)
   }
  }
  else if (ns6)
  {
   document.body.addEventListener('keypress', function(event) { restrictinput(thelimit,event,theform) },true); 
   document.body.addEventListener('keyup', function(event) { countlimit(thelimit,event,theform) }, true); 
  }
}
/*****************************************************************************/
/*****************************************************************************
Purpose: Loads Google maps
*****************************************************************************/
 // class for holding map co-ordinates & map details
    function myMapObject(longitude,latitude, balloonText, mapId, zoom, markerLng, markerLat, markerText) 
    {
    this.longitude = longitude;
    this.latitude = latitude;
    this.balloonText = balloonText;
    this.mapId = mapId;
    this.zoom = zoom;
    this.markerLng = markerLng;
    this.markerLat = markerLat;
    this.markerText = markerText;
    }
    
    var objectArrayIndex = 0;
    var myObjectArray = new Array();
    
   //adds map values to map array for one marker on a map only
    function setMapObject(longitude,latitude, balloonText,mapId, zoom) 
    {
       myObjectArray[objectArrayIndex++] = new myMapObject(longitude,latitude, balloonText, mapId, zoom, null, null, '');
    }
 
    //used to add more than one marker to a map array
    function setMarkerObject(longitude,latitude, balloonText,mapId, zoom, markerLng, markerLat, markerText) 
    {
       myObjectArray[objectArrayIndex++] = new myMapObject(longitude,latitude, balloonText,mapId, zoom, markerLng, markerLat, markerText);
    }
    
    //calls display map function
    function load()
    {
        showObjectArray(myObjectArray,objectArrayIndex);
    }
    //loops through array using values to display Google maps
    function showObjectArray(object, length) 
    {
        for (var i=0; i<length; i++) 
        {
        displayMap(object[i].mapId, object[i].longitude, object[i].latitude, object[i].balloonText, object[i].zoom, object[i].markerLng, object[i].markerLat, object[i].markerText);
        }
    }
   
     
    // function provided by Google to display maps 
    function displayMap(sMap, iLongitude, iLatitude, sText, iZoom, iMarkerLng, iMarkerLat, sMarkerText) 
    {
      if (GBrowserIsCompatible()) 
      {
        var map = new GMap2(document.getElementById(sMap));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        
        map.setCenter(new GLatLng(iLatitude, iLongitude, false), iZoom);
        map.addOverlay(createMarker(new GLatLng(iLatitude, iLongitude, false),"<strong>" + sText + "</strong>"));
        if(iMarkerLng != null)
        {
        map.addOverlay(createMarker(new GLatLng(iMarkerLat, iMarkerLng, false), "<strong>" + sMarkerText + "</strong>"));       }
      }
    }
    
    function createMarker(point, blurb) 
    {
          var marker = new GMarker(point);
          GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(blurb);
      });
      return marker;
    }