var newStyle = "<style>"; var endStyle = "</style>";
newStyle+="#listadoDesplegable ul li.collapsed span, #listadoDesplegable ul li.expanded span{ cursor:pointer;}";
document.write(newStyle+endStyle);

String.prototype.trim=function (){return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');}
Number.prototype.round=function round(n){n=n || 2;return Math.round(this * Math.pow(10,n) ) / Math.pow(10,n) ;}

//Gestion de eventos
var ev = {
	addEvent : function(obj, evType, fn, useCapture){
		if (obj.addEventListener){
			obj.addEventListener(evType, fn, useCapture);
			return true;
		}else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		}
		return false;
	},
	releaseEvent : function(obj, evType, fn, useCapture){
		if (obj.addEventListener){
			obj.removeEventListener(evType, fn, useCapture);
			return true;
		}else if (obj.attachEvent){
			var r = obj.detachEvent("on"+evType, fn);
			return r;
		}
		return false;
	}
}

var nav={
	strdata:"",
	thename:"",
	theversion:"",
	load:function(){
		nav.strdata=navigator.userAgent.toLowerCase();
		if(nav.strdata.indexOf("msie")!=-1){
			nav.thename="msie";
			var auxVersion=nav.strdata.split("msie")[1];
			nav.theversion=auxVersion.substring(1, parseInt(auxVersion.indexOf(";")));
		}else if(nav.strdata.indexOf("firefox")!=-1){
			nav.thename="firefox";
			nav.theversion=nav.strdata.split("firefox")[1].substring(1,nav.strdata.length);
		}else if(nav.strdata.indexOf("opera")!=-1){
			nav.thename="opera";
			var auxVersion=nav.strdata.split("opera")[1];
			nav.theversion=auxVersion.substring(1,auxVersion.indexOf(" "));
		}else if(nav.strdata.indexOf("chrome")!=-1){
			nav.thename="chrome";
			var auxVersion=nav.strdata.split("chrome")[1];
			nav.theversion=auxVersion.substring(1, parseInt(auxVersion.indexOf(" ")));
		}else{
			nav.thename="unknown";
			nav.theversion="unknown";
		}
	},
	getNavigator:function(){ nav.load();return nav.thename},
	getVersion:function(){nav.load();return nav.theversion},
	gt_ie:function(v){return (nav.ie() && nav.getVersion()>v)},
	gte_ie:function(v){return (nav.ie() && nav.getVersion()>=v)},
	lt_ie:function(v){return (nav.ie()  && nav.getVersion()<v)},
	lte_ie:function(v){return (nav.ie() && nav.getVersion()<=v)},
	ie:function(){return (nav.getNavigator()=="msie")},
	ie6:function(){return (nav.getNavigator()=="msie" && nav.getVersion().charAt(0)==6)}
}

var objAjax={
	create:function(){
		http_request = false;
		if (window.XMLHttpRequest) {
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml');}
			} else if (window.ActiveXObject) {
			try {
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
		}
		if (!http_request) {
			alert('Giving up :( Cannot create an XMLHTTP instance');
			return false;
		}
		else{return http_request;}
	}
}

//Gestion de fechas
var Gdate={
	leapYear:function(y){
		if ((y%4==0) && ((y % 100 != 0) || (y % 400 == 0)))return true;
		return false;
	},
	dayMonth:function(m,y){
		if ((m==0) || (m==2) || (m==4) || (m==6) || (m==7) || (m==9) || (m==11))
		return 31;
		else if ((m==3) || (m==5) || (m==8) || (m==10))
			return 30;
			else if ((m==1) && Gdate.leapYear(y))
				return 29;
				else return 28;
	},
	daysDiff:function(d1,d2){return (Date.UTC(d2.getFullYear(),d2.getMonth(),d2.getDate(),0,0,0)- Date.UTC(d1.getFullYear(),d1.getMonth(),d1.getDate(),0,0,0))/1000/60/60/24;},
	isFormatDateCorrect:function(date){
		if(!(date.length==10 && date.charAt(2)=="\/" &&  date.charAt(5)=="\/") ){return false;
		}else {
			var d=date.split("\/")
			if(d.length!=3) {return false;}
			else {
				if((d[0]>Gdate.dayMonth(d[1],d[2])) || (parseInt(d[0])>31 || parseInt(d[0])<=0) || (parseInt(d[1])>12 || parseInt(d[1])<=0)){ return false}
			}
		}
		return true;
	}
}
//Operaciones con formularios
var forms={
	getSelectedByValue:function(obj,val){for(var xx=0;xx<obj.options.length;xx++){if(obj.options[xx].value==val)return xx;}return null},
	getSelectedByText:function(obj,val){for(var xx=0;xx<obj.options.length;xx++){if(obj.options[xx].text==val)return xx;}return null}
}

//Control Dom
var dom={
	$:function(id){
		return document.getElementById(id);
	},
	isArray:function(obj){return obj && !(obj.propertyIsEnumerable('length')) && typeof obj === 'object' && typeof obj.length === 'number';},
	getElementsById:function(strId,sep){
		var arr=[];
		var sep=(sep==null)? "_":sep;
		while(dom.$(strId+sep+arr.length)!=null)arr[arr.length]=dom.$(strId+sep+arr.length) ;
		return arr;
	},
	getElementsByClass:function(searchClass,node,tag) {
		var classElements = new Array();
		if ( node == null )
		    node = document;
		if ( tag == null )
			tag = '*';
		var els = node.getElementsByTagName(tag);
		var elsLen = els.length;
		var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
		for (i = 0, j = 0; i < elsLen; i++) {
			if ( pattern.test(els[i].className) ) {
				classElements[j] = els[i];
				j++;
			}
		}
		return classElements;
	},
	onlyThisElement:function(tag,obj){
		var newObj=[]
		for(var xx=0;xx<obj.childNodes.length;xx++){
			if(obj.childNodes[xx].tagName==tag.toUpperCase()){
				newObj[newObj.length]=obj.childNodes[xx]
			}
		}
		return newObj
	},
	findChilds:function(obj,tag){
		var arr=[];
		for(var x=0;x<obj.childNodes.length;x++){
			if(obj.childNodes[x].tagName){
				if(obj.childNodes[x].tagName.toLowerCase()==tag.toLowerCase()){
					arr[arr.length]=obj.childNodes[x]
				}
			}
		}
		return arr;
	}

}

//Gestion de raton
var xy={
	_x:0,
	_y:0,
	_getxy:function(objN,dir){
		var cur = 0;
		if (objN.offsetParent){
			while (objN.offsetParent){
				if(dir=="x") cur += objN.offsetLeft
				else if(dir=="y")cur += objN.offsetTop
				objN = objN.offsetParent;
			}
		}else if (objN.x || objN.y){
			if(dir=="x")  cur += objN.x;
			if(dir=="y")  cur += objN.y;
		}
		return cur;
	},
	getX:function(objN){return xy._getxy(objN,"x")},
	getY:function(objN){return xy._getxy(objN,"y")}
}
var goBack={
	txt:"...volver",
	titleTxt:"Ir hacia atras",

	load:function(){
		var allBts=dom.getElementsById("goBack")
		if(allBts.length>0){
			for(var xx=0;xx<allBts.length;xx++){
				goBack.createButton(allBts[xx])
			}
		}
	},
	createButton:function(wraperBtn){
		var btn=document.createElement("a")
		btn.href="#"
		btn.className="volver"
		btn.title=goBack.txt
		btn.appendChild(document.createTextNode(goBack.txt))
		btn.onclick=function(){history.back()}
		wraperBtn.appendChild(btn)
	}
}
/*Funcionalidades asociadas a la busqueda avanzada*/
var advSearch={
	load:function(){
		var bts=document.getElementsByTagName("h3")
		for(var x=0;x<bts.length;x++){
			if(bts[x].childNodes[0].tagName){
				bts[x].childNodes[0].onclick=function(){
					advSearch.toogle(this)
				}
			}
		}
		advSearch.tramites(dom.$("search_general_7"))
		dom.$("search_general_7").onclick=function(){
			advSearch.tramites(this)
		}
	},
	toogle:function(obj){
		var form=dom.findChilds(obj.parentNode.parentNode,"form")
		if(obj.className=="closed"){
			obj.className="noClosed"
			form[0].style.display="block"
		}else{
			obj.className="closed"
			form[0].style.display="none"
		}
	},
	tramites:function(obj){
		var fieldsetConsejerias=dom.$("generalSearch").getElementsByTagName("fieldset")[2]
		if(obj.checked){
			obj.parentNode.className="select"
			fieldsetConsejerias.style.display="block"
		}else{
			obj.parentNode.className="noSelect"
			fieldsetConsejerias.style.display="none"
		}
	}
}
/*Menu generico colapsable*/
var genericMenu={
		num_capas:0,
		primer:true,
		load:function(capa,k){
            if((genericMenu.primer)&&(dom.$("primernivel")!=null)){
             k=0;
             genericMenu.primer=false;
			}
		var j=0;
		for (var i=0;i<capa.length;i++){
			if (capa[i].parentNode.getElementsByTagName("ul").length){
				enlace[j] = capa[i];
				enlace[j].href = "javascript:void(0)";
				enlace[j].onclick=function(){
					genericMenu.collapse(this)
				}
				if (k!=j) {
					genericMenu.collapse(enlace[j]);
				}
				genericMenu.load(capa[i].childNodes);
				j++;
			}
		}
		genericMenu.num_capas++;
		return genericMenu.num_capas;
	},
	collapse:function(a){
		var niveles = a.parentNode.getElementsByTagName("UL");
		var listado = a.parentNode;
		var pdfs = listado.getElementsByTagName("a");
		var i = 0;
		for (i=0;i<niveles.length;i++){
			var nivel = niveles[i];
			if (nivel.style.display == 'none') nivel.style.display = 'block';
			else nivel.style.display = 'none';
		}
		if (listado.className.indexOf('collapsed')!=-1) { //Está colapsado, a expandir
			if (listado.className.indexOf('collapsed2')!=-1) { //Es el nivel 2
				var j = 0;
				for (j = 0;j < pdfs.length ; j++) {
					if (pdfs[j].className.indexOf("pdf2")!=-1) {
						pdfs[j].style.display = 'block';
					}
				}
			}
			listado.className = listado.className.replace("collapsed","expanded");
		}else{ //Está expandido, a colapsar
			
			if (listado.className.indexOf('expanded2')!=-1) { //Es el nivel 2
				var j = 0;
				for (j = 0;j < pdfs.length ; j++) {
					if (pdfs[j].className.indexOf("pdf2")!=-1) {
						pdfs[j].style.display = 'none';
					}
				}
			}
			
			listado.className = listado.className.replace("expanded","collapsed");
		}
	},
	closeAll:function(){
		var firstLevel=dom.findChilds(dom.$("genericMenu"),"li")
		for(var x=0;x<firstLevel.length;x++){
			var secondLevel=dom.findChilds(firstLevel[x],"li")
			firstLevel[x].className="collapsed"
		}
	}
}
/*
   *Iframes para el Calendario para resolver el bug
   *de IE6 por el cual solo un frame puede situarse
   *por enciama de un combo
*/
var IframeCalendar={
	ruta:"ifr.html",
	actual:0,
	load:function(){
		var all=dom.getElementsById("fecha")
		for(var i=0;i<all.length;i++){
			var ifr=document.createElement("iframe");
			ifr.width="216";
			ifr.height="120";
			ifr.frameborder="0";
			ifr.style.border="none";
			ifr.frameborder="none";
			ifr.id="ifrCalendar_"+i;
			ifr.style.display="none";
			ifr.style.position="absolute";
			ifr.style.left=xy.getX(all[i])+"px";
			ifr.style.top=xy.getY(all[i])+"px";
			document.getElementsByTagName("body")[0].appendChild(ifr)
			IframeCalendar.create("fecha_"+i,i)
		}
	},
	init:function(){
		var all=dom.getElementsById("fecha")
		for(var i=0;i<all.length;i++){
			_cl.load("fecha_"+i,parseInt(100+i,10))
		}
	},
	viewCalendar:function(id){
		IframeCalendar.hideCalendars()
		var theIfrm=document.getElementById("ifrCalendar_"+id)
		theIfrm.style.display="block";
		IframeCalendar.actual=id
	},
	hideCalendars:function(){
		var allCal=dom.getElementsById("ifrCalendar")
		for(var i=0;i<allCal.length;i++){
			allCal[i].style.display="none"
		}
	},
	setValue:function(val){
		document.getElementById("fecha_"+IframeCalendar.actual).value=val
		parent.IframeCalendar.hideCalendars()
	},
	create:function(inputCal,id){
		var imgCal=document.getElementById("imgCalendario_"+parseInt(100+id,10));
		imgCal.contId=id;
		imgCal.onclick=function(){_cl.init(inputCal,this.contId); IframeCalendar.viewCalendar(this.contId)}
	}
}

var enlace=new Array();

window.onload=function(){
	//Iniciamos los posibles PDFs que haya en la página web, solo útil en directorio.
	
	if(dom.getElementsByClass("pdf2")[0]) {
		var pdfs = dom.getElementsByClass("pdf2");
		var i = 0;
		for (i = 0; i < pdfs.length ; i++) {
			pdfs[i].style.display = 'none';
		}
	}
	/*Fin inicialización*/
	
	if(dom.$("advSearch")){advSearch.load()}
	if(dom.$("goBack_0")){goBack.load()}
	if(dom.$("listadoDesplegable")){
		
		var dirAbierto = document.getElementById("dirAbierto");
		
		if (dirAbierto) {
			genericMenu.primer = false;
		}
		genericMenu.load(dom.$("listadoDesplegable").getElementsByTagName("SPAN"),-1);
		genericMenu.primer = true;
	}
	if(dom.getElementsByClass("desplegado2")[0]){
		genericMenu.load(dom.$("listadoDesplegable").getElementsByTagName("SPAN"),1);}

	if(dom.$("directorio")){
		genericMenu.load(dom.$("directorio").getElementsByTagName("SPAN"));}
	if(dom.$("micarpeta")){
		genericMenu.load(dom.$("micarpeta").getElementsByTagName("SPAN"));}
	
	//if(nav.ie6() && dom.$("fecha_0") ){ ev.addEvent(window,"load",IframeCalendar.load,false)}
	
	var elementos = document.getElementsByTagName("li");
	var arrayNone = new Array();
	for (var i=0; i<elementos.length; i++) {
		if (elementos[i].getAttribute("id") != null && elementos[i].getAttribute("id").split("_")[0] == "liNone") {
			arrayNone.push(elementos[i]);
		}
	}

	for(var i= 0; i<arrayNone.length; i++){
		var classLiActual = arrayNone[i].className;
		arrayNone[i].className = classLiActual.replace('none', '');
	}
	
	var dirAbierto = document.getElementById("dirAbierto");
	
	if (dirAbierto) {
		abreUL(dirAbierto);
	}
	
}

function abreUL(componenteHijo) {

	if (componenteHijo.className.indexOf('collapsed') != -1) { //Está colapsado, a expandir
		
		var hermanos = componenteHijo.parentNode.childNodes;
		for (var x = 0; x <hermanos.length; x++) {
			
			if (hermanos[x].nodeType == 1) {
				if (hermanos[x] == componenteHijo) {
					
					hermanos[x].className = hermanos[x].className.replace("collapsed","expanded");
					hermanos[x].style.display = 'block';
					
					var hijosHermano = hermanos[x].childNodes;
					
					for (var y = 0; y <hijosHermano.length; y++) {
						
						if (hijosHermano[y].nodeType == 1) {
							if (hijosHermano[y].tagName.toLowerCase() == 'ul') {
								hijosHermano[y].style.display = 'block';
							}
						}
					}
				} else {
					var hijosHermano = hermanos[x].childNodes;
					
					for (var y = 0; y <hijosHermano.length; y++) {
						
						if (hijosHermano[y].nodeType == 1) {
							if (hijosHermano[y].tagName.toLowerCase() == 'ul') {
								hijosHermano[y].style.display = 'none';
							}
						}
					}
				}
			}
		}
		
		componenteHijo.className = componenteHijo.className.replace("collapsed","expanded");
		componenteHijo.style.display = 'block';
	}
	
	if (!componenteHijo.id || componenteHijo.id != "listadoDesplegable") {
		abreUL(componenteHijo.parentNode);
	}
	
}

