
// --- ROLLOVER SECTION ---------------------------------------

var imgpath=""; // default base path for rollover images

var rollovers=new Object;
var pageloaded=false;

function rollover(name) {
  var oTemp = eval('rollovers.'+name);
  if (oTemp == null) {
    oTemp = eval('rollovers.'+name+'=new Object');
    oTemp.over = new Array;
  }
  for (var i=1; i<rollover.arguments.length; ++i)
    oTemp.over[i]=imgpath+rollover.arguments[i];
  if (pageloaded == true) {
    for (var i=1; i<oTemp.over.length; ++i) {
      var oTemp2 = new Image;
      oTemp2.src=oTemp.over[i];
      oTemp.over[i]=oTemp2;
    }
    oTemp.out=document[name].src;
    document[name].onload=null;
  }
}

function over(name,i) {
  if (!i) i=1;
  if (document[name].onload==null)
    document[name].src=eval('rollovers.'+name).over[i].src;
}

function out(name) {
  if (document[name].onload==null)
    document[name].src=eval('rollovers.'+name).out;
}

function prepreload() {
  setTimeout("preload()",500); // delay, to compensate for some NS problems
}

function preload() {
  for (var j in rollovers) {
    obj=eval("rollovers."+j);
    for (var i=1; i<obj.over.length; ++i) {
      var temp = new Image;
      temp.src=obj.over[i];
      obj.over[i]=temp;
    }
    obj.out=document[j].src;
    document[j].onload=null;
  }
  pageloaded=true;
}

window.onload=prepreload;


// --- LAYER SECTION ---------------------------------------

function oFindLayer(sLayer) {
  if (document.getElementById)
    return document.getElementById(sLayer);
  if (document.layers)
    return eval("document."+sLayer);
  return eval("document.all."+sLayer);
}

function SetLayerPos(sLayer,iPosX,iPosY) {
  var oTemp = oFindLayer(sLayer);
  if (oTemp.style) {
    oTemp.style.left = iPosX;
    oTemp.style.top = iPosY;
    oTemp.style.visibility = "visible";
  }
  else {
    oTemp.left = iPosX;
    oTemp.top = iPosY;
    oTemp.visibility = "show";
  }
}

function SetLayerVisibility(sLayer,bVisible) {
  var oTemp = oFindLayer(sLayer);
  if (oTemp.style)
    oTemp.style.visibility = bVisible ? "visible" : "hidden";
  else
    oTemp.visibility = bVisible ? "show" : "hide";
}


// --- POPUP SECTION ---------------------------------------

var oPopupImage = null;
var oPopupPage = null;
var iLoadingPopupX = 140;
var iLoadingPopupY = 100;  
var bPopupComplete = false;
var iPopupMarginX = 0;
var iPopupMarginY = 0;
var iPopupMinX = 0;
var iPopupMinY = 0;

function aiScreenPosXY(iPopupX, iPopupY) {
  var iScreenPosX = (screen.availWidth>iPopupX) ? (screen.availWidth-iPopupX)/2 : 0;
  var iScreenPosY = (screen.availHeight>iPopupY) ? (screen.availHeight-iPopupY)/2 : 0;
  return [iScreenPosX, iScreenPosY];
}

function aiPageXY() {
  var iX, iY;
  if (window.innerWidth) {
    iX = window.innerWidth;
    iY = window.innerHeight;
  }
  else if (document.body.clientWidth) {
    iX = document.body.clientWidth;
    iY = document.body.clientHeight;
  }
  return [iX,iY];
}

function aiBrowserChrome() {
  window.resizeTo(200,200);
  var aiPageSize = aiPageXY();
  aiPageSize[0] = 200 - aiPageSize[0];
  if (aiPageSize[0] < 0)
    aiPageSize[0] = 0; 
  aiPageSize[1] = 200 - aiPageSize[1];
  if (aiPageSize[1] < 0)
    aiPageSize[1] = 0; 
  return aiPageSize;  
}

