
	var LastObj = ""
	var CurrentPage; 
	
	var LastColour 
	var CurrentText = ""
	
	var IsNav
	
	if (parseInt(navigator.appVersion) >= 4)
	{
		if (navigator.appName == "Netscape")
		{
	        	IsNav = true
		}
	}

	function GetObject(objectId)
	{
		// cross-browser function to get an object's object given its id
		if(document.getElementById && document.getElementById(objectId)) 
		{	// W3C DOM
			return document.getElementById(objectId);
		} 
		else if (document.all && document.all(objectId)) 
		{	// MSIE 4 DOM
			return document.all(objectId);
		} 
		else 
		{
			return false;
		}
	}
	
	function getStyleObject(objectId) 
	{
		Obj = GetObject(objectId)
		if (Obj)
		{
			return Obj.style
		}
		else if (document.layers && document.layers[objectId]) 
		{
			// NN 4 DOM.. note: this won't find nested layers
			return document.layers[objectId];
		} 
		else 
		{
			return false;
		}
	} 
	
	function changeObjectVisibility(objectId, newVisibility) 
	{
		// get a reference to the cross-browser style object and make sure the object exists
		var styleObject = getStyleObject(objectId);
		if(styleObject) 
		{
			styleObject.visibility = newVisibility;
			return true;
		} 
		else 
		{
			//we couldn't find the object, so we can't change its visibility
			return false;
		}
	} // changeObjectVisibility

	function VerifySame(ThisId,TargetId,Message)
	{
		var oTarget
		var oThis
		
		oTarget = GetObject(TargetId);
		oThis = GetObject(ThisId);
		
		vTarget = oTarget.value;
		vThis = oThis.value;
		
		if(vThis == vTarget)
			return true;
		alert(Message);	
		return false;
	}

	function ShowWhenSelected(Obj,Match,HideId)
	{
		// if the data in Obj matches Match then set HideId to show
		if(Obj.value == Match)
		{		
			changeObjectVisibility(HideId, "visible")
		}
		else
		{
			changeObjectVisibility(HideId, "hidden")
		}
	}
	
	function ShowWindow(sWindow)
	{
		newwindow = window.open(sWindow,"sub","height=600,width=1024,resizable,scrollbars")
		newwindow.focus()
	}


	function ShowHelp()
	{
		newwindow = window.open("help.htm","sub","resizable,scrollbars");
		newwindow.focus();
	}
	
	function RTrim(sString) 
	{
		while (sString.substring(sString.length-1,sString.length) == ' ')
		{
			sString = sString.substring(0,sString.length-1);
		}
		return sString;				
	}

	function LTrim(sString) {
	    while (sString.substring(0, 1) == ' ') {
	        sString = sString.substring(1, sString.length);
	    }
	    return sString;
	}


	function ReplaceSpaces(sString) 
	{
		var dString = "";
		var ch;	
		
		for(var i=0; i< sString.length; i++)
		{
			ch = sString.substring(i,i+6);
			if( ch == "&nbsp;")		
			{
				dString = dString + " ";
				i = i+5;
			}
			else
				dString = dString + sString.substring(i,i+1);
		}
		return dString;				
	}
				
	function GetPage()
	{
		if (CurrentText != "") {
		
		    CurrentPage =  RTrim(CurrentText);	
		    if(CurrentPage == "Events")
		    {
		        url = CurrentPage + ".php";		    
		    }
		    else
		    {
			    url = CurrentPage + ".htm";		
			}
			url = ReplaceSpaces(url);
			document.URL = url;
		}
	}
		
	function GetParentPage(tag)
	{
	    if (CurrentText != "") 
	    {	
		    CurrentPage1 = LTrim(CurrentText); 	   
		    CurrentPage = RTrim(CurrentPage1);		   
		   
		    if(CurrentPage == "Events")
		    {
		        url = CurrentPage + ".php";		    
		    }
		    else
		    {
			    url = CurrentPage + ".htm";		
			}
			url = ReplaceSpaces(url);
			parent.location.href = url;
			
			//paren.document.URL = url;
		}
	}	
	
	function Highlight(obj)
	{		
		 // obj.style.textDecorationUnderline = "true" 
		 CurrentText = obj.innerHTML;		 		 
		 LastColour = obj.style.color;
		 obj.style.color = "#F1AF21";		
		// obj.className = "sect_linkhi"
	}
	
	function Unhighlight(obj)
	{
		// obj.style.textDecorationNone = "true"
		// obj.style.color = "white"		
		obj.style.color = LastColour;
		CurrentText = ""
	}
	
	function ShowPopup(Id)
	{
		var Pop = window.open(Id,null,"height=1024,width=1064,scrollbars,resizable");		
		Pop.focus()
	}
	
	/*
	function SelectBody(State,MainId,SubId,FileId)
	{
		parent.Header.location.href = State +"Header.asp?MainSelected=" + MainId + "&SubSelected=" + SubId
		parent.Navbar.location.href = State +"Navbar.asp"
		parent.Body.location.href = FileId
	}
	*/

	
	function SelectBody(FileId)
	{
		parent.Body.location.href = FileId
	}
	
	function RefreshBody()
	{	
		parent.Navbar.location.href = parent.Navbar.location.href 
		parent.Body.location.href = parent.Body.location.href
	}
	
	function SelectBodyEx(Report,TargetId,Name)
	{
		var oTarget		
		
		oTarget = GetObject(TargetId);				
		vTarget = oTarget.value;
			
		parent.Body.location.href = Report +"&" + Name + "=" + vTarget
	}
		
	function SelectParent(Body,NavBar,Header)
	{
		parent.Header.location.href = Header
		parent.Body.location.href = Body
		parent.NavBar.location.href = NavBar
	}
	
	function LogIn(UserId,PassId)
	{
	
	}
	
	
	function ToggleAndSet(Id,ValueOn,ValueOff,GifOn,GifOff,Type,Target)
	{
		var oTarget
		oTarget = GetObject(Target);
		On = ToggleIcon(Id,ValueOn,ValueOff,GifOn,GifOff,Type,oTarget);					
		var val = Number(oTarget.value)
		if(!On)
		{
			oTarget.value = val + ValueOn;
		}
		else
		{
			oTarget.value = val & ~ValueOn;
		}
		return false;
	}
	
	function ToggleIcon(Id,ValueOn,ValueOff,GifOn,GifOff,Type,oTarget)
	{
		On = false;
		var val = Number(oTarget.value)
		var Obj = GetObject(Id)
		
		switch(Type)
		{
			case 'E':
				if (val == ValueOn)
					On = true;
				break;
				
			case 'A':
				if((val & ValueOn) == ValueOn)
					On = true;
				break;
		}
		
		if(On)
		{
			Obj.src=GifOff;			
		}
		else
		{
			Obj.src=GifOn;			
		}
		
		return On;
	}
	
	function ShowProcessing()
	{
		parent.Body.location.href="Processing.asp"	
	}
	
	function ShowImage(Source)
	{
		var Obj = GetObject("IMG1")	
		Obj.src = Source.src
	}
	
	
	// Copyright © 2001 by Apple Computer, Inc., All Rights Reserved.
