var timeOut;
var t;
var drop_down_array=new Array();
var node_array=new Array();
var que_array=new Array();
var nav_array=new Array();
var que_num=0;
var okay_drop;
okay_drop=false;
function populate_array(theNode){
	//alert("populate_array: " + theNode.id);
	//populate all objects into the area
	//temp=document.getElementById('DEBUGGER').innerHTML;
	//document.getElementById('DEBUGGER').innerHTML=temp+"<h3>"+theNode.id+"</h3>\n";
	childNodeArray = theNode.childNodes;
	for(a=0;a<childNodeArray.length;a++){
	//for(a in childNodeArray){
		//reply=confirm("Continue?");if(!reply){break;}
		if(childNodeArray[a].tagName!=undefined && childNodeArray[a].nodeName!="#text"){
			node_array[node_array.length]=childNodeArray[a];}
		childNodeArray2 =childNodeArray[a].childNodes;
		if(childNodeArray2.length>0){
			que_array[que_array.length]=childNodeArray[a];}
/*
		que_array_text="";
		for(z=0;z<que_array.length;z++){que_array_text=que_array_text+ que_array[z].nodeName +"<BR>";}
		document.getElementById('que_array_DEBUG').innerHTML=que_array_text;

		node_array_text="";
		for(o=0;o<node_array.length;o++){node_array_text=node_array_text+ node_array[o].nodeName +"<BR>";}
		document.getElementById('node_array_DEBUG').innerHTML=node_array_text;


		val_out=childNodeArray[a].tagName;
		val_out=val_out + " " + childNodeArray[a].nodeName;
		temp_val=document.getElementById('DEBUGGER').innerHTML;
		document.getElementById('DEBUGGER').innerHTML = temp_val + val_out+ "<BR>\n";
*/
	}
	for(b=que_num;que_num<que_array.length;b++){
		//reply=confirm("QUE---? Continue?");if(!reply){break;}
		que_num++;
		//temp_val=document.getElementById('DEBUGGER').innerHTML;
		//document.getElementById('DEBUGGER').innerHTML = temp_val + " que_num: " + que_num +" | b: " +b+ "<BR>\n" ;
		populate_array(que_array[b]);
	}
}

function applyNodes(theNode){
	populate_array(theNode);
	top_id=parent_search(node_array[(node_array.length-1)], drop_down_array);
	if(top_id.length>0){//should always be true
		for(aN=0;aN<node_array.length;aN++){
			//addEvent( node_array[aN], 'mouseover', function (){navOnOff(top_id, 'over', true)});
			which_num=array_search(top_id, drop_down_array);
			node_array[aN].mainParent=top_id;
			//node_array[aN].onmouseover=function(){navOnOff(this.mainParent, 'over', true)};
			addEvent(node_array[aN], 'mouseover', function(){navOnOff(this.mainParent, 'over', true)})
			//navOnOff(getElementById(top_id), 'out');
		}
	}
	que_array=new Array();
	node_array=new Array();//unset
}

function parent_search(theNode, findArray){
	//alert("parent_search ID: " + theNode.id);
	parent_node=theNode.parentNode;
	while(parent_node.parentNode){
//reply=confirm("Continue? " + parent_node.tagName + " | ID: " + parent_node.id + " | theNode.id: " + theNode.id);if(!reply){break;}
		finder=array_search(parent_node.id, findArray);
		if(finder>=0){
			return findArray[finder];
			//alert("FOUND!");
			break;
		}
		parent_node=parent_node.parentNode;
	}
}

function array_search(searchString, searchArray){
	search_result=-1;
	for(as=0;as<searchArray.length; as++){
//alert("array_search: " + searchString + ", " + searchArray[as]);
		if(searchArray[as]==searchString){
			search_result=as;
			return search_result;
			break;
		}
	}
	return search_result;
}

