// JavaScript Document

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;
}

function swapImgRestoreForFlyout(strLnkID, strGroup, strOrigImgURL) {
	if(document.getElementById(strGroup).style.visibility == 'visible')
		window.setTimeout('swapImgRestoreForFlyout(\'' + strLnkID + '\', \'' + strGroup + '\', \'' + strOrigImgURL + '\')', 100);
	else
		document.getElementById(strLnkID).firstChild.src = strOrigImgURL;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

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 showObj( obj ) {
  objWin = window.open( '', 'objectWindow', '' );
	if( !objWin.document.body )
		objWin.document.write( '<html><head></head><body></body></html>' );
	objWin.document.body.style.font = '11px Ariel, Helvetica, Sans-serif';
	var strHTML = '<h2>' + obj + '</h2>';
	strHTML += '<table cellspacing="0" border="1">';
	var objRegExp = new RegExp( '<', 'g' );
	var objRegExpLB = new RegExp( '\\n', 'g' );
  for( o in obj ) {
		strHTML += '<tr>';
		strHTML += '<td valign="top">' + o + ': </td>';
		strHTML += '<td valign="top" style="color: #660000;">';
    try {
			strObjTxt = new String( obj[ o ] );
      strHTML += strObjTxt.replace( objRegExp, '&lt;' ).replace( objRegExpLB, '<br />' );
    } catch( er ) {
      strHTML += '--ERROR [' + er + ']--';
    }
		strHTML += '</td>';
    strHTML += '</tr>';
  }
	strHTML += '</table>';
  strHTML += '<br />';
	objWin.document.body.innerHTML += strHTML;
}

// JavaScript Document

// canManipulateImages - check if the browser we're using can do
// clever stuff with document images.

function canManipulateImages() {
	if (document.images)
		return true;
	else
		return false;
}

// loadPosterImage

function loadPosterImage(imageURL) {
	if (gImageCapableBrowser) {
		document.imagePoster.src = imageURL;
		return false;
	}
	else {
		return true;
	}
}

// gImageCapableBrowser - is this browser hip to images? Set up
// a global variable so that we don't have to keep calling a function
// (useful if the function becomes costly to compute).

gImageCapableBrowser = canManipulateImages();

var gbW3C = true;
if (!document.getElementsByTagName || !document.getElementById || !document.createElement)
	gbW3C = false;
function gfW3C_Failed() {
	alert('Warning: Some functionality has been disabled due to your aging web browser.');
}
function gfMissingObj(sObjName) {
	if (sObjName)
		alert('Warning: ' + sObjName + ' HTML object is missing, please allow this page to fully load.');
	else
		alert('Warning: An HTML object is missing, please allow this page to fully load.');
}


/*
 * (c)2006 Dean Edwards/Matthias Miller/John Resig
 * Special thanks to Dan Webb's domready.js Prototype extension
 * and Simon Willison's addLoadEvent
 *
 * For more info, see:
 * http://dean.edwards.name/weblog/2006/06/again/
 * http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype
 * http://simon.incutio.com/archive/2004/05/26/addLoadEvent
 * 
 * Thrown together by Jesse Skinner (http://www.thefutureoftheweb.com/)
 *
 *
 * To use: call fSafeAddOnload one or more times with functions, ie:
 *
 *    function something() {
 *       // do something
 *    }
 *    fSafeAddOnload(something);
 *
 *    fSafeAddOnload(function() {
 *        // do other stuff
 *    });
 *
 */
 
function fSafeAddOnload(func) {
	v = 'v3.0.0 2006-11-14; like:; req:;';
	if (!window.__load_events) {
		var init = function () {
			if (arguments.callee.done) return; // quit if this function has already been called
	
			arguments.callee.done = true; // flag this function so we don't do the same thing twice
	
			if (window.__load_timer) { // kill the timer
				clearInterval(window.__load_timer);
				window.__load_timer = null;
			}
	
			for (var i=0;i < window.__load_events.length;i++) { // execute each function in the stack in the order they were added
				window.__load_events[i]();
			}
			window.__load_events = null;
	
			// clean up the __ie_onload event
			/*@cc_on @*/
			/*@if (@_win32)
				document.getElementById("__ie_onload").onreadystatechange = "";
			/*@end @*/
		};
			
		if (document.addEventListener) // for Mozilla/Opera9
			document.addEventListener("DOMContentLoaded", init, false);
			
		// for Internet Explorer
		/*@cc_on @*/
		/*@if (@_win32)
			document.write("<scr"+"ipt id=__ie_onload defer src=javascript:void(0)><\/scr"+"ipt>");
			var script = document.getElementById("__ie_onload");
			script.onreadystatechange = function() {
				if (this.readyState == "complete")
					init(); // call the onload handler
			};
		/*@end @*/
		
		// for Safari
		if (/WebKit/i.test(navigator.userAgent)) { // sniff
			window.__load_timer = setInterval(function() {
				if (/loaded|complete/.test(document.readyState))
					init(); // call the onload handler
			}, 10);
		}
	
		// for other browsers
		window.onload = init;
	
		// create event function stack
		window.__load_events = [];
	}
	
	// add function to event stack
	window.__load_events.push(func);
}


function fApplyLinkBehaviour(sContainerName) { // v1.5.6 2004-10-10; like:fSafeAddOnload; req:fPopupFromTarget(v1.3);
	// sContainerName (optional)
	if (!document.getElementsByTagName) return;
	if (typeof(sContainerName) == 'string') // if page too large force links to behave
		var tAs = document.getElementById(sContainerName).getElementsByTagName('a');
	else // check enitre document
		var tAs = document.getElementsByTagName('a');

	for (i=0; i<tAs.length; i++) {
		tA = tAs[i];
		if (tA.target) {
			if (tA.target == 'fresh')
				tA.target = '_blank';
			else if (tA.target.indexOf('popup') != -1)
				tA.onclick = fPopupFromTarget;
			else if (tA.target == 'self')
				tA.target = '_self';
		} else if (tA.href) { // force PDF into new window, unless target set to self
			if (tA.href.indexOf('.pdf') != -1)
				tA.target = '_blank';
		}
	}
}
fSafeAddOnload(fApplyLinkBehaviour);

function fPopupFromTarget(oA) { // v1.4.0 2004-10-15; like:fApplyLinkBehaviour(v1.5); req:fOpenWin(v1.4);
	oSelf = (this.target) ? this : oA; // if onlick from fApplyLinkBehaviour use THIS else hardcoded onclick use oA (hardcoded as 'this')
	sWinHref = oSelf.href.toString();
	aWinArgs = oSelf.target.split(':');
	sWinTitle = (aWinArgs.length > 3) ? aWinArgs[3] : 'popup'; // window name = fourth argument

	aFilename = sWinHref.split('.');
	sFileType = aFilename[aFilename.length-1];
	
	if (sFileType == "jpg" || sFileType == "gif" || sFileType == "png") { // if image then no scrollbars
		bScrollBars = false; // hide scrollbars with image cuz each browser has different padding
		iImgWinEnlargeOffset = 20; // add this # to w,h cuz opening a win. without HTML (ie img), each browser adds margin/padding
} else {
		bScrollBars = true;
		iImgWinEnlargeOffset = 0;
	}

	fOpenWin(sWinHref,parseInt(aWinArgs[1])+iImgWinEnlargeOffset,parseInt(aWinArgs[2])+iImgWinEnlargeOffset,sWinTitle,bScrollBars) // href, width, height, name, scrollbars
	
	return false; // prevent href and target from HTML launching second window
}

function fOpenWin(sURL,iW,iH,sName,bScrollBars) { // v1.5.0 2004-12-22; like:; req:;
	iXPos=0, iYPos=15;
	if (window.innerWidth) { // NN4, NN6, O7
		iXPos = (window.innerWidth-iW)/2;
		iYPos = (window.innerHeight-iH)/2;
		iXPos+=window.screenX; iYPos+=window.screenY;
	} else {	// screen width (1 600) not used because I want centred in window on screen
		iXPos = (document.body.clientWidth-iW)/2;	// current window width (800) - new window width (400) / 2 = 200 on each side
		iBrowserHeight = (document.compatMode=="CSS1Compat")?document.documentElement.clientHeight:document.body.clientHeight;
		iYPos = (iBrowserHeight-iH)/2;
		iXPos+=window.screenLeft; iYPos+=window.screenTop;	// current position of window (400) + iXPos (200) = 600 is left pos
	} // left space (600) + new width (400) + right space (600) = screen res (1 600)

	if (typeof bScrollBars == 'boolean')
		bScrollBars = (bScrollBars)?'yes':'no';
	else
		bScrollBars = 'yes' // not defined set to default

	sArgs="width=" +iW+ ",height=" +iH+ ",resizable=yes,scrollbars=" +bScrollBars+ ",status=yes,screenx=" +iXPos+ ",screeny=" +iYPos+ ",left=" +iXPos+ ",top=" +iYPos
	if (!sName) sName = 'popup';
	oWin=window.open(sURL,sName,sArgs);

	if (oWin != null) {
		if (oWin.opener == null) // give orphan child window this parent
			oWin.opener = self;
		oWin.focus()
	}
}
function fApplyImageBehaviour(sNavLevel) { // v1.2.0 CUSTOM 2004-08-31; like:; req:;
	var aMouseOvers = new Array(); var aMouseOuts = new Array();
	if (!(document.createElement && document.getElementsByTagName)) return; // W3 DOM detection
	var oNavs = document.getElementById('jsApplyRollOvers'+sNavLevel);
	if (!oNavs) return;
	var tImgs = oNavs.getElementsByTagName('img');
	for (var i=0;i<tImgs.length;i++) {
		if (tImgs[i].id != 'jsIgnoreRollOvers') { // test if NOT delimiter/spacer image
			tImgs[i].onmouseover = function() {this.src = aMouseOvers[this.number].src;};
			tImgs[i].onmouseout = function() {this.src = aMouseOuts[this.number].src;};
			var suffix = tImgs[i].src.substring(tImgs[i].src.lastIndexOf('.'));
			aMouseOuts[i] = new Image();
			aMouseOuts[i].src = tImgs[i].src;
			aMouseOvers[i] = new Image();
			aMouseOvers[i].src = tImgs[i].src.substring(0,tImgs[i].src.lastIndexOf('.')) + "-o" + suffix;
			tImgs[i].number = i;
		}
	}
}