function showError() {
  if (bPopupComplete == true)
    return;
  bPopupComplete = true;
  SetLayerVisibility("loading", false);
  SetLayerVisibility("error", true);
}

function showImage() {
  if (bPopupComplete == true)
    return;
  bPopupComplete = true;
  SetLayerVisibility("loading", false);
  var oPic = (document.layers) ? document.layers.image.document.pic : document.pic;
  var aiChrome = aiBrowserChrome();
  var iPopupX = oPic.width + aiChrome[0] + 2*iPopupMarginX;
  var iPopupY = oPic.height + aiChrome[1] + 2*iPopupMarginY;
  if (iPopupX < iPopupMinX)
    iPopupX = iPopupMinX;
  if (iPopupY < iPopupMinY)
    iPopupY = iPopupMinY;
  var aiScreenPos = aiScreenPosXY(iPopupX, iPopupY);	
  window.moveTo(aiScreenPos[0], aiScreenPos[1]);
  window.resizeTo(iPopupX,iPopupY);
  var aiSize = aiPageXY();
  var iImagePosX = (aiSize[0] - oPic.width) / 2;
  var iImagePosY = (aiSize[1] - oPic.height) / 2;
  if (document.layers)
    setTimeout('SetLayerPos("image",'+iImagePosX+','+iImagePosY+')',200);
  else
    SetLayerPos("image",iImagePosX,iImagePosY);
}

function popupImage(sImageURL, sTitle) {
  if (sTitle == null || sTitle == "")
    sTitle = "Image Popup";
  if (oPopupImage != null) {
    oPopupImage.close();
	oPopupImage = null;
  }
  aiScreenPos = aiScreenPosXY(iLoadingPopupX,iLoadingPopupY);
  oPopupImage = window.open("popup.asp?image="+escape(sImageURL)+"&title="+escape(sTitle),"","resizable,scrollbars=no,width="+iLoadingPopupX+",height="+iLoadingPopupY+",screenX="+aiScreenPos[0]+",screenY="+aiScreenPos[1]+",left="+aiScreenPos[0]+",top="+aiScreenPos[1]);
  oPopupImage.focus();
}

function popupPage(sPageURL, iXsize, iYsize, bSeparate, bNoScrollbars) {
  if (iXsize == null)
    iXsize=500;
  if (iYsize == null)
    iYsize=350;
  var sScroll = "scrollbars,";
  if (bNoScrollbars == true)
    sScroll = "";
  var iXpos = (screen.width-26>iXsize) ? (screen.width-iXsize)/2 : 0;
  var iYpos = (screen.height-26>iYsize) ? (screen.height-iYsize)/2 : 0;
  if (bSeparate == true)
    window.open(sPageURL,"",sScroll+"width="+iXsize+",height="+iYsize+",screenX="+iXpos+",screenY="+iYpos+",left="+iXpos+",top="+iYpos);
  else {
    if (oPopupPage != null && oPopupPage.closed == false)
      oPopupPage.close();
    oPopupPage = window.open(sPageURL,"PopupPage",sScroll+"width="+iXsize+",height="+iYsize+",screenX="+iXpos+",screenY="+iYpos+",left="+iXpos+",top="+iYpos);
    oPopupPage.focus();
  }
}

function closePopups() {
  if (oPopupImage != null)
    oPopupImage.close();
  if (oPopupPage != null && oPopupPage.closed == false)
    oPopupPage.close();
}

window.onunload=closePopups;

// --- LISTBOX SECTION ---------------------------------------


function decodeURL(oSelect) {
  var sEncodedURL = oSelect.options[oSelect.selectedIndex].value;
  oSelect.selectedIndex = -1;
  if (sEncodedURL == "")
    return;
  var asURL = sEncodedURL.split(":");
  if (asURL[0] == "anchor") {
    if (top.frame0)
	  top.frame0.location.hash = asURL[1];
	else
	   top.location.hash = asURL[1];
  }	   
  else if (asURL[0] == "mailto")
    self.location.href="mailto:"+asURL[1];
  else if (asURL[0] == "_blank")
    window.open(asURL[1]+"?name="+asURL[3]);
  else if (asURL[0] == "_top" && window.cmsframeset != asURL[1])
    top.location.href = asURL[1]+"?name="+asURL[3];
  else if (asURL[3] != "")
    top.frame0.location.href = asURL[2]+"?name="+asURL[3];
}

// --- FORM SECTION ---------------------------------------

function bValidateForm(oForm) {
  var sResult = "";
  if (oForm.email) {
    var sEmail = oForm.email.value;
    if (sEmail == "")
	  sResult += "Please enter your email address\n\n";
    else {	  
      var recheck = /\s/;	    
      if (recheck.test(sEmail) == true)
  	    sResult += "Email addresses cannot contain spaces\n\n";
      if (sEmail.indexOf("@") == -1)	  
        sResult += "Email addresses must contain an @ symbol\n\n";
      recheck = /\w+@(\w+\.)+\w{2,3}$/
      if (recheck.test(sEmail) == false)
        sResult += "There appears to be a mistake in the\nemail address you have typed.\nPlease check it and try again.\n\n"; 
    }
  }
  if (sResult != "") {
    alert(sResult);
	if (oForm.email)
      oForm.email.focus();
    return false;
  }
  return true;
}

// --- FLYUP SECTION ---------------------------------------

var iFlyupTimeout;
var sFlyupName;

function getXY(sName) {
  var iX = 0;
  var iY = 0;
  var oTemp = document[sName];  
  var iXwidth = oTemp.width;
  var iYheight = oTemp.height;
 
  if (document.layers) {
    iX = oTemp.x;
    iY = oTemp.y;
  }
  else {
    while (oTemp.offsetParent != null) {
      iX += oTemp.offsetLeft;
      iY += oTemp.offsetTop;
      oTemp = oTemp.offsetParent;
    }
//    iX += parseInt(document.body.leftMargin); // Mac IE5
//    iY += parseInt(document.body.topMargin); // Mac IE5
  }
  return [iX,iY,iXwidth,iYheight];
}

function findLayer(layername) {
  if (document.getElementById)
    return document.getElementById(layername);
  if (document.layers)
    return (eval('document.'+layername));
  return (eval('document.all.'+layername));
}

function layerPosShow(layername,xpos,ypos) {
  layerobj=findLayer(layername);
  if (document.layers) {
    layerobj.left=xpos;
    layerobj.top=ypos;
    layerobj.visibility='show';
  }
  else {
    layerobj.style.left=xpos;
    layerobj.style.top=ypos;
    layerobj.style.visibility='visible';
  }
}

function layerPosHide(layername,xpos,ypos) {
  layerobj=findLayer(layername);
  if (document.layers) {
    layerobj.left=xpos;
    layerobj.top=ypos;
    layerobj.visibility='hide';
  }
  else {
    layerobj.style.left=xpos;
    layerobj.style.top=ypos;
    layerobj.style.visibility='hidden';
  }
}

function FlyupShow(sLayer) {
  if (sFlyupName != null) {
    if (sLayer == sFlyupName) { // re-showing nav about to be hidden, cancel
      if (iFlyupTimeout != null) {
        clearTimeout(iFlyupTimeout);
        iFlyupTimeout = null;
      }
    }
    else {		     
      layerPosHide(sFlyupName,-500,-500); // hide early
    }
  }
  var aiCoord = getXY("b"+sLayer.substr(1));
  layerPosShow(sLayer,aiCoord[0],aiCoord[1]+aiCoord[3]);
  sFlyupName = sLayer;
}

function FlyupHide(sLayer) {
  iFlyupTimeout = setTimeout("FlyupDelayedHide('"+sLayer+"')",200);
}

function FlyupDelayedHide(sLayer) {
  layerPosHide(sLayer,-500,-500);
  if (sLayer == sFlyupName)
    sFlyupName = null; 
}