function navOnOff(eleName, state, reset){
	if(okay_drop==true){
		message='';

		if(state=="over"){if(t!=undefined){t.clear();}
			for(dd=0;dd<drop_down_array.length;dd++){
				if(eleName!=drop_down_array[dd]){
					switchState(document.getElementById(drop_down_array[dd]), 'hide');
				}else{message=message + "OMITTED - "+drop_down_array[dd]+"<BR>\n";
				}
			}
			if(reset==true){
				message=message + "force - "+eleName+"<BR>\n";
				if(t!=undefined){t.clear();}
			}
			message=message + "OVER<BR>\n";
			switchState(document.getElementById(eleName), 'show');
			t = new Timeout(switchState, 2000, document.getElementById(eleName), 'hide');
		}else if(state=="out"){
			message=message + "OUT<BR>";
			if(t!=undefined){t.clear();}
			t = new Timeout(switchState, 2000, document.getElementById(eleName), 'hide');
		}/**/
		//document.getElementById('DEBUGGER').innerHTML=document.getElementById('DEBUGGER').innerHTML+message;
	}
}
//var outvar;
function makeList(varIn){
	outvar='';
	if(varIn<=2 && varIn!=undefined){
		//document.getElementById('DEBUGGER').innerHTML="AAAAA<BR>\n";
		outvar=" -varIn: " + varIn + "<ul>";
		for(a=1;a<=3;a++){
			outvar=outvar +  "<li>a " + a;
			temp=a+varIn;
			outvar=outvar +  makeList(temp);
			outvar=outvar +  "</li>";
		}
		outvar=outvar + "</ul>";
	}
	return outvar;
}
function init_menu(){
	nav_array=new Array();
	im_a=init_menu.arguments;
	for(im=0;im<im_a.length;im++){
		the_id=document.getElementById(im_a[im]);
		YAHOO.util.Event.onAvailable(the_id, setDDArray(im_a[im]));
		YAHOO.util.Event.onAvailable(the_id, applyNodes(the_id));
		YAHOO.util.Event.onAvailable(the_id, ieDDFix());
	}
	okay_drop=true;
	//nav_array=im_a;
}
function setDDArray(IDin){
	drop_down_array[drop_down_array.length]=IDin;
}
function switchState(element, mode){
	if(mode=="show"){
		state='block';
		//document.getElementById('DEBUGGER').innerHTML=document.getElementById('DEBUGGER').innerHTML+ element.id+': show<BR>';
	}else if(mode=="hide"){
		state='none';
		//document.getElementById('DEBUGGER').innerHTML=document.getElementById('DEBUGGER').innerHTML+element.id+': hide<BR>';
	}
	element.style.display=state;
}


function ieDDFix(){
	BrowserDetect.init();
	if(BrowserDetect.browser=="Explorer"){
		setStyleByClass("DIV","subNav","marginTop","12px");
		setStyleByClass("DIV","subNav","marginLeft","-20px");
	}
}

//http://ejohn.org/projects/tags/event/
function addEvent(obj, type, fn){
	if(obj.attachEvent){
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
		obj.attachEvent('on'+type, obj[type+fn]);
	}else
		obj.addEventListener(type, fn, false);
}
function removeEvent(obj, type, fn){
	if(obj.detachEvent){
		obj.detachEvent('on'+type, obj[type+fn]);
		obj[type+fn] = null;
	}else
		obj.removeEventListener(type, fn, false);
}


// 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 + "'");
				}
			}
		}
	}
}

//FROM http://developer.apple.com/internet/webcontent/styles.html
// 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;
}

// 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;
}

// *** BROWSER VERSION ***
//FROM http://www.quirksmode.org/js/detect.html
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};

MM_preloadImages('assets/images/subnav/who_we_are/imtc_ovr.gif'
	,'assets/images/subnav/who_we_are/barry_ovr.gif'
	,'assets/images/subnav/who_we_are/barbara_ovr.gif'
	,'assets/images/subnav/who_we_are/our_team_ovr.gif'

	,'assets/images/subnav/what_we_do/consulting_ovr.gif'
	,'assets/images/subnav/what_we_do/training_ovr.gif'
	,'assets/images/subnav/what_we_do/competitive_ovr.gif'
	,'assets/images/subnav/what_we_do/exhibit_ovr.gif'


	,'assets/images/subnav/training_solutions/companies_ovr.gif'
	,'assets/images/subnav/training_solutions/government_ovr.gif'
	,'assets/images/subnav/training_solutions/associations_ovr.gif'
	,'assets/images/subnav/training_solutions/show_managers_ovr.gif'
	,'assets/images/subnav/training_solutions/registration_ovr.gif'

	,'assets/images/subnav/products/books_ovr.gif'
	,'assets/images/subnav/products/dvd_ovr.gif'
	,'assets/images/subnav/products/cds_ovr.gif'
	,'assets/images/subnav/products/free_ovr.gif'
	,'assets/images/subnav/products/order_form_ovr.gif'


	,'assets/images/subnav/resource/articles_ovr.gif'
	,'assets/images/subnav/resource/newsletters_ovr.gif'
	,'assets/images/subnav/resource/tools_of_the_trade_ovr.gif'

	,'assets/images/subnav/business_contacts/contact_ovr.gif'
	,'assets/images/subnav/business_contacts/international_ovr.gif'
);