//
// You may incorporate this Apple sample code into your own code
// without restriction. This Apple sample code has been provided "AS IS"
// and the responsibility for its operation is yours. You may redistribute
// this code, but you are not permitted to redistribute it as
// "Apple sample code" after having made changes.

// ugly workaround for missing support for selectorText in Netscape6/Mozilla
// call onLoad() or before you need to do anything you would have otherwise used
// selectorText for.
var ugly_selectorText_workaround_flag = false;
var allStyleRules;
// code developed using the following workaround (CVS v1.15) as an example.
// http://lxr.mozilla.org/seamonkey/source/extensions/xmlterm/ui/content/XMLTermCommands.js
function ugly_selectorText_workaround() {
	if((navigator.userAgent.indexOf("Gecko") == -1) ||
	   (ugly_selectorText_workaround_flag)) {
		return; // we've already been here or shouldn't be here
	}
	var styleElements = document.getElementsByTagName("style");
	
	for(var i = 0; i < styleElements.length; i++) {
		var styleText = styleElements[i].firstChild.data;
		// this should be using match(/\b[\w-.]+(?=\s*\{)/g but ?= causes an
		// error in IE5, so we include the open brace and then strip it
		allStyleRules = styleText.match(/\b[\w-.]+(\s*\{)/g);
	}

	for(var i = 0; i < allStyleRules.length; i++) {
		// probably insufficient for people who like random gobs of 
		// whitespace in their styles
		allStyleRules[i] = allStyleRules[i].substr(0, (allStyleRules[i].length - 2));
	}
	ugly_selectorText_workaround_flag = true;
}


// setStyleById: given an element id, style property and 
// value, apply the style.
// args:
//  i - element id
//  p - property
//  v - value
//
function setStyleById(i, p, v) {
	var n = document.getElementById(i);
	n.style[p] = v;
}

// getStyleById: given an element ID and style property
// return the current setting for that property, or null.
// args:
//  i - element id
//  p - property
function getStyleById(i, p) {
	var n = document.getElementById(i);
	var s = eval("n.style." + p);

	// try inline
	if((s != "") && (s != null)) {
		return s;
	}

	// try currentStyle
	if(n.currentStyle) {
		var s = eval("n.currentStyle." + p);
		if((s != "") && (s != null)) {
			return s;
		}
	}
	
	// try styleSheets
	var sheets = document.styleSheets;
	if(sheets.length > 0) {
		// loop over each sheet
		for(var x = 0; x < sheets.length; x++) {
			// grab stylesheet rules
			var rules = sheets[x].cssRules;
			if(rules.length > 0) {
				// check each rule
				for(var y = 0; y < rules.length; y++) {
					var z = rules[y].style;
					// selectorText broken in NS 6/Mozilla: see
					// http://bugzilla.mozilla.org/show_bug.cgi?id=51944
					ugly_selectorText_workaround();
					if(allStyleRules) {
						if(allStyleRules[y] == i) {
							return z[p];
						}			
					} else {
						// use the native selectorText and style stuff
						if(((z[p] != "") && (z[p] != null)) ||
						   (rules[y].selectorText == i)) {
							return z[p];
						}
					}
				}
			}
		}
	}
	return null;
}

// setStyleByClass: given an element type and a class selector,
// style property and value, apply the style.
// args:
//  t - type of tag to check for (e.g., SPAN)
//  c - class name
//  p - CSS property
//  v - value
var ie = (document.all) ? true : false;

function setStyleByClass(t,c,p,v){
	var elements;
	if(t == '*') {
		// '*' not supported by IE/Win 5.5 and below
		elements = (ie) ? document.all : document.getElementsByTagName('*');
	} else {
		elements = document.getElementsByTagName(t);
	}
	for(var i = 0; i < elements.length; i++){
		var node = elements.item(i);
		for(var j = 0; j < node.attributes.length; j++) {
			if(node.attributes.item(j).nodeName == 'class') {
				if(node.attributes.item(j).nodeValue == c) {
					eval('node.style.' + p + " = '" +v + "'");
				}
			}
		}
	}
}

// getStyleByClass: given an element type, a class selector and a property,
// return the value of the property for that element type.
// args:
//  t - element type
//  c - class identifier
//  p - CSS property
function getStyleByClass(t, c, p) {
	// first loop over elements, because if they've been modified they
	// will contain style data more recent than that in the stylesheet
	var elements;
	if(t == '*') {
		// '*' not supported by IE/Win 5.5 and below
		elements = (ie) ? document.all : document.getElementsByTagName('*');
	} else {
		elements = document.getElementsByTagName(t);
	}
	for(var i = 0; i < elements.length; i++){
		var node = elements.item(i);
		for(var j = 0; j < node.attributes.length; j++) {
			if(node.attributes.item(j).nodeName == 'class') {
				if(node.attributes.item(j).nodeValue == c) {
					var theStyle = eval('node.style.' + p);
					if((theStyle != "") && (theStyle != null)) {
						return theStyle;
					}
				}
			}
		}		
	}
	// if we got here it's because we didn't find anything
	// try styleSheets
	var sheets = document.styleSheets;
	if(sheets.length > 0) {
		// loop over each sheet
		for(var x = 0; x < sheets.length; x++) {
			// grab stylesheet rules
			var rules = sheets[x].cssRules;
			if(rules.length > 0) {
				// check each rule
				for(var y = 0; y < rules.length; y++) {
					var z = rules[y].style;
					// selectorText broken in NS 6/Mozilla: see
					// http://bugzilla.mozilla.org/show_bug.cgi?id=51944
					ugly_selectorText_workaround();
					if(allStyleRules) {
						if((allStyleRules[y] == c) ||
						   (allStyleRules[y] == (t + "." + c))) {
							return z[p];
						}			
					} else {
						// use the native selectorText and style stuff
						if(((z[p] != "") && (z[p] != null)) &&
						   ((rules[y].selectorText == c) ||
						    (rules[y].selectorText == (t + "." + c)))) {
							return z[p];
						}
					}
				}
			}
		}
	}

	return null;
}

// setStyleByTag: given an element type, style property and 
// value, and whether the property should override inline styles or
// just global stylesheet preferences, apply the style.
// args:
//  e - element type or id
//  p - property
//  v - value
//  g - boolean 0: modify global only; 1: modify all elements in document
function setStyleByTag(e, p, v, g) {
	if(g) {
		var elements = document.getElementsByTagName(e);
		for(var i = 0; i < elements.length; i++) {
			elements.item(i).style[p] = v;
		}
	} else {
		var sheets = document.styleSheets;
		if(sheets.length > 0) {
			for(var i = 0; i < sheets.length; i++) {
				var rules = sheets[i].cssRules;
				if(rules.length > 0) {
					for(var j = 0; j < rules.length; j++) {
						var s = rules[j].style;
						// selectorText broken in NS 6/Mozilla: see
						// http://bugzilla.mozilla.org/show_bug.cgi?id=51944
						ugly_selectorText_workaround();
						if(allStyleRules) {
							if(allStyleRules[j] == e) {
								s[p] = v;
							}			
						} else {
							// use the native selectorText and style stuff
							if(((s[p] != "") && (s[p] != null)) &&
							   (rules[j].selectorText == e)) {
								s[p] = v;
							}
						}

					}
				}
			}
		}
	}
}

// getStyleByTag: given an element type and style property, return
// the property's value
// args:
//  e - element type
//  p - property
function getStyleByTag(e, p) {
	var sheets = document.styleSheets;
	if(sheets.length > 0) {
		for(var i = 0; i < sheets.length; i++) {
			var rules = sheets[i].cssRules;
			if(rules.length > 0) {
				for(var j = 0; j < rules.length; j++) {
					var s = rules[j].style;
					// selectorText broken in NS 6/Mozilla: see
					// http://bugzilla.mozilla.org/show_bug.cgi?id=51944
					ugly_selectorText_workaround();
					if(allStyleRules) {
						if(allStyleRules[j] == e) {
							return s[p];
						}			
					} else {
						// use the native selectorText and style stuff
						if(((s[p] != "") && (s[p] != null)) &&
						   (rules[j].selectorText == e)) {
							return s[p];
						}
					}

				}
			}
		}
	}

	// if we don't find any style sheets, return the value for the first
	// element of this type we encounter without a CLASS or STYLE attribute
	var elements = document.getElementsByTagName(e);
	var sawClassOrStyleAttribute = false;
	for(var i = 0; i < elements.length; i++) {
		var node = elements.item(i);
		for(var j = 0; j < node.attributes.length; j++) {
			if((node.attributes.item(j).nodeName == 'class') ||
			   (node.attributes.item(j).nodeName == 'style')){
			   sawClassOrStyleAttribute = true;
			}
		}
		if(! sawClassOrStyleAttribute) {
			return elements.item(i).style[p];
		}
	}
}