/*	=======================================================================	*/
/// <remarks>
/// Version:
///		- number:	2.0.0	
///		- build:	20070828
///		- status:	live
/// </remarks>
/*	=======================================================================	*/
/// <remarks>
/// Global Variables
/// </remarks>
	var x_debug = false;
	var x_form_error = "", x_page_error = "";
	try {
		var x_page = new ClassSitePage(x_debug);
	} catch(e) {
		x_page_error = "loading error(x_page): "+e.description;
		alert(x_page_error);	
	}
/*	=======================================================================	*/
/// <remarks>
/// Class: ClassSitePage
/// The ClassSitePage object class has the following purpose/function:
///	- 
/// </remarks>
/*	-----------------------------------------------------------------------	*/
/// <summary>
/// The ClassSitePage object class is constructed as follows:
///		var thisobj = new ClassSitePage(dbg);
/// - where:
///		- dbg:	debugging switch
/// </summary>
function ClassSitePage(dbg) {
	/*	-------------------------------------------	*/
	/// <remarks>Properties: Public</remarks>
	/*	-------------------------------------------	*/
	this.parameter = "";
	/*	-------------------------------------------	*/
	/// <remarks>Properties: Private</remarks>
	/*	-------------------------------------------	*/
	var _self = this;	// self allows for a method/property to be called internally
	var _debug = (dbg)? dbg : false;
	var _id = "ClassSitePage";
	var _doc = document;
	var _win = window;
	var _docEl = _doc.documentElement;	
	var _href = document.location.href;
	var _pop, _pop_name = "xPop";
	var _showing = false;
	var _interval;
	var _maxopacity = 100;
	var _activeMnu = "topmnu1";
	var _activeTab = "tab1";
	var _ajaxForms, _ajaxElems;
	/*	-------------------------------------------	*/
	/// <remarks>Region: Accessor methods</remarks>
	/*	-------------------------------------------	*/
	this.GetID = function() { return(_id); }
	/*	-------------------------------------------	*/
	/// <remarks>Region: Public methods</remarks>
	/*	-------------------------------------------	*/
	this.OnLoad =_OnLoad;
	this.Resize =_Resize;
	this.Popup = _Popup;
	this.PopOut = _PopOut;
	this.Link = _Link;
	this.PopScroll = function(ul,wd,ht) { _popup(ul,_popset(true,false,false,true,wd,ht,false,true,true)); }
	this.PopScrollPost = function(ul,wd,ht,fm) { _poppost(ul,_popset(true,false,false,true,wd,ht,false,true,true), fm); }
	this.PopRoot = function(ul,wd,ht) { _popup(_root(ul),_popset(true,false,false,true,wd,ht,false,true,true)); }
	this.Pop = function(ul,wd,ht) { _popup(ul,_popset(true,false,false,false,wd,ht,false,true,true)); }
	this.PopCover = function(ul) { _popup(ul,_popset(true,false,false,false,800,600,false,true,true)); }
	this.PopCoverPost = function(ul,fm) { _poppost(ul,_popset(true,false,false,false,800,600,false,true,true), fm); }
	this.PopPrint = function() { _popup(_href+"&device=print",_popset(true,false,false,true,640,480,true,false,true)); }
	this.PopMap = function() { _popup("webpopup/map.html",_popset(true,false,false,false,800,600,false,false,false)); }
	this.GoUrl = _GoUrl;
	this.Toggle = _Toggle;
	this.ToggleDisplay = _ToggleDisplay;
	this.ToggleVisible = _ToggleVisible;
	this.ToggleHomeSwf = _ToggleHomeSwf;
	this.ToggleList = _ToggleList;
	this.HideHome = _HideHome;
	this.ShowHome = _ShowHome;
	this.ImageTag = _ImageTag;
	this.CheckDrop = _CheckDrop;
	this.DropShowHide = _DropShowHide;
	this.ShowTab = _ShowTab;
	this.SetFlashVar = _SetFlashVar;
	this.CreateFlash = _createFlash;
	this.GoDrop = _GoDrop;
	// version 2.* methods
	this.ToggleBack = _ToggleBack;
	this.HoverTab = _HoverTab;
	this.ToggleTab = _ToggleTab;
	this.ToggleSect = _ToggleSect;
	this.LoadAjax = _LoadAjax;
	/// <summary>Method:_OnLoad</summary>
	function _OnLoad(mnu, tb) {
		//_Debug("_OnLoad", "x_form:", x_form_error);
		_activeTab = tb;
		_activeMnu = mnu;
		_setHover(_activeMnu);
	}
			
	/// <summary>Method:_SetFlashVar</summary>
	/// - Sets the variable(varName) of a flash movie (fObj) to be varVal
	function _SetFlashVar(arg){
		_Debug("_SetFlashVar", "arg", arg);
		var fObj = arguments[0];
		var el  = _getEl(fObj);
		for(var i=1; i<arguments.length; i=i+2){
			var varName = arguments[i];
			var varVal = arguments[i+1];
			if(_isIE()) el.setVariable(varName, varVal);
			else eval("document." + fObj + ".SetVariable('" + varName + "', '" + varVal + "');");
		}
	}
	/// <summary>Method:_Resize</summary>
	function _Resize(ul) {
		// do resize here
	}
	/// <summary>Method:_Popup</summary>
	function _Popup(ul) {
		_popup(ul, "");
	}
	/// <summary>Method:_PopOut</summary>
	function _PopOut(dv, aul, rdm) {
		var re = /siteid=\w*/gi;
		var ul = (aul) ? aul.replace(re, "siteid=" + dv) : _self.Href.replace(re, "siteid=" + dv);		
		if (rdm)
			ul = ul.concat("&outid=",(new Date()).getTime()%Math.random());
		var mn = (dv=="ver5_print" || dv=="ver5_data");
		ul = (dv=="ver5_data") ? ul + "&device=data" : ul;
		var wd = (dv=="ver5_print")? 610 : 610;	//?
		_popup(ul,_popset(true,true,false,false,wd,400,mn,false,true));
	}
	/// <summary>Method:_Link</summary>
	function _Link(lnk) {
		var re = /link=\w*/gi;
		var ul = _href.replace(re, "link=" + lnk);
		document.location.href = ul;
	}
	/// <summary>Method:_GoUrl</summary>
	function _GoUrl(it) {
		if (it == "top")
			it = "#topofpage";
		if (it != "") 
			document.location.href = it;
	}
	/// <summary>Method: _Toggle</summary>
	function _Toggle(id,pmt,arg){
		var el = _getEl(id);
		if (el) {
			var ndx = el.innerHTML.indexOf(pmt);
			el.innerHTML = (ndx >= 0)? el.innerHTML.substr(0,ndx) : el.innerHTML.concat(pmt);
		}
		var argn = arguments.length;
		for(var i=2; i<argn; i=i+1) {
			_ToggleDisplay(arguments[i]);
		}
	}
	/// <summary>Method: _ToggleDisplay</summary>
	function _ToggleDisplay(id){
		var el = _getEl(id);
		if (el){
			_Debug("_ToggleDisplay", id, el.style.display);
			if (el.style.display=='none' || !(el.style.display)) {
				el.style.display = 'block';
			} else {
				el.style.display = 'none';
			}
		}
	}
	/// <summary>Method: _ToggleVisible</summary>
	function _ToggleVisible(id){
		var el = _getEl(id);
		if (!el)
			return;
		if (el.style.visibility=='hidden' || !(el.style.visibility)) {
			el.style.visibility = 'visible';
		} else {
			el.style.visibility = 'hidden';
		}
	}
	/// <summary>Method: _ToggleHomeSwf</summary>
	function _ToggleHomeSwf(id){
		//_Debug("_ToggleHomeSwf", "id", id);
		var el = _getEl("home-usp");
		if (!el)
			return;
		if (el.filters)
			el.filters.item(0).enabled = false;
		el.style.opacity = 1.0;
		el.style.backgroundColor = "transparent";
		
		_ToggleDisplay("home-usp" + id);
	}
	/// <summary>Method: _ToggleList</summary>
	function _ToggleList(sel, arr) {
		for(var i=0;i<arr.length;i++) {
			var el = _getEl(arr[i]);
			if (el)
				el.style.display = (sel.value == arr[i])? "block" : "none";
		}
	}
	/// <summary>Method:_HideHome : hides a home page element</summary>
	function _HideHome(id) {
		if (_showing > 0) {
			window.clearInterval(_interval);
			_showing = 0;
		}
		_showhide(id,_maxopacity,0,-1);
	}
	/// <summary>Method:_ShowHome : shows a home page element</summary>
	function _ShowHome(id) {
		if (_showing > 0) {
			window.clearInterval(_interval);
			_showing = 0;
		}
		_showhide(id,0,_maxopacity,1);
	}
	/// <summary>Method:_ImageTag:used for closing windows on image upload</summary>
	function _ImageTag(path){
		if(path.length > 4) //*.jpg,*.gif
			window.returnValue = '<img src="' + path + '"/>';
		else
			window.returnValue = null;
		window.close();
	}
	/// <summary>Method:_CheckDrop : checks if the menu doesnt cover a drop list</summary>
	function _CheckDrop(show, obj) {
		// createEventObject method is not supported by IE5.0 and below
		if(_isIE()){
			var eobj = document.createEventObject();
			eobj.show = (show) ? "show" : "hide";
			var dl = document.getElementsByTagName("SELECT");
			for (var i=0; i<dl.length; i++) {
				var de = dl.item(i);
				de.fireEvent("onmouseover", eobj);
			}
		}
	}
	/// <summary>Method:_DropShowHide : responds to onmouseover event</summary>
	function _DropShowHide(el) {
		if (window.event.show == "hide")
			el.style.visibility  = "hidden";
		else
			el.style.visibility  = "visible";
	}
	function _ShowTab(pre,no,cnt) {
		var el, tel;
		for(var i=1;i<cnt;i++) {
			el = _getEl(pre+i.toString());
			tel = _getEl(pre+"tab-"+i.toString());
			if (no == i) {
				el.style.display = 'block';
				tel.className = 'pckg-sel';
			} else {
				el.style.display = 'none';
				tel.className = (i==1)?'pckg-fst':'pckg-tab';
			}
		}
	}
	/// <summary>Method:_GoDrop</summary>
	function _GoDrop(url,fd) {
		var ul = url.concat("&id=", fd.value);
		document.location = ul;
	}
	/// <summary>Method:_ToggleBack</summary>
	function _ToggleBack(id,tb) {
		toggleTab(id,tb);
		toggleTab(_activeMnu,_activeTab);
	}
	/// <summary>Method:_HoverTab</summary>
	function _HoverTab(id,tb) {
		toggleTab(id,tb);
	}
	/// <summary>Method:_ToggleTab</summary>
	function _ToggleTab(id,tb,lk) {
		toggleTab(id,tb);
		if (lk) {
			_activeTab = tb;
			_activeMnu = id;
		}
	}
	/// <summary>Method:toggleTab</summary>
	function toggleTab(mnu,tb) {
		_Debug("toggleTab", "_activeTab", _activeTab, "mnu", mnu);
		_ToggleDisplay(_activeMnu);
		_ToggleDisplay(mnu);
		_setHover(mnu);
		switchTabs("tab-mnu");
		var tab = _getEl(tb);
		tab.className = tab.className.replace(new RegExp(" taboff\\b"), " tabon");
		// local function
		function switchTabs(mnuid) {
			var mnu = _getEl(mnuid);
			if (mnu) {
				var els = mnu.getElementsByTagName("li");
				_Debug("switchTabs", "els", els.length);
				for (var i=0; i<els.length; i++) {
					els[i].className = els[i].className.replace(new RegExp(" tabon\\b"), " taboff");
				}
			}
		}
	}
	/// <summary>Method:_ToggleSect</summary>
	function _ToggleSect(pos, id, cls) {
		_Debug("id+pos", (id+pos));
		offSects("centre");
		_ToggleDisplay(id+pos);
		// local function
		function offSects(parid) {
			var par = _getEl(parid);
			if (par) {
				var els = par.getElementsByTagName("div");
				for (var i=0; i<els.length; i++) {
					//alert(els[i].className);
					if (els[i].className == cls)
						els[i].style.display = 'none';
				}
			}
		}
	}
	/// <summary>Method:_LoadAjax</summary>
	function _LoadAjax() {
		//_Debug("_LoadAjax");
		loadForms();
		loadElements();
		
		function loadForms() {
			_ajaxForms = new Array();
			var frms = _doc.forms;
			_Debug("loadForms", "frms", frms.length);
			for (var ndx=0, j=0; j<frms.length; j++) {
				//_Debug("loadElements", "ndx", ndx, "frm", frms[j].name);
				var els = frms[j].elements;
				for (var i=0; i<els.length; i++) {
					//_Debug("loadElements", "els[i]", els[i].name);
					if (els[i].id == "AjaxXSource") {
						_ajaxForms[ndx] = new ClassAjaxXForm(_debug);
						_ajaxForms[ndx].GetFormValues(els[i].value, frms[j]);
						ndx++;
					}
				}
			}
		}
		function loadElements() {
			_ajaxElems = new Array();
			var els = _getEls("AjaxXValue");
			_Debug("loadElements", "els", els.length);
			for (var ndx=0, i=0; i<els.length; i++) {
				//_Debug("loadElements", "els[i]", els[i].id, "url", els[i].innerText);
				_ajaxElems[ndx] = new ClassAjaxXElem(_debug);
				_ajaxElems[ndx].GetElemValues(els[i].innerText, els[i]);
				ndx++;
			}
		}
	}
	/*	-------------------------------------------	*/
	/// <remarks>Region: Private methods</remarks>
	/*	-------------------------------------------	*/
	var _getEl = function(el) {return _doc.getElementById(el);}
	var _getEls = function(el) {return _doc.getElementsByName(el);}
	var _isIE = function() { return (navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0 && (navigator.appVersion.indexOf("Win") != -1)) }
	/// <summary>Method: append the search path of the href to a url</summary>
	function _root(ul) {
		return ul.concat("?", document.location.search);
	}
	/// <summary>Method: _pop: open a new window</summary>
	function _popup(url, setting) {
		_pop = window.open(url,_pop_name, setting);
		try { _pop.focus(); }
		catch (e) { _pop.focus(); }
	}
	/// <summary>Method: _poppost: open a new window and post form to it</summary>
	function _poppost(url, setting, fm) {
		_pop = window.open(url,_pop_name, setting);
		fm.target = _pop;
		try { 
			_pop.focus();
			fm.submit();
		} catch (e) { 
			_pop.focus(); 
			fm.submit();
		}
	}
	/// <summary>Method:_popset</summary>
	function _popset(set, tlb, loc, scr, wid, hgt, mnu, stt, rsz) {
		var ret = "";
		if (set) {
			ret = "status=";
			var tl = (tlb)? "yes" : "no";
			var lc = (loc)? "yes" : "no";
			var mn = (mnu)? "yes" : "no";
			var sc = (scr)? "yes" : "no";
			var wd = (wid)? wid : "463";
			var ht = (hgt)? hgt : "400";
			var st = (stt)? "yes" : "no";
			var rz = (rsz)? "yes" : "no";
			ret = ret.concat(st,",toolbar=",tl,",location=",lc,",menubar=",mn,",scrollbars=",sc,",width=",wd,",height=",ht,",resizable=",rz);
		}
		return ret;
	}
	/// <summary>Method:Set the opacity on an element</summary>
	function _showhide(id,stt,fin,inc) {
		_showing = id;
		_ToggleDisplay("home-usp"+id)
		var hme = document.getElementById("home-usp");
		var opac = stt;
		setOpacity(hme, opac);
		_interval = window.setInterval(showHome, 10);
		function showHome() {
			opac = opac+inc;
			setOpacity(hme, opac);
			if ((inc > 0)? (opac > fin) : (opac < fin)) {
				_showing = 0;
				window.clearInterval(_interval);
			}
		}
	}
	/// <summary>Method:Set the opacity on an element</summary>
	function setOpacity(obj, val) {
		obj.style.opacity = val/100;
		obj.style.filter = 'alpha(opacity=' + val + ')';
	}
	/// <summary>Method:_RaiseError</summary>
	function _RaiseError(thiserr) {
		_Debug("RaiseError:", "thiserr", thiserr);
		throw (thiserr);
	}
	/// <summary>Method:_Debug - write debugging message. First param is the method label, followed by name, value pairs</summary>
	function _Debug(arg) {
		if (_debug) {
			var s = "<!-- ClassSitePage::"
			s = s.concat(arguments[0], ":");
			var argn = arguments.length;
			for(var i=1; i<argn; i=i+2)
				s = s.concat(arguments[i], ":", arguments[i+1], " ");
			alert(s.concat("-->\n"));
		}
	}
	/// <summary>Method:_setHover - adds a class name to the li element onmouseover and replace with an empty string onmouseout</summary>
	// needs revision for multiple top-mnu's (eg get by class name)
	function _setHover(id) {
		//_Debug("_setHover", "id", id);
		var mnu = _getEl(id);
		if (mnu) {
			var sfEls = mnu.getElementsByTagName("li");
			//_Debug("_setHover", "sfEls", sfEls.length);
			for (var i=0; i<sfEls.length; i++) {
				sfEls[i].onmouseover=function() {
					//alert("mousein");
					this.className+=" sfhover";
				}
				sfEls[i].onmouseout=function() {
					//alert("mouseout");
					this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
				}
			}
		}
	}
	/// <summary>Method:_createFlash : creates a flash object so that it doesnt have to be user activated</summary>
	function _createFlash(id, file, wt, ht, align, menu, quality, wmode, flush) {
		var el = _getEl(id);
		if (el) {
			if (_isIE()) {
				_Debug("_createFlash:IE:", "id", id);
				var fobj = document.createElement('object');
				fobj.id = file;
				fobj.width = wt;
				fobj.height = ht;
				fobj.align = align;
				// the following line crashes IE7 beta3...
				//fobj.codeBase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0";
				fobj.classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"; 
				_addParam(fobj, "movie", "flash/" + file + ".swf?flushcache=" + flush);
				_addParam(fobj, "menu", menu);
				_addParam(fobj, "quality", quality);
				_addParam(fobj, "wmode", wmode);
				_addParam(fobj, "scale", "exactfit");
				el.innerHTML = fobj.outerHTML;
			} else {
				_Debug("_createFlash:notIE:", "id", id);
				//el.innerHTML = "<embed name='"+file+"' id='"+file+"' src='flash/" + file + ".swf?flushcache=" + flush + "' menu='"+menu+"' quality='"+quality+"' wmode='"+wmode+"' width='"+wt+"' height='"+ht+"' align='"+align+"' scale='exactfit' allowScriptAccess='sameDomain' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer'  swLiveConnect='true'/>"
				var movie = _getEl(file);
				if(movie){
					eval("document." + file + ".height = " + ht + ";");
					eval("document." + file + ".width = " + wt + ";");
				}else{el.innerHTML = "<object><embed name="+file+" id="+file+" src=flash/" + file + ".swf?flushcache=" + flush + " menu="+menu+" quality="+quality+" wmode="+wmode+" width="+wt+" height="+ht+" align="+align+" scale=exactfit allowScriptAccess=sameDomain type=application/x-shockwave-flash pluginspage=http://www.macromedia.com/go/getflashplayer  swLiveConnect=true EnableJavaScript=true></embed></object>"}
			}
			_Debug("_createFlash", "el", el.innerHTML);
		}
	}
	function _addParam(ob, nm, vl) {
		var pobj = document.createElement('param');
		pobj.name = nm;
		pobj.value = vl;
		ob.appendChild(pobj);
	}
}