function menu(){
	this.menuClass='menu';
	this.hidemenuClass='hidemenu';
	this.showmenuClass='showmenu';
	this.parentmenuClass='parentmenu';
	this.currentmenuClass='currentmenu';
	
	this.topLevelOpenImage='/img/flechabajo.gif';
	this.topLevelClosedImage='/img/flechaderecha.gif';
	this.midLevelOpenImage='/img/flechadown.gif';
	this.midLevelClosedImage='/img/flechaup.gif';
	this.endLevelImageSrc='/img/submenu.gif';
	
	this.linkParent=false;
	
	this.initMenu=initMenu;
	this.showhide=showhide;
	this.createTopLevelImage=createTopLevelImage;
	this.createMidLevelImage=createMidLevelImage;
	this.createEndLevelImage=createEndLevelImage;
	this.cssjs=cssjs;
	this.addEvent=addEvent;
	this.getTarget=getTarget;
	this.cancelClick=cancelClick;
	this.mostrarcapamenu=mostrarcapamenu;
	this.capamenu=capamenu;
}

function capamenu(){
	document.getElementById("ulmenu").style.visibility="hidden"; 
}

function mostrarcapamenu(){
	document.getElementById("ulmenu").style.visibility="visible"; 
}


function createTopLevelImage(){
	menu.topLevelImage=document.createElement('a');
	menu.topLevelImage.setAttribute('href', 'javascript:;');
	menu.topLevelImage.appendChild(document.createElement('img'));
	menu.topLevelImage.getElementsByTagName('img')[0].src=menu.topLevelClosedImage;
}

function createMidLevelImage(){
	menu.midLevelImage=document.createElement('a');
	menu.midLevelImage.setAttribute('href', 'javascript:;');
	menu.midLevelImage.appendChild(document.createElement('img'));
	menu.midLevelImage.getElementsByTagName('img')[0].src=menu.midLevelClosedImage;
}
function createEndLevelImage(){
	menu.endLevelImage=document.createElement('img');
	menu.endLevelImage.setAttribute('src', menu.endLevelImageSrc);
}

function cssjs(a,o,c1,c2) {
		switch (a) {
			case 'swap':
				o.className = !pde.cssjs('check', o, c1) ? o.className.replace(c2,c1) : o.className.replace(c1,c2);
			break;
			case 'add':
				if(!menu.cssjs('check', o, c1)){o.className += o.className ? ' ' + c1 : c1;}
			break;
			case 'remove':
				var rep=o.className.match(' '+c1) ? ' ' + c1 : c1;
				o.className=o.className.replace(rep,'');
			break;
			case 'check':
				return new RegExp("(^|\s)" + c1 + "(\s|$)").test(o.className)
			break;
		}
	}


function initMenu(){
	menu.createTopLevelImage();
	menu.createMidLevelImage();
	menu.createEndLevelImage();
	if(!document.getElementById || !document.createTextNode) {return;}
	var uls=document.getElementById('menu').getElementsByTagName('ul');	
	for(var i=0;i<uls.length;i++){
		var inneruls,parentLI,endlis;
		if(!menu.cssjs('check',uls[i],menu.menuClass)){continue;}
		inneruls=uls[i].getElementsByTagName('ul');
		for(var j=0;j<inneruls.length;j++){
			parentLI=inneruls[j].parentNode;
			if(inneruls[j].getElementsByTagName('ul').length==0){
				endlis=inneruls[j].getElementsByTagName('li');
				for(var k=0;k<endlis.length;k++){
					if(endlis[k].getElementsByTagName('strong')[0]){
						menu.cssjs('add',parentLI,menu.currentmenuClass);
						//continue;
					}
					endlis[k].insertBefore(menu.endLevelImage.cloneNode(true),endlis[k].firstChild);
				}
			}
			if(parentLI.getElementsByTagName('strong')[0]){
				menu.cssjs('add',parentLI,menu.currentmenuClass);
				continue;
			}
			menu.cssjs('add',parentLI,menu.parentmenuClass);
			if(menu.cssjs('check',parentLI.parentNode,menu.menuClass)){
				parentLI.insertBefore(menu.topLevelImage.cloneNode(true),parentLI.firstChild);
			}
			else{
				parentLI.insertBefore(menu.midLevelImage.cloneNode(true),parentLI.firstChild);
			}
			menu.cssjs('add',inneruls[j],menu.hidemenuClass);
			menu.addEvent(parentLI.getElementsByTagName('a')[0],'click',menu.showhide,false);
			parentLI.getElementsByTagName('a')[0].onclick=function(){return false;}//Safari hack
			if(menu.linkParent){
				menu.addEvent(parentLI.getElementsByTagName('a')[1],'click',menu.showhide,false);
				parentLI.getElementsByTagName('a')[1].onclick=function(){return false;} // Safari hack
			}
		}
	}
	menu.mostrarcapamenu();
}

function showhide(e){
	var image;
	var elm=menu.getTarget(e);
	var li=elm.parentNode
	var ul=elm.parentNode.getElementsByTagName('ul')[0];
	var img=elm.parentNode.getElementsByTagName('img')[0];
	if(menu.cssjs('check',ul,menu.hidemenuClass)){
		if(menu.cssjs('check',li.parentNode,menu.menuClass)){
			image=menu.topLevelOpenImage;
		}
		else{
			image=menu.midLevelOpenImage;
		}
		menu.cssjs('remove',elm.parentNode.getElementsByTagName('ul')[0],menu.hidemenuClass);
		menu.cssjs('add', elm.parentNode.getElementsByTagName('ul')[0],menu.showmenuClass);
	}
	else{
		if(menu.cssjs('check',li.parentNode,menu.menuClass)){
			image=menu.topLevelClosedImage;
		}
		else{
			image=menu.midLevelClosedImage;
		}
		menu.cssjs('remove',elm.parentNode.getElementsByTagName('ul')[0],menu.showmenuClass);
		menu.cssjs('add', elm.parentNode.getElementsByTagName('ul')[0],menu.hidemenuClass);
	}
	img.setAttribute('src',image);
	menu.cancelClick(e);
}
function addEvent(elm, evType, fn, useCapture){
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} 
	else 
		if (elm.attachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		} 
		else {
			elm['on' + evType] = fn;
		}
}

function getTarget(e) {
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	if (!target){return false;}
	if (target.nodeName.toLowerCase() != 'a'){target = target.parentNode;}
	return target;
}

function cancelClick(e) {
	if (window.event) {
		window.event.cancelBubble = true;
		window.event.returnValue = false;
		return;
	}
	if (e) {
		e.stopPropagation();
		e.preventDefault();
	}
}

menu=new menu();
menu.addEvent(window, 'load', menu.initMenu, false);


