
function whichBrs() {
	var agt=navigator.userAgent.toLowerCase();
	if (agt.indexOf("opera") != -1) return 'Opera';
	if (agt.indexOf("staroffice") != -1) return 'Star Office';
	if (agt.indexOf("webtv") != -1) return 'WebTV';
	if (agt.indexOf("beonex") != -1) return 'Beonex';
	if (agt.indexOf("chimera") != -1) return 'Chimera';
	if (agt.indexOf("netpositive") != -1) return 'NetPositive';
	if (agt.indexOf("phoenix") != -1) return 'Phoenix';
	if (agt.indexOf("firefox") != -1) return 'Firefox';
	if (agt.indexOf("safari") != -1) return 'Safari';
	if (agt.indexOf("skipstone") != -1) return 'SkipStone';
	if (agt.indexOf("msie 7") != -1) return 'IE7';
	if (agt.indexOf("msie 6") != -1) return 'IE6';
	if (agt.indexOf("netscape") != -1) return 'Netscape';
	if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla';
	if (agt.indexOf('\/') != -1) {
		if (agt.substr(0,agt.indexOf('\/')) != 'mozilla') {
			return navigator.userAgent.substr(0,agt.indexOf('\/'));}
			else return 'Netscape';} else if (agt.indexOf(' ') != -1)
			return navigator.userAgent.substr(0,agt.indexOf(' '));
			else return navigator.userAgent;
}




function initMLMenu(className, styles) {

	arrayOfElementsWitThisClassName = getElementsByClassName(className);

	for( i=0; i<arrayOfElementsWitThisClassName.length; i++ )
	{
		currentRoot = arrayOfElementsWitThisClassName[i];
						
		var li = currentRoot.firstChild;
		while (li != null) {							
			
			Anchor = li.firstChild;
			UL = Anchor.nextSibling;						
			
			if( UL != null && UL.tagName == "UL"){				
				li.onmouseover=function() {
					/* display the inner menu */
						
					Anchor = this.firstChild;
					UL = Anchor.nextSibling;
					UL.style.visibility="visible";
				}
				li.onmouseout=function() {
					Anchor = this.firstChild;
					UL = Anchor.nextSibling;
					UL.style.visibility="hidden";
				}
				
				assignEvents(UL, styles);
			}
			
			li = li.nextSibling;
		
		}


	}

}




function calculate_width(string, styles)
{	
	fontSize = styles.fontSize || "";
	padding = styles.padding || "";
	fontFamily = styles.fontFamily  || "";
	
  if( document.getElementById("temp_div_to_calculate_text_width") != null )
  {
  	EL = document.getElementById("temp_div_to_calculate_text_width");
  	EL.innerHTML = string;
  }
  else{	
	  EL = document.createElement('div');
	  EL.setAttribute("id", "temp_div_to_calculate_text_width");
	  EL.style.visibility = "hidden";  
	  EL.style.fontFamily = fontFamily;
	  EL.style.fontSize = fontSize;	  
	  EL.style.padding = padding;
	  EL.innerHTML = string;
	  EL.style.position = "absolute";
	  document.body.appendChild(EL);
  }
 
  width = EL.offsetWidth;
  /*if( whichBrs() == "IE6" ) // fixes the padding in the stupid IE6
  {
  	width -= padding.split("px")[0];
  }*/
  return width;
  
}

function assignEvents(element,styles){	

	var maxWidth = 0;
	/* Get all the list items within the menu */

	var li = element.firstChild;
	
	while ( li != null ) {		
		
		if( li.childNodes.length > 0 )
		{
			// get the width of the LI tag
			if( li.firstChild.tagName == "A" )
			{			
				computed_width = calculate_width(li.firstChild.innerHTML, styles);			
				if( computed_width > maxWidth )
					maxWidth = computed_width;
			}
		}
				
		Anchor = li.firstChild;
		UL = Anchor.nextSibling;
		/* If the LI has another menu level */
		if( UL != null && UL.tagName == "UL"){
								
			/* assign the function to the LI */
			li.onmouseover=function() {
				/* display the inner menu */
				Anchor = this.firstChild;
				UL = Anchor.nextSibling;
				UL.style.visibility="visible";
			};
			li.onmouseout=function() {
				Anchor = this.firstChild;
				UL = Anchor.nextSibling;
				UL.style.visibility="hidden";
			};

			//alert( lis[i].lastChild.innerHTML);
			assignEvents(UL, styles);

		}
		
		
		li = li.nextSibling;
	}
	
	
	
	//////////////////////////////////////////////////////////////////////////////////////////

	
	// Set left Offset
	padding = styles.padding || "";
	
	li = element.firstChild;
	while ( li != null ) {
		
		Anchor = li.firstChild;
		UL = Anchor.nextSibling;		
		
		if(  UL != null && UL.tagName=="UL"){									
			if( whichBrs() == "IE6" )
			{
				if( padding != "" )
					UL.style.left = maxWidth + ( padding.split("px")[0] * 2 ) +  "px";  // fixing an IE6 padding bug
			}
			else
				UL.style.left = maxWidth + "px";
		}
		
		
		if( Anchor != null && Anchor.tagName == "A" && whichBrs() == "IE6" ) // making the Anchor text fill the whole LI tag (Mouse bug)
		{			
			li.style.width = (maxWidth) + "px";
			Anchor.style.width = (maxWidth) + "px";			
		}
		
		li = li.nextSibling;		
	}	
	
	
}


// get elements by class name
function getElementsByClassName(className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
			nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
			returnElements = [],
			current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
			classesToCheck = "",
			xhtmlNamespace = "http://www.w3.org/1999/xhtml",
			namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
			returnElements = [],
			elements,
			node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
			classesToCheck = [],
			elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
			current,
			returnElements = [],
			match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};
