// Accordion builder
// Builder: from a li/ul structure
// Copyright 2009 AutumnPress Inc.  All rights reserved.

//Accordion Vars
var lastAccord = null;
//var disp = getCSSRule('#accordion');
//disp.style.display = "none";


function buildAccordion(accord, liNode,backColor,subMenuColor,rollOverColor) {
	// accordion build
	// Change CSSs according to the parameters
	if (backColor != -1) {
		var backc = getCSSRule('#accordion');
		backc.style.background = backColor;
		backc = getCSSRule('.tdcontainer');
		backc.style.visibility = 'visible';
		backc.style.background = backColor;
		
		backc = getCSSRule('ul.accord li.accord');
		backc.style.background = backColor;
		// sub opyions
		backc = getCSSRule('ul.accord li.hoja');
		backc.style.background = subMenuColor;
	} else {
		//use default colors
		backColor = "#41587e";
		rollOverColor = "#2e3e58";
		subMenuColor = "#7485A0";
		var backc = getCSSRule('ul.accord li.hoja');
		backc.style.background = subMenuColor;
	}

	var accordion = $(accord);

	liNode = $(liNode);
/*	var disp = getCSSRule('#accordion');
	disp.style.display = "block";*/
	accordion.style.visibility = 'hidden';

	//accordion.innerHTML = this.childNodes[1].innerHTML;
//			alert('New accordion'+ i);
//			alert(this.childNodes.length);
	if (!liNode) {
		return;
	}
	for (var h=0; h<liNode.childNodes.length; h++){
		if (liNode.childNodes[h].nodeName=="DIV") {
			var div= liNode.childNodes[h];//.childNodes[0];
			accordion.innerHTML = div.innerHTML;
			// break == get only submenu section
			//break;
		}
	}
	//
	var spans = accordion.getElementsByTagName("span");
	var lis = accordion.getElementsByTagName("li");
	var divs = accordion.getElementsByTagName("div");
	var divs2 = accordion.getElementsByTagName("div");
	var uls = accordion.getElementsByTagName("ul");
	var as = accordion.getElementsByTagName("a");

	//here we should make sure the actual menu is close to get the correct heights and correct opacityies
	// not implemented yet
/*	for (var i=0; i<divs.length; i++){	
		divs[i].id =  'acc'+divs[i].id;
		var oldh = $(divs[i].id).maxh;
		
		
		$(divs[i].id).style.height = divs[i].maxh;
		$(divs[i].id).style.opacity = '1';
		$(divs[i].id).style.MozOpacity = '1';
		$(divs[i].id).style.KhtmlOpacity = '1';
		$(divs[i].id).style.opacity = '1';
		$(divs[i].id).style.filter= 'alpha(opacity='+100+');';	
		
		divs[i].id =  'acc'+divs[i].id;
//				divs[i].style.visibility = 'hidden';
		var od = divs[i].style.display;
		divs[i].style.display = 'block';
		
		divs[i].style.height = 'auto';
		divs[i].maxh = sh(divs[i]);
		divs[i].style.display = od;
//				divs[i].style.visibility = 'visible';

		divs[i].style.opacity = '1';
		divs[i].style.MozOpacity = '1';
		divs[i].style.KhtmlOpacity = '1';
		divs[i].style.opacity = '1';
		divs[i].style.filter= 'alpha(opacity='+100+');';	
	}*/
	
	for (var i=0; i<uls.length; i++){
		uls[i].id = 'acc'+uls[i].id;
		if (uls[i].className = 'menu') {
			uls[i].className = 'accord';
		}
		//uls[i].className = '';
	}
	for (var i=0; i<lis.length; i++){
		var tg = lis[i];
		var lvl = $(tg.id).level;
		var submenu = $(tg.id).submenu;
		//alert(liNode.submenu);
		lis[i].id = 'acc_'+lis[i].id;
		//lis[i].onmouseup = fmu;	
		lis[i].parentid = liNode.id;
		lis[i].level = lvl;
		lis[i].submenu = submenu;
		lis[i].onmouseup  = function (e) {
			// build the next link to show content 
			// content must be showed on leaf nodes, so accordion is consistent
			// also we need to ensure that the id is from the main menu, 
			// so acc_ IDprefix need to be deleted
		    var id = this.id.toString().replace(/acc_/g,"");
			id = id.replace(/menu_li/g,"");
			this.level= this.level+1;
			if (this.level == 3) {
				goToLink(id);
			} else {
				this.openaccord(e);
			} 
			return;
		}
		
		lis[i].style.zIndex='2';
		var level = 0;
		while (tg) {
			if (tg.nodeName=="DIV") {
				level++;			
			}
			tg= tg.parentNode;
		}
		// level of the li element 
		lis[i].level = level/2;
		if (lis[i].level == 1) {
			// add onrollov accord expand 
			//********************************************************************************************
			//********************************************************************************************
			//********************************************************************************************
			//********************************************************************************************
			//********************************************************************************************
			//********************************************************************************************
			lis[i].className = 'accord';
			lis[i].num = i;
			lis[i].opened = false;
			
			lis[i].onmouseover = function(e) {	
				this.style.background =  rollOverColor; //"#2e3e58";
				//this.openaccord(e);
			}
			lis[i].onmouseout = function(e) {	
				if (!this.opened) {
					this.style.background = backColor; //"#41587e";
					//this.closeaccord(e);
				}
			}

			lis[i].closeaccord = function(e) {
				e = window.event||e;
			    e.cancelBubble = true;
		    	if (e.stopPropagation) e.stopPropagation(); 
				var tg = (window.event) ? e.srcElement : e.target;
				var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
				//alert("de: "+ tg.className + " hasta: " + reltg.className);					
			}
			lis[i].openaccord = function(e) {
				e = window.event||e;
			    e.cancelBubble = true;
		    	if (e.stopPropagation) e.stopPropagation(); 
				var tg = (window.event) ? e.srcElement : e.target;
				var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
/*				alert(tg.className);
				if (tg.className == '' || tg.className == 'final' || tg.className == 'hoja')
					return;*/
//				alert("de: "+ reltg.className + " hasta: " + tg.id);					
				while (tg) {
					if (tg.nodeName == "LI" && this.id == tg.id) {
//						alert(tg.className + " ID: " + tg.id + " this ID: " + this.id);
						for (var h=0; h<this.childNodes.length; h++){
							if (this.childNodes[h].nodeName=="DIV") {
								//second div
								var div= this.childNodes[h].childNodes[0];
								var div1= this.childNodes[h];
//								div.style.visibility='visible';
//								div.style.height = sh(div);
								var spanHere = this.childNodes[1];

								if (!this.opened) {
									if (div1.to)
										clearInterval(div1.to);
									ex2(div1);
//									var backcolor = getCSSRule('ul.accord li.accord');
//									backcolor.style.background = "#2e3e58";
									//this.style.background = "#2e3e58";
									//changecss('ul.accord li.accord','background',"#2e3e58");
									spanHere.style.color =  "#FFFFFF";
									this.style.color =  "#FFFFFF";
									//alert(div.className);
									this.opened = true;
									//break;
								} /* else {
									if (div1.ti)
										clearInterval(div1.ti);
									cl2(div1,true);
									this.style.background = "#41587e";
									spanHere.style.color =  "#AAAAAA";
									this.style.color =  "#AAAAAA";						
									this.opened = false;
								}*/
							}
						} //for
					} //if
					tg= tg.parentNode;
				} //while
				//now close other opened accordions 
				//*********
				if (lastAccord!=null) {
					if (lastAccord != this) {
						for (var g=0; g<lastAccord.childNodes.length; g++){
							if (lastAccord.childNodes[g].nodeName=="DIV") {
								//second div
								var div1= lastAccord.childNodes[g];
								if (div1.ti)
									clearInterval(div1.ti);
								cl2(div1,true);
								lastAccord.style.background = backColor; //"#41587e";
								var spanHere = lastAccord.childNodes[1];	
								spanHere.style.color =  "#AAAAAA";
								lastAccord.style.color = "#AAAAAA";
								// look at cl2 i.e. ct end
								lastAccord.opened = false;
								break;
							}
						}
						lastAccord = this;		
					}
				} else {
					lastAccord = this;
				}				
//				lis[i].maxh = sh(lis[i]);
//				ex2(lis[i],'f');
			}
			// End mouse over
			//********************************************************************************************
			//********************************************************************************************
			//********************************************************************************************
			//********************************************************************************************
			//********************************************************************************************		
		} else {
			// level > 1
			lis[i].className = 'hoja';
		}
	}
	for (var i=0; i<spans.length; i++){				
		var tg = spans[i];
		spans[i].id = 'acc'+spans[i].id;
		if (!spans[i].className) {
			var level = 0;
			while (tg) {
				if (tg.nodeName=="DIV") {
					level++;			
				}
				tg= tg.parentNode;
			}
			//alert(level);
			spans[i].level = level/2;
			if (spans[i].level == 1) {
				spans[i].className = 'inicio';
			} else {
				spans[i].className = 'final';
			}
		}
	}
	for (var i=0; i<as.length; i++){
		var tg = as[i];
		var level = 0;
		while (tg) {
			if (tg.nodeName=="DIV") {
				level++;			
			}
			tg= tg.parentNode;
		}
		as[i].id = 'acc'+as[i].id;
		//append image for arrow 
		//arrow only at 2 lvl
		if (level/2 == 2) {
			var span = document.createElement("span");
			span.className = 'imgarrow';
			as[i].parentNode.insertBefore(span,as[i]);
			var img = document.createElement("img");
			img.setAttribute("src","images_accordion/flecha.png");					
			// to build correctly in FF 3, we need height and width as properties
			img.width = '20';
			img.height = img.width;
			span.appendChild(img);
		}
	}
	//let div for last, so we get the correct height 
	for (i=0; i<divs.length; i++){
		divs[i].id =  'acc'+divs[i].id;
		if (divs[i].className = 'menu4') {
//					divs[i].className = 'accord';
		}
		
		if ((i % 2)+1== 2) {
			//divs[i].className = 'accord';
			// content div is the first div 
//					divs[i].id = 'test'+i+'-content';
			divs[i].maxh = sh(divs[i]);
			divs[i].style.visibility = 'hidden';
			divs[i].style.height = '0px';
		} else {
			
			//divs[i].className = 'accord2';
			//submenus here
			//alert("submenu");
			//divs[i].className= 'accordion_child';
		}					
	}
	accordion.style.visibility = 'visible';	
	//alert($("acc_"+l2).openaccord);
	toOpen = $("acc_"+l2);
	var justOpened = false;
	if (toOpen) {
	for (var h = 0; h < toOpen.childNodes.length; h++) {
		if (toOpen.childNodes[h].nodeName == "DIV") {
			var div = toOpen.childNodes[h].childNodes[0];
			var div1 = toOpen.childNodes[h];
			var spanHere = toOpen.childNodes[1];
			if (!toOpen.opened) {
				if (div1.to) {
					clearInterval(div1.to);
				}
				ex2(div1);
				lastAccord = toOpen;
				spanHere.style.color = "#FFFFFF";
				toOpen.style.color = "#FFFFFF";
				toOpen.opened = true;
				toOpen.style.background =  rollOverColor;
				justOpened = true;
				break;
			}
		}
	}
	}
	if (!justOpened && l2) {
		//single option
		spanHere = $("accmenu_span"+ l2.substring(7)+"_0");
		spanHere.style.color = "#FFFFFF";
		//toOpen.style.color = "#FFFFFF";
		toOpen.opened = true;
		toOpen.style.background =  rollOverColor;
	}
	if (l3) {
		//clicked on level 3
		// OJO el _0 al final deberia ser eliminado, no cumple ninguna funcion
		spanHere = $("accmenu_span"+ l3.substring(7)+"_0");
		spanHere.style.color = "#FFFFFF";
	}
	//alert(accordion.innerHTML);
}
		
