var MakeParentActive = {
	start:function(o){
		var elements = YAHOO.util.Dom.getElementsByClassName('yuimenuitem-preselected')
		
		if(elements[0] && elements[0] != 'undefined'){
			YAHOO.util.Dom.addClass(elements[0].parentNode.parentNode.parentNode.parentNode, 'yuimenubaritem-preselected');		
		}
	}
}

var AjaxObject = {
 
	handleSuccess:function(o) {
		// This member handles the success response
		// and passes the response object o to AjaxObject's
		// processResult member.
		this.processResult(o);
	},
 
	handleFailure:function(o) {
		// Failure handler
	},
 
	processResult:function(o) {
		// This member is called by handleSuccess
		
		//parse XML / JSON
		var root = o.responseXML.documentElement;
		root = cleanWhitespace(root);
		var nav = root.childNodes[0];
		var txtStr = '<div class="bd"><ul>';
		var homeUrl = '';
		var homeLbl = '';
		var homeSet = false;
		
		//nodeType == 3
		
		for(var i=0; i < nav.childNodes.length; i++){
		
			if(nav.childNodes[i].tagName == "Label"){
				homeLbl = nav.childNodes[i].firstChild.nodeValue;
			}
			
			if(nav.childNodes[i].tagName == "URL"){
				homeUrl = nav.childNodes[i].firstChild.nodeValue;
			}
			
			if ((homeUrl > '' && homeLbl > '') && homeSet == false){
				txtStr += "<li class='first "+isActive(document.location.href, homeUrl, 1)+"'><a href='"+homeUrl+"'>"+homeLbl+"</a></li>";
				homeSet = true;
			}
			
			if (nav.childNodes[i].tagName == "SubNav"){
				try{
					txtStr += "<li class='"+isActive(document.location.href, nav.childNodes[i].childNodes[2].firstChild.nodeValue, 1)+"'><a href='"+nav.childNodes[i].childNodes[2].firstChild.nodeValue+"'>"+nav.childNodes[i].childNodes[1].firstChild.nodeValue+"</a>";				
				
					if (nav.childNodes[i].getElementsByTagName('SubNav').length > 0){		
						txtStr += "<div><div class='bd'><ul>";
					}
					
					for(j=0; j<nav.childNodes[i].childNodes.length; j++){
						if (nav.childNodes[i].childNodes[j].tagName == "SubNav"){
							txtStr += "<li class='"+isActive(document.location.href, nav.childNodes[i].childNodes[j].childNodes[2].firstChild.nodeValue, 2)+"'><a href='"+nav.childNodes[i].childNodes[j].childNodes[2].firstChild.nodeValue+"'>"+nav.childNodes[i].childNodes[j].childNodes[1].firstChild.nodeValue+"</a></li>"
						}
					}
					if (nav.childNodes[i].getElementsByTagName('SubNav').length > 0){
						txtStr += "</ul></div></div>";
					}
					txtStr += "</li>"
				}catch(e){}
			}
		}	
				
		txtStr += '</ul></div>';
						
		var newNav = document.createElement('div');
		newNav.innerHTML = txtStr;
		
		//Chris - change nav id name here
		newNav.id = "navnew";
		
		var hd = document.getElementById('hd')
		
		//Get old nav in DOM & remove it
		var objNavbar=document.getElementById('navbar');
		
		var objNav=document.getElementById('nav');
		
		if (objNavbar){
			objNavbar.parentNode.removeChild(objNavbar);
			hd.appendChild(newNav)
		}
				
		if (objNav && objNav.tagName !='UL'){
			objNav.parentNode.removeChild(objNav);
			hd.appendChild(newNav)
		}
		
		//Chris - change nav id name here
		var oMenuBar = new YAHOO.widget.MenuBar("navnew", {  
													autosubmenudisplay: true,  
													hidedelay: 750,  
													lazyload: false });  
	    oMenuBar.render();			
	},
 
	startRequest:function() {
		
		if (document.location.href.search('/fr/') != -1){
			YAHOO.util.Connect.asyncRequest('GET', '/fr/alfresco-nav.xml', callback, null);	
		}
		else if (document.location.href.search('/de/') != -1){
			YAHOO.util.Connect.asyncRequest('GET', '/de/alfresco-nav.xml', callback, null);	
		}
		else if (document.location.href.search('/es/') != -1){
			YAHOO.util.Connect.asyncRequest('GET', '/es/alfresco-nav.xml', callback, null);	
		}
		else if (document.location.href.search('/it/') != -1){
			YAHOO.util.Connect.asyncRequest('GET', '/it/alfresco-nav.xml', callback, null);	
		}
		else if (document.location.href.search('/jp/') != -1){
			YAHOO.util.Connect.asyncRequest('GET', '/jp/alfresco-nav.xml', callback, null);	
		}
		else{
			YAHOO.util.Connect.asyncRequest('GET', '/alfresco-nav.xml', callback, null);	
		}
	}
};

