/* SlideMenu.js */
/* Copyright (c) 2007, Web Design Solutions Ltd. */

/* THIS CODE MAY NOT BE REUSED OR REDISTRIBUTED, IN ANY FORM,
   WITHOUT THE EXPRESS PRIOR CONSENT OF WEB DESIGN SOLUTIONS LTD. */

// The class that is used to maintain object structure.
function SMNode(Caption, Children, Class, LinkURL) {
	this.Caption = Caption;
	this.Children = Children;
	this.Class = Class;
	this.LinkURL = LinkURL;
}

var __SlideMenu_Seed = new Array();

function CreateSlideMenu(Seed, slideMenuID) {

	if ( Seed != null ) {

		__SlideMenu_Seed[slideMenuID] = Seed;
		var NodeTrail = slideMenuID + '_dvNode_' + Seed.Caption.replace(' ', '');
		NodeTrail = _JSSafe(NodeTrail);
		document.write('<div id="' + NodeTrail + '">');
		_CreateSlideMenu(__SlideMenu_Seed[slideMenuID], slideMenuID, 0, NodeTrail);
		document.write('</div>');

	}

}

function _GetNodeVisible(URL, NodeLink) {

	var isVisible = false;
	//var lcURL = URL.toLowerCase();

	var urlQS = URL.toQueryParams();
	var urlNL = NodeLink.toQueryParams();

	isVisible = false;

	var urlQS_scid = urlQS['scid'];
	var urlQS_wcid = urlQS['wcid'];
	var urlQS_wscid = urlQS['wscid'];

	var urlNL_scid = urlNL['scid'];
	var urlNL_wcid = urlNL['wcid'];
	var urlNL_wscid = urlNL['wscid'];

	//debugger;

	if ( urlQS_scid == urlNL_scid )
		if ( urlQS_wcid == urlNL_wcid ) 
			/* if ( ( urlQS_wscid == urlNL_wscid ) || ( urlQS_wscid == null ) ) */
				isVisible = true;

	/*

	if ( lcURL.indexOf('&') > -1 ) {
		lcURL = lcURL.substring(0, lcURL.lastIndexOf('&'));
	}
	
	var urlLength = lcURL.length;
	
	if ( NodeLink.length >= urlLength ) {
	
		var lcNodeLink = NodeLink.substring(0, lcURL.length).toLowerCase();
		
		if ( ( lcNodeLink == lcURL ) && ( lcURL.indexOf('=') > -1 ) )
			isVisible = true;
		else
			isVisible = false;
	
	}

	*/
	
	
	return isVisible;
	
}

function _CreateSlideMenu(Seed, slideMenuID, Level, NodeTrail) {

	var Nodes = Seed.Children;
	
	for (var i=0; i < Nodes.length; i++) {
			
		var OnClickCommand = '';
		
		var CurrentNodeTrail = NodeTrail + '_' + _JSSafe(Nodes[i].Caption.replace(' ', ''));
			
		var NoLink = false; var ClickLink = null;

		if ( Nodes[i].LinkURL.indexOf('&na=1') > -1 ) {
			ClickLink = Nodes[i].LinkURL;
			NoLink = true;
		} else if ( ( Nodes[i].Children != null )  )
			if ( Nodes[i].Children.length > 1 ) {
				OnClickCommand = ' onClick="_SM_ExpandMenu(\'' + slideMenuID + '\', \'' + CurrentNodeTrail + '\');"';
				ClickLink = Nodes[i].LinkURL;
			} else { 
				var NodeFirstChild = Nodes[i].Children[0];
				if ( NodeFirstChild != null )
					ClickLink = NodeFirstChild.LinkURL;
				NoLink = true;
			}
		else {

			ClickLink = Nodes[i].LinkURL;
			NoLink = true;
		}		

		if ( NoLink )
			OnClickCommand = ' onClick="_SM_FinalClick(\'' + slideMenuID + '\', \'' + CurrentNodeTrail + '\', \'' + ClickLink + '\'); if (!e) var e = window.event; e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();"';
				
		var DisplayStyleText = '';
				
		// Intrinsic URL adaptation.
		var CurrentURL = location.href;
		
		var isItemVisible = true;
		
		if ( Level > 0 ) {
			isItemVisible = _GetNodeVisible(CurrentURL, ClickLink);
		}
		
		if ( isItemVisible )
			DisplayStyleText = 'block';
		else
			DisplayStyleText = 'none';

		// var ImageOn = 'Images/SlideMenuGlyphs/On.gif';
		// var ImageOff = 	'Images/SlideMenuGlyphs/level' + Level + '.gif';
		var SafeCNT = _JSSafe(CurrentNodeTrail);

		document.write('<div id="' + SafeCNT + '"' + OnClickCommand + ' style="display: ' + DisplayStyleText + ';" class="' + Nodes[i].Class + '">' + Nodes[i].Caption);

		if ( ( Nodes[i].Children != null ) ) {
			_CreateSlideMenu(Nodes[i], slideMenuID, (Level + 1), CurrentNodeTrail) // Hide all child elements from sight.
		}
			
		document.write('</div>');
		
	}
	
}

function _JSSafe(Unsafe) {

	return Unsafe.replace('\'', '');

}


function _SM_HideNode(NodeTrail) {

	var Node = document.getElementById(NodeTrail);
	var outHTML = Node.outerHTML;

	var Contains1 = ( outHTML.indexOf('&na=1') == -1 );
	var Contains2 = ( outHTML.indexOf('&amp;na=1') == -1 );

	if ( Contains1 && Contains2 ) {

		var Children = Node.childNodes;
	
		for (var i=0; i<Children.length; i++) {
			var CurrentChild = Children[i];
			if ( CurrentChild.nodeName != '#text' && ( CurrentChild.id != ('SMGlyph_' + NodeTrail) ) ) {
				var CurrentID = CurrentChild.id;
				_DoSMNodeHide(CurrentChild);

			}
		}

	}
	
}

function _SM_ShowNode(NodeTrail) {

	var Node = document.getElementById(NodeTrail);
	var Children = Node.childNodes;
	
	for (var i=0; i<Children.length; i++) {
		var CurrentChild = Children[i];
		if (CurrentChild.nodeName != '#text' && ( CurrentChild.id != ('SMGlyph_' + NodeTrail) )  ) {
			var CurrentID = CurrentChild.id;
			_DoSMNodeShow(CurrentChild);
		}
	}
	
}

function _DoSMNodeShow(CurrentChild) {
	if ( CurrentChild.style.display == 'none' ) {
		//Effect.toggle(CurrentChild.id, 'appear', {duration: 0.2});
		CurrentChild.style.display = 'list-item';
		}
}

function _DoSMNodeHide(CurrentChild) {
	if ( CurrentChild.style.display != 'none' ) {
		//Effect.toggle(CurrentChild.id, 'appear', {duration: 0.2});
		CurrentChild.style.display = 'none';
	}
}

function _SM_GetChildren(NodeTrail) {

	
	var DOMParent = document.getElementById(NodeTrail);
	var Nodes = DOMParent.childNodes;
	var Returns = new Array();
	
	var x=0;
	for (var i=0; i<Nodes.length; i++) {
		var CurrentChild = Nodes[i];
		if ( CurrentChild.nodeName != '#text' ) {
			Returns[x] = Nodes[i];
			x++;
		}
	}
	
	return Returns;
	
}

function _SM_ExpandMenu(ID, NodeTrail) {

	var ParentText = NodeTrail.lastIndexOf('_');
	ParentText = NodeTrail.substring(0, ParentText);
	
	Siblings = _SM_GetChildren(ParentText);
	
	_SM_ShowNode(NodeTrail);
	
	for (var i=0;i<Siblings.length;i++) {
		var CurrentSibling = Siblings[i];
		if ( CurrentSibling.id != NodeTrail ) 
			_SM_HideNode(CurrentSibling.id);
		
	}
	
}

function _SM_FinalClick(ID, NodeTrail, LinkURL) {

	document.location.href = LinkURL;	

}