

var vFlashVersion = fGetFlashVersion();
var vFlashWModeOK = fGetFlashWModeOK();
var vSiteRoot = fGetRoot();
if(document.location.search.indexOf("flash=0")>-1) vFlashVersion = 0;
if(document.location.search.indexOf("flash=1")>-1) vFlashWModeOK = 0;
var vFlashOK = (vFlashVersion>4);
var W3CDOM = (document.getElementById && document.getElementsByTagName);

/* Date */
function fWriteDate(){
	var dt = new Date();
	var d = "Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday".split("|");
	var m = "January|February|March|April|May|June|July|August|September|October|November|December".split("|");
	var t = "|st|nd|rd|th".split("|");
	var c = dt.getDate();
	var e = c%10;
	var f = Math.floor(c/10);
	document.write(d[dt.getDay()]+" "+c+"<sup>"+t[(e>3||f==1)?4:e]+"</sup> "+m[dt.getMonth()]+" "+dt.getFullYear());
}
function fWritePageHead(swfName){
	document.write('<div id="iFHead">');
	if(vFlashOK){
		fWriteFlash("_assets/media/headers/fHead"+swfName+".swf",null,null,null,"TL");
	}else{
		document.write('<img src="'+vSiteRoot+'_assets/media/headers/imgHead'+swfName+'.png" alt="" />');
	}
	document.write('</div>');
}
function fWriteHubDiagram(){
	if(vFlashOK){
	document.write('<div id="iHubDiagram">');
		fWriteFlash("_assets/media/fHubDiagram.swf",null,null,null,"TL");
	document.write('</div>');
	}else{
		document.write('<ul class="downloads"><li class="pdf"><a href="HubDiagram.pdf">How the Framework Functions</a> 136KB</li></ul>');
	}
}

function fWriteFlash(swf,fid,bgcolor,transparent,noscale){
	var swf = vSiteRoot + swf;
	var txt = "";
	txt += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="100%" ';
 	if(fid) txt += 'id="'+fid+'" ' ;
	txt += 'codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0">';
	txt += '<param name="movie" value="'+swf+'" />';
	txt += '<param name="menu" value="false" />';
 	if(bgcolor) txt += '<param name="bgcolor" value="'+bgcolor+'" />';
	if(noscale) txt += '<param name="scale" value="noscale" /><param name="salign" value="'+noscale+'" />';
	if(transparent) txt += '<param name="wmode" value="transparent" />';
	txt += '<embed src="'+swf+'" menu="false" width="100%" height="100%" ';
 	if(fid) txt += 'id="'+fid+'" name="'+fid+'" ' ;
	if(bgcolor) txt += 'bgcolor="'+bgcolor+'" ';
	if(noscale) txt += 'scale="noscale" salign="'+noscale+'" ';
	if(transparent) txt += 'wmode="transparent" ';
	txt += 'swLiveConnect="true" type="application/x-shockwave-flash "';
	txt += 'pluginspage="//www.macromedia.com/go/getflashplayer" />';
	txt += '</object>';
	document.write(txt);
}
var aAssID = new Array();
var prevID = "";
function fToggleIDv2(id){
	if (!document.getElementById) return;
	if(prevID != ""){
	var po = document.getElementById(prevID);
	aAssID[prevID] = !aAssID[prevID];
	var visState = (aAssID[prevID]) ? 'block' : 'none';
	if(po.style) po = po.style;
	po.display = visState;
	}
	var o = document.getElementById(id);
	if(o==null) return;
	aAssID[id] = !aAssID[id];
	var visState = (aAssID[id]) ? 'block' : 'none';
	if(o.style) o = o.style;
	o.display = visState;
	prevID = id;
}
var aAssID = new Array();
function fToggleID(id){
	if (!document.getElementById) return;
	var o = document.getElementById(id);
	if(o==null) return;
	aAssID[id] = !aAssID[id];
	var visState = (aAssID[id]) ? 'block' : 'none';
	if(o.style) o = o.style;
	o.display = visState;
}



window.onload = function(){
	fInitialiseMenu("iNavArc", false);
}
var currentMenu = null, mytimer = null, timerOn = false;
function fInitialiseMenu(idStr, move) { if(!W3CDOM) return;
	for(var ni=1; document.getElementById(idStr+ni); ni++){
		var menuStr = idStr+ni;
		var menuIStr = idStr+"I"+ni;
		var menu = document.getElementById(menuStr);
		var menuI = document.getElementById(menuIStr);
		menu._name = menuStr;
		menuI._myMenu = menu;
		if(menu == null || menuI == null) return;
		if(menu["childNodes"]==null) return;
		var node;
		for(var i=0; i<menu.childNodes.length; i++) {
			if(menu.childNodes[i].childNodes.length<1) continue;
			node = menu.childNodes[i].childNodes[0];
			if(node.nodeName.toLowerCase()!="a") continue;
			node.onfocus=function() { stopTime(); }
			node.onblur=function() { menu.hideMenu(); }
		}
		currentMenu = menu;
		menuI.onmouseover = function(){ if(currentMenu){ currentMenu.style.visibility = "hidden"; currentMenu = null;
			this.showMenu(); stopTime(); }	}
		menu.onmouseover = function(){ if(currentMenu){ currentMenu.style.visibility = "hidden"; currentMenu = null;
			this.showMenu(); }	}
		menuI.showMenu = function(){
			if(move) this._myMenu.style.left = this.offsetLeft+"px";
			this._myMenu.style.visibility = "visible"; currentMenu = this._myMenu;	}
		menuI.onfocus	 = function(){ this.onmouseover(); }
		menuI.onblur	 = function(){ this.onmouseout(); }
		menu.showMenu = function(){ this.style.visibility = "visible"; currentMenu = this; stopTime(); }
		menu.hideMenu = function(){
			if (!timerOn) { mytimer = setTimeout("killMenu('" + this._name + "');", 0); timerOn = true; } }
		menu.onmouseout = function(){ this.hideMenu(); }
		menuI.onmouseout = function(){ this._myMenu.hideMenu(); }
	}
}
function killMenu(id) { if(!W3CDOM) return; id = document.getElementById(id); id.style.visibility = "hidden"; stopTime(); }
function stopTime(){ if(mytimer){ clearTimeout(mytimer); mytimer = null; timerOn = false; } }

function fGetRoot(){
	if (!document.getElementById) document.getElementById = function() { return "/"; }
	var l = document.getElementById("iPathFinder");
	if(!l||!l.href) return "/";
	l = String(l.href);
	l = l.substring(0, l.indexOf("_assets/"));
	return l;
}
function getElementsByCondition(condition,container,arg){	container = container || document; var all = container.all || container.getElementsByTagName('*'); var arr = new Array(); var e; for(var k=0; k<all.length; k++){ e = all[k]; if(condition(e,k,arg)) arr[arr.length] = e; } return arr; }
function fApplyStyle(id, style, prop){ var e = (typeof(id)=="string")?document.getElementById(id):id; if(e==null) return; if(e.style) e = e.style; e[style] = prop; }
function fAddEvent(obj, evType, fn){ if(obj.addEventListener){ obj.addEventListener(evType, fn, false); return true; } else if(obj.attachEvent){ var r = obj.attachEvent("on"+evType, fn); return r; } else return false; }
function fGetFlashWModeOK(){return (navigator.platform.toLowerCase().indexOf("win")>-1)&&(navigator.appVersion.toLowerCase().indexOf('msie')>-1);}
function fGetFlashVersion(){var latestV=8;flVersion=0;var agent=navigator.userAgent.toLowerCase();if(agent.indexOf("mozilla/3")!=-1&&agent.indexOf("msie")==-1){flVersion=0;}if(navigator.plugins!=null&&navigator.plugins.length>0){var flashPlugin=navigator.plugins['Shockwave Flash'];if(typeof flashPlugin=='object'){for(var i=latestV;i>=3;i--){if(flashPlugin.description.indexOf(i+'.')!=-1){flVersion=i;break;}}}}else if(agent.indexOf("msie")!=-1&&parseInt(navigator.appVersion)>=4&&agent.indexOf("win")!=-1&&agent.indexOf("16bit")==-1){var doc='<scr'+'ipt language="VBScript"\> \n';doc+='On Error Resume Next \n';doc+='Dim obFlash \n';doc+='For i = '+latestV+' To 3 Step -1 \n';doc+='   Set obFlash = CreateObject("ShockwaveFlash.ShockwaveFlash." & i) \n';doc+='   If IsObject(obFlash) Then \n';doc+='      flVersion = i \n';doc+='      Exit For \n';doc+='   End If \n';doc+='Next \n';doc+='</scr'+'ipt\> \n';document.write(doc);}else if(agent.indexOf("webtv/2.5")!=-1)flVersion=3;else if(agent.indexOf("webtv")!=-1)flVersion=2;else{flVersion=-1;}return flVersion;}
if(!Array.prototype.pop) {
	function array_pop(){ lastElement = this[this.length-1]; this.length = Math.max(this.length-1,0); return lastElement;	}
	Array.prototype.pop = array_pop;
}

function fImgSwap(id, src){ alert(id);	var e = document.getElementById(id); if(e==null) return; e.src = src; }

var dynamicID	= 0;

/**
  @function	getElementsByClassName
  @param
  @param
  @param
*/
function getElementsByClassName ( $tag, $className, $node )
{
	if ( ! document.getElementsByTagName ) return false;

	$node			= $node || document

	var matches		= new Array
	var elements	= $node.getElementsByTagName ( $tag );
	var expression	= new RegExp ( '(^| )' + $className + '( |$)' );
	var j			= 0;

	for ( var i = 0; i < elements.length; i++ )
	{
		var ref		= elements [ i ]
		if ( ref.className )
		{
			if ( expression.test ( ref.className ) )
			{
				matches [ j++ ] = ref;
			}
		}
	}
	return matches;
}

function toggleAppendLinks ( $objAppend, $objRef )
{
	var tID	= $objRef.id.toString ( );
	var spans	= $objAppend.getElementsByTagName ( 'span' )
	var rE	= new RegExp ( '(^| )jsToggle( |$)' );

	for ( var i in spans )
	{
		var ref = spans [ i ]

		if ( rE.test ( ref.className ) )
		{
			var o		= document.createElement ( "a" )
			o.id		= ref.id
			o.className = ref.className
			o.href	= '#' + tID
			o.innerHTML	= ref.innerHTML
			o.onclick	= function ( ) { toggle ( this ); return false; }

			ref.parentNode.replaceChild ( o, ref );
		}
	}
}

function toggle ( $obj  )
{
	var targ	= $obj.href.split('#')[1]
	var ref	= document.getElementById ( targ )

	if ( ref )
	{
		var rE	= new RegExp ( '(^| )jsToggleOpen( |$)' );

		if ( rE.test ( ref.className ) )
		{
			ref.className = ref.className.toString( ).replace ( 'jsToggleOpen', 'jsToggleClosed' );
		} else
		{
			ref.className = ref.className.toString( ).replace ( 'jsToggleClosed', 'jsToggleOpen' )
		}
	}
}


/*
	TOGGLE DIV
*/


function toggleDiv ( $node )
{
	var divs	= getElementsByClassName ( 'div', 'jsCollapsor', $node || document )
	var rEOpen	= new RegExp ( '(^| )jsOpen( |$)' );

	for ( var i in divs )
	{
		var ref	= divs [ i ]
		var id	= ref.id || 'jsId' + ( dynamicID++ )

		ref.id	= id

		if ( rEOpen.test ( ref.className ) )
		{
			ref.className	= ref.className.toString( ).replace ( 'jsOpen', 'jsToggleOpen' )
		} else
		{
			ref.className	+= ' jsToggleClosed'
		}
		toggleAppendLinks ( ref, ref );
	}
}



function collapseElements ( )
{
	var o = document.getElementById ( 'iLinkPage' )
	if ( o )	{
		toggleDiv ( o );
	}
}

fAddEvent(window, "load", collapseElements);