/*
 * Define the callback object for success and failure
 * handlers as well as object scope.
 */
var callback = {
	success:AjaxObject.handleSuccess,
	failure:AjaxObject.handleFailure,
	scope: AjaxObject
};


YAHOO.example.Timing = function() {

	//create shortcut for YAHOO.util.Event:
	var Event = YAHOO.util.Event;

	//the returned object here will be assigned
	//to YAHOO.example.Timing and its members will
	//then be publicly available:
	return {

		//we'll use this handler for onAvailable, onContentReady, //and onDOMReady:
		fnHandler: function(message) {
			//onDOMReady uses the Custom Event signature, with the object
			//passed in as the third argument:
			if(arguments.length > 2) {
				message = arguments[2];
			}
			//console.log(message, "info", "example");
			AjaxObject.startRequest();			
		}, 
		
		fnHandler: function(message) {
			//onDOMReady uses the Custom Event signature, with the object
			//passed in as the third argument:
			if(arguments.length > 2) {
				message = arguments[2];
			}
			//console.log(message)
			if (message=="navbar"){
				AjaxObject.startRequest();
			}
			
			if (message=="nav"){
				var objNav=document.getElementById('nav');
				if (objNav.tagName == 'DIV'){
					AjaxObject.startRequest();
				}
			}
			
			if(message=="navnew"){
				MakeParentActive.start();
			}
		},  

		init: function() {			
			//assign onAvailable handler:
			Event.onAvailable("navbar", this.fnHandler, "navbar");
		

			Event.onAvailable("nav", this.fnHandler, "nav");

			Event.onAvailable("navnew", this.fnHandler, "navnew");
		}
	}
}();

function cleanWhitespace(node)
{
  	for (var i=0; i<node.childNodes.length; i++)
  	{
    	var child = node.childNodes[i];
    	if(child.nodeType == 3 && !/\S/.test(child.nodeValue))
    	{
    		node.removeChild(child);
     		i--;
    	}
    	if(child.nodeType == 8)
    	{
    		node.removeChild(child);
     		i--;
    	}
    	if(child.nodeType == 1)
    	{
      		cleanWhitespace(child);
    	}	
  	}
  	return node;
}

function isActive(fullUrl, pageUrl, navLevel){
	
	if (pageUrl.charAt(0)=='/'){
		//alert('we get here 2')
		pageUrl = pageUrl.substr(1);
	}
	
	if (pageUrl.charAt(pageUrl.length-1)=='/'){
		pageUrl = pageUrl.slice(0, -1);
	}
	
	fullUrl = fullUrl.split("/");
	var shortenedFullURL="";
	
	for(i=0;i<fullUrl.length;i++){
		//if (i>3){ change this in live environment 
		if (i>2){
			shortenedFullURL+=fullUrl[i];
			if (i < fullUrl.length-2){
				shortenedFullURL+='/';
			}
		}
	}

	if (shortenedFullURL == pageUrl){
		if (navLevel==1){
			return "yuimenubaritem-preselected";
		}
		if (navLevel==2){
			return "yuimenuitem-preselected";
		}
	}else{
		return null;
	}	
}

YAHOO.example.Timing.init();
