<!--
// BallGate Systems Common Javascripts Library
// Copyright Henry Bates 2001,2002,2003,2004,2006,2007,2008
// All rights reserved
// onRes0,offRes0 Flashes alternative gif images
// initial gif name, then name1.gif
// both gifs in current directory
// Usage - issue calls to function from link, make image name
// same as gif name

// ua.js - Detect Browser
// Requires JavaScript 1.1

// work around bug in xpcdom Mozilla 0.9.1

window.saveNavigator = window.navigator;

// to stop layers until page loaded completely
// must set to true with onLoad event in BODY tag
var pagefullyloaded = false;

// to give delay before changing layers
var worktime = new Date();
var layerdelay = 0;
var okToShow = true;

// used for Hager-Vor site to swap images randomly
myImage = new Image
var imgno = 1;
var baseimage = '';
var imgname = '';
var maxseq = 0;

// used by image refresh routines, if image name present then don't refresh that image
var fixedimage = '';

// Handy functions
function noop() {}
function noerror() { return true; }

function defaultOnError(msg, url, line)
{
  // customize this for your site
  if (top.location.href.indexOf('/evangelism/lib/js/errors/') == -1)
    top.location = '/evangelism/lib/js/errors/index.html?msg=' + escape(msg) + '&url=' + escape(url) + '&line=' + escape(line);
}

// Display Error page... 
// XXX: more work to be done here
//
function reportError(message)
{
  // customize this for your site
  if (top.location.href.indexOf('/evangelism/lib/js/errors/') == -1)
    top.location = '/evangelism/lib/js/errors/index.html?msg=' + escape(message);
}

function pageRequires(cond, msg, redirectTo)
{
  if (!cond)
  {
    msg = 'This page requires ' + msg;
    top.location = redirectTo + '?msg=' + escape(msg);
  }
  // return cond so can use in <A> onclick handlers to exclude browsers
  // from pages they do not support.
  return cond;
}

// Swap images randomly on page load
// Needs local onLoad call to load all random images
// baseimage = the image file name e.g. myphoto
// imgname = the name= identification on the page
// maxseq = number of possible images
// i.e. if maxseq=3 then choose from myphoto1.jpg,myphoto2.jpg and myphoto3.jpg
function LoadNewImage(baseimage,imgname,maxseq) {
    imgno = Math.random() * 100000;
    imgno = Math.round(imgno % maxseq);
    if (imgno == maxseq) {
      imgno = 0;
    }
    imgno = imgno + 1;
    myImage.src = baseimage + imgno + '.jpg';
    document.images[imgname].src = myImage.src;
}
// As above but image file names set up in an array
// Pass array and immage name on page
function LoadRandomImage(basearray,imgname) {
	maxseq = basearray.length; // Number of images in array
	imgno = Math.floor(Math.random() * maxseq + 1);
    imgno = imgno - 1;
    myImage.src = basearray[imgno] + '.jpg';
    document.images[imgname].src = myImage.src;
}
function detectBrowser()
{
  var oldOnError = window.onerror;
  var element = null;
  
  //window.onerror = defaultOnError;

  navigator.OS    = '';
  navigator.version  = 0;
  navigator.org    = '';
  navigator.family  = '';

  var platform;
  if (typeof(window.navigator.platform) != 'undefined')
  {
    platform = window.navigator.platform.toLowerCase();
    if (platform.indexOf('win') != -1)
      navigator.OS = 'win';
    else if (platform.indexOf('mac') != -1)
      navigator.OS = 'mac';
    else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1)
      navigator.OS = 'nix';
  }

  var i = 0;
  var ua = window.navigator.userAgent.toLowerCase();
  
  if (ua.indexOf('opera') != -1)
  {
    i = ua.indexOf('opera');
    navigator.family  = 'opera';
    navigator.org    = 'opera';
    navigator.version  = parseFloat('0' + ua.substr(i+6), 10);
  }
  else if ((i = ua.indexOf('msie')) != -1)
  {
    navigator.org    = 'microsoft';
    navigator.version  = parseFloat('0' + ua.substr(i+5), 10);
    
    if (navigator.version < 4)
      navigator.family = 'ie3';
    else
      navigator.family = 'ie4'
  }
  else if (typeof(window.controllers) != 'undefined' && typeof(window.locationbar) != 'undefined')
  {
    i = ua.lastIndexOf('/')
    navigator.version = parseFloat('0' + ua.substr(i+1), 10);
    navigator.family = 'gecko';

    if (ua.indexOf('netscape') != -1)
      navigator.org = 'netscape';
    else if (ua.indexOf('compuserve') != -1)
      navigator.org = 'compuserve';
    else
      navigator.org = 'mozilla';
  }
  else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1))
  {
      var is_major = parseFloat(navigator.appVersion);
    
    if (is_major < 4)
      navigator.version = is_major;
    else
    {
      i = ua.lastIndexOf('/')
      navigator.version = parseFloat('0' + ua.substr(i+1), 10);
    }
    navigator.org = 'netscape';
    navigator.family = 'nn' + parseInt(navigator.appVersion);
  }
  else if ((i = ua.indexOf('aol')) != -1 )
  {
    // aol
    navigator.family  = 'aol';
    navigator.org    = 'aol';
    navigator.version  = parseFloat('0' + ua.substr(i+4), 10);
  }

  navigator.DOMCORE1  = (typeof(document.getElementsByTagName) != 'undefined' && typeof(document.createElement) != 'undefined');
  navigator.DOMCORE2  = (navigator.DOMCORE1 && typeof(document.getElementById) != 'undefined' && typeof(document.createElementNS) != 'undefined');
  navigator.DOMHTML  = (navigator.DOMCORE1 && typeof(document.getElementById) != 'undefined');
  navigator.DOMCSS1  = ( (navigator.family == 'gecko') || (navigator.family == 'ie4') );

  navigator.DOMCSS2   = false;
  if (navigator.DOMCORE1)
  {
    element = document.createElement('p');
    navigator.DOMCSS2 = (typeof(element.style) == 'object');
  }

  navigator.DOMEVENTS  = (typeof(document.createEvent) != 'undefined');

  //window.onerror = oldOnError;
}

detectBrowser();

function onRes0(imgn)
{
	document.images[imgn].src=imgn+"1.gif"
}
function offRes0(imgn)
{
	document.images[imgn].src=imgn+".gif"
}	
// onRes1,offRes1 as above except gifs are in 1 directory lower than current
function onRes1(imgn)
{
	document.images[imgn].src="../"+imgn+"1.gif"
}
function offRes1(imgn)
{
	document.images[imgn].src="../"+imgn+".gif"
}	
// onRes,offRes - works like onRes1,offRes1 but oddball as
// gif image names are preceded by "tab"
function onRes(imgn)
{
	document.images[imgn].src="../tab"+imgn+"1.gif"
}
function offRes(imgn)
{
	document.images[imgn].src="../tab"+imgn+".gif"
}	
// onResw,offResw works like those above but call specifies
// both the page image name and the full URL of the images
function onResw(imgn,http)
{
	if (imgn != fixedimage) {
		document.images[imgn].src=http;
	}
}
function offResw(imgn,http)
{
	if (imgn != fixedimage) {
		document.images[imgn].src=http;
	}
}
// onResh,offResh - oddball, gif name preceded by "bgl"	
function onResh(imgn)
{
	document.images[imgn].src="bgl"+imgn+"1.gif"
}
function offResh(imgn)
{
	document.images[imgn].src="bgl"+imgn+".gif"
}	
// Layer Control - typically drop down menus
// ShowLayer and HideLayer - parameter is layer name
function ShowLayer(layname)
{
	var layname1;
	layname1 = layname;
	if (pagefullyloaded == true){
	if (navigator.family == 'nn4') {
		document.layers[layname1].visibility="SHOW"
			}
			else if (navigator.family == 'ie4' && navigator.version >=4 && navigator.version < 5) {
		document.all(layname1).style.visibility="VISIBLE"
			}
			else if (navigator.DOMHTML && navigator.DOMCSS2) {
		mydiv = document.getElementById(layname1)
		mydiv.style.visibility = "VISIBLE"
			}
	}
}
// Conditional show layer - sets checkname to true
function ShowLayerCond(layname,checkname)
{
	checkname = false;
	ShowLayer(layname);
}
// Conditional hide layer - waits 1/10 second then only hides layer if checkname = false
function HideLayerCond(layname,checkname)
{
	var layname4;
	layname4 = layname;
	var checkname4;
	checkname4 = checkname;
	window.setTimeout('HideLayerCondX()',1000,layname4,checkname4);
}
function HideLayerCondX(layname,checkname)
{
	if (checkname == false){
		HideLayer(layname);
	}
}
function setDelay()
{
	worktime = new Date();
	layerdelay = worktime.getTime();
	layerdelay = layerdelay + 200;
}
function TimeForIt()
{
	worktime = new Date();
	okToShow = false;
	if (worktime.getTime() > layerdelay){
		okToShow = true;
	}
	return okToShow;
}
function HideLayer(layname)
{
	var layname2
	layname2 = layname
	if (pagefullyloaded == true){
	if (navigator.family == 'nn4') {
		document.layers[layname2].visibility="HIDDEN"
			}
			else if (navigator.family == 'ie4' && navigator.version >=4 && navigator.version < 5) {
		document.all(layname2).style.visibility="HIDDEN"
			}
			else if (navigator.DOMHTML && navigator.DOMCSS2) {
		mydiv = document.getElementById(layname2)
		mydiv.style.visibility = "HIDDEN"
			}
	}
}
//	onResal,offResal - used to make the drop down table visible
// Usage - call function from main option link
// gifs must be in same directory and named name.gif and name1.gif
// layer must have ID of "l"name
// Used in conjunction with onResll,offResll
function onResal(imgn)
{
	var layname1
	layname1 = "l" + imgn
	document.images[imgn].src=imgn+"1.gif"
	if (navigator.family == 'nn4') {
		document.layers[layname1].visibility="SHOW"
			}
			else if (navigator.family == 'ie4' && navigator.version >=4 && navigator.version < 5) {
		document.all(layname1).style.visibility="VISIBLE"
			}
			else if (navigator.DOMHTML && navigator.DOMCSS2) {
		mydiv = document.getElementById(layname1)
		mydiv.style.visibility = "VISIBLE"
			}

//	if (navigator.appName == 'Netscape') {
//		document.layers[layname1].visibility="SHOW"
//    } else { //IE
//		document.all(layname1).style.visibility="VISIBLE"
//   }
}
function offResal(imgn)
{
	var layname2
	layname2 = "l" + imgn
	document.images[imgn].src=imgn+".gif"
	if (navigator.family == 'nn4') {
		document.layers[layname2].visibility="HIDDEN"
			}
			else if (navigator.family == 'ie4' && navigator.version >=4 && navigator.version < 5) {
		document.all(layname2).style.visibility="HIDDEN"
			}
			else if (navigator.DOMHTML && navigator.DOMCSS2) {
		mydiv = document.getElementById(layname2)
		mydiv.style.visibility = "HIDDEN"
			}
//	if (navigator.appName == 'Netscape') {
//		document.layers[layname2].visibility="HIDDEN"
//    } else { //IE
//		document.all(layname2).style.visibility="HIDDEN"
//   }
}
// As above but images held in lower directory
function onResal1(imgn)
{
	var layname1
	layname1 = "l" + imgn
	document.images[imgn].src="../"+imgn+"1.gif"
	if (navigator.family == 'nn4') {
		document.layers[layname1].visibility="SHOW"
			}
			else if (navigator.family == 'ie4' && navigator.version >=4 && navigator.version < 5) {
		document.all(layname1).style.visibility="VISIBLE"
			}
			else if (navigator.DOMHTML && navigator.DOMCSS2) {
		mydiv = document.getElementById(layname1)
		mydiv.style.visibility = "VISIBLE"
			}
//	if (navigator.appName == 'Netscape') {
//		document.layers[layname1].visibility="SHOW"
//    } else { //IE
//		document.all(layname1).style.visibility="VISIBLE"
//   }
}
function offResal1(imgn)
{
	var layname2
	layname2 = "l" + imgn
	document.images[imgn].src="../"+imgn+".gif"
	if (navigator.family == 'nn4') {
		document.layers[layname2].visibility="HIDDEN"
			}
			else if (navigator.family == 'ie4' && navigator.version >=4 && navigator.version < 5) {
		document.all(layname2).style.visibility="HIDDEN"
			}
			else if (navigator.DOMHTML && navigator.DOMCSS2) {
		mydiv = document.getElementById(layname2)
		mydiv.style.visibility = "HIDDEN"
			}
//	if (navigator.appName == 'Netscape') {
//		document.layers[layname2].visibility="HIDDEN"
//    } else { //IE
//		document.all(layname2).style.visibility="HIDDEN"
//   }
}
// Used to keep drop down layer active - i.e. stops
// the layer disappearing when mouse leaves the main menu option area
function onResll(imgn)
{
	var layname1
	layname1 = "l" + imgn
	if (navigator.family == 'nn4') {
		document.layers[layname1].visibility="SHOW"
			}
			else if (navigator.family == 'ie4' && navigator.version >=4 && navigator.version < 5) {
		document.all(layname1).style.visibility="VISIBLE"
			}
			else if (navigator.DOMHTML && navigator.DOMCSS2) {
		mydiv = document.getElementById(layname1)
		mydiv.style.visibility = "VISIBLE"
			}
//	if (navigator.appName == 'Netscape') {
//		document.layers[layname3].visibility="SHOW"
//    } else { //IE
//		document.all(layname3).style.visibility="VISIBLE"
//   }
}
function offResll(imgn)
{
	var layname2
	layname2 = "l" + imgn
	if (navigator.family == 'nn4') {
		document.layers[layname2].visibility="HIDDEN"
			}
			else if (navigator.family == 'ie4' && navigator.version >=4 && navigator.version < 5) {
		document.all(layname2).style.visibility="HIDDEN"
			}
			else if (navigator.DOMHTML && navigator.DOMCSS2) {
		mydiv = document.getElementById(layname2)
		mydiv.style.visibility = "HIDDEN"
			}
//	if (navigator.appName == 'Netscape') {
//		document.layers[layname4].visibility="HIDDEN"
//    } else { //IE
//		document.all(layname4).style.visibility="HIDDEN"
//   }
}	
// Sets cookie values. Expiration date is optional
//
function setCookie(name, value, expire) {
   document.cookie = name + "=" + escape(value)
   + ((expire == null) ? "" : ("; expires=" + expire.toGMTString()))
}
// 
// Gets cookie values
//
function getCookie(Name) {
   var search = Name + "="
   if (document.cookie.length > 0) { // if there are any cookies
      offset = document.cookie.indexOf(search) 
      if (offset != -1) { // if cookie exists 
         offset += search.length 
         // set index of beginning of value
         end = document.cookie.indexOf(";", offset) 
         // set index of end of cookie value
         if (end == -1) 
            end = document.cookie.length
         return unescape(document.cookie.substring(offset, end))
      } 
   }
   return ''
  }


//-->
