var W3CDOM = (document.createElement && document.getElementsByTagName);

/* ----------------------------------------------------------------
$()
	
Función "recolectora de elementos". Normalmente se usa como
sustituto de escritura rápida para document.getElementById().
Se le pueden pasar los parámetros que se quieran, pudiendo
ser estos cadenas u objetos.
	
Ejemplos de uso:
	- Obtenemos el elemento con "id" igual "foobar".		
	  var foobar = $("foobar");		
	- Obtenemos en un array los elementos con "id" igual a
	  "foo" y "bar"		
	  var foobar = $("foo", "bar");
---------------------------------------------------------------- */
function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == "string") element = document.getElementById(element);		
		if (arguments.length == 1) return element;		
		elements.push(element);
	}
	return elements;
}

// devuelve un array con todos los objetos que tengan la clase que se le pase como parametro (className)
// y esten contenidos dentro del contenedor especificado (container) que puede ser un literal o el propio objeto. Si no se le pasa este parametro, buscara dentro del contenedor "wrapper"
document.getElementsByClassName = function(className, container){
   var data = tags = [];
   var obj = $("wrapper");
   var node = aux = null;		
	if(container) node = (typeof(container) == "object") ? container : $(container);
	else node = (obj) ? obj : document;		   
	aux = node.getElementsByTagName("*");		
	tags = (document.all) ? node.all : aux;	
   for(var i=0;i<tags.length;i++) { if(tags[i].className == className || tags[i].className.indexOf(className) != -1) data[data.length]=tags[i];}	
   return data;
}

var e = {
	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;
		}else {
			return false;
		}
	}
}

var curves={
	setTabsHeader:function(id){
		var obj = $("headerNavBar");		
		var elements = obj.getElementsByTagName("li");
		var cTopLeft = cTopRight = firstElement = null;
		for(var i = 0; i < elements.length; i++){
			// buscar primera elemento
			firstElement = elements[i].firstChild;
			// crear elementos
			cTopLeft = curves.createElementsCurves("cTopLeft");
			cTopRight = curves.createElementsCurves("cTopRight");		
			// insertar curva izquierda
			elements[i].insertBefore(cTopLeft, firstElement);		
			// insertar curva derecha
			elements[i].appendChild(cTopRight);	
			cTopLeft = cTopRight = null;
		}						
	},
	setMainInfo:function(){
		var obj = $("results");				
		var elements = obj.getElementsByTagName("h3");
		var cTopLeft = cTopRight = firstElement = null;
		for(var i = 0; i < elements.length; i++){
			// buscar primera elemento
			firstElement = elements[i].firstChild;
			// crear elementos
			cTopLeft = curves.createElementsCurves("cTopLeft");
			cTopRight = curves.createElementsCurves("cTopRight");		
			// insertar curva izquierda
			elements[i].insertBefore(cTopLeft, firstElement);		
			// insertar curva derecha
			elements[i].appendChild(cTopRight);	
			cTopLeft = cTopRight = null;
		}	
	},
	createElementsCurves:function(style){
		var element = document.createElement("div");
		element.className = style + " sp";
		element.appendChild(document.createTextNode(" "));
		return element;
	}
}
	
var acciones = {	
	fontSize : {
		userClicks:0,
		aumentar:function(){
			$("aumentar").href = "javascript:void(null);";
			if(acciones.fontSize.userClicks == 0) stablishCSS('mas');
			else if(acciones.fontSize.userClicks == 1) stablishCSS('mas2');				
			if(acciones.fontSize.userClicks < 2) acciones.fontSize.userClicks++;
			return false;
		},
		disminuir:function(){	
			$("disminuir").href = "javascript:void(null);";
			if(acciones.fontSize.userClicks == 1) stablishCSS('normal');
			else if(acciones.fontSize.userClicks == 2) stablishCSS('mas');
			if(acciones.fontSize.userClicks > 0) acciones.fontSize.userClicks--;
			return false;
		}
	},
	imprimir:function(){	
		window.print();
		return false;
	},
	enviar:function(){	
		var nodo = $("enviar").getAttribute("rel");
		window.open('plantillas/recomendar.jsp?nodo=' + nodo,'recomendar','width=400, height=400')
		return false;
	},
	conmutarDisplay:function(id){			
		var capaGrupo = $('grupo' + id);		
		if(capaGrupo.className.indexOf('hide') >= 0) capaGrupo.className = capaGrupo.className.replace('hide','');
		else capaGrupo.className += " hide";	
		return false;
	},
	conmutar:function(){	
		var grupos = document.getElementsByClassName("grupoLiga", "contGrupos");  
		var boton = null;
		for(i=0; i<grupos.length; i++){			
			boton = $('botonGrupo' + grupos[i].getAttribute("rel"));
			boton.atributo = grupos[i].getAttribute("rel");
			boton.onclick = function() { acciones.conmutarDisplay(this.atributo); return false }
		}		
		return false;
	},
	externalLinks:function() { 
		 if (!document.getElementsByTagName) return; 
		 var anchors = document.getElementsByTagName("A"); 
		 for(var i = 0; i < anchors.length; i++){
		   if (anchors[i].getAttribute("href") && anchors[i].getAttribute("rel") == "external") 
			     	anchors[i].target = "_blank"; 
		 }
	},
	setIframesNavBar:function(){
		var navBar = $("navBar");
		var lisNavBar = navBar.getElementsByTagName("li");
		var dlsNavBar = [];
		var iframe = null;
		for(var i = 0; i < lisNavBar.length; i++){
			dlsNavBar = lisNavBar[i].getElementsByTagName("dl");
			iframe = document.createElement("iframe");
			iframe.tabIndex = "-1";
			iframe.src = "javascript:false;";			
			iframe.style.left = lisNavBar[i].offsetLeft + "px";
			iframe.style.top = lisNavBar[i].offsetTop + "px";
			iframe.style.width = dlsNavBar[0].offsetWidth + "px";
			iframe.style.height = dlsNavBar[0].offsetHeight + "px";
//			lisNavBar[i].appendChild(iframe);			
		}		
	}
}

var navBar = {
	init:function(){				
		var obj = $("navBar");
		var lisNavBar = obj.getElementsByTagName("li");
		var dlsNavBar = [];
		var iframe = null;
		for(var i = 0; i < lisNavBar.length; i++){
			dlsNavBar = lisNavBar[i].getElementsByTagName("dl");
			iframe = document.createElement("iframe");
			iframe.tabIndex = "-1";
			iframe.src = "javascript:false;";			
			iframe.style.position = "absolute";
			iframe.style.zIndex = 1;			
			iframe.style.border = "none";
			iframe.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=0, opacity=0";
			iframe.style.display = "none";			
			lisNavBar[i].appendChild(iframe);			
			lisNavBar[i].onmouseover = function() { navBar.hiddenIframes(this); navBar.show(this) }
		}		
	},
	show:function(obj){
		var liItem = $(obj);
		var iframe = liItem.getElementsByTagName("iframe")[0];
		var dl = liItem.getElementsByTagName("dl")[0];
		iframe.style.display = "block";
		iframe.style.left = dl.offsetLeft + "px";
		iframe.style.top = dl.offsetTop + "px";
		iframe.style.width = dl.offsetWidth + "px";		
		iframe.style.height = "300px";
	},
	hiddenIframes:function(obj){
		var iframes = $("navBar").getElementsByTagName("iframe");
		for(var i = 0; i < iframes.length; i++){
			if(iframes[i].parentNode != this) iframes[i].style.display = "none";
		}
	}
}

var tabsModules={
	historyModule:null,
	firstTab:null,
	containerInfoClass:"",
	setEventsModule:function(isHome){
		var obj = $("results");		
		var titleElements = obj.getElementsByTagName("h3");
		var aElements = null;
		tabsModules.containerInfoClass = (!isHome) ? "out2" : "out";
		for(var i = 0; i < titleElements.length; i++){
			aElements = titleElements[i].getElementsByTagName("a");									
			aElements[0].onclick = tabsModules.toogleTab;
			aElements[0].onkeypress = tabsModules.toogleTab;
			// almaceno la primera pestaña para cambiar su estado en la primera accion del usuario
			if(i == 0) tabsModules.firstTab = aElements[0].parentNode.parentNode;
		}
	},
	toogleTab:function(){
		// nos quedamos con el elemento raiz para despues buscar la capa;
		var objParent = this.parentNode.parentNode;
		var toogleElement = document.getElementsByClassName(tabsModules.containerInfoClass, objParent)[0];  
		var toogleFirsTime = null;
	    if(tabsModules.historyModule != null) tabsModules.hide(tabsModules.historyModule);
		else {
			toogleFirsTime = document.getElementsByClassName(tabsModules.containerInfoClass, tabsModules.firstTab)[0];  
			tabsModules.hide(toogleFirsTime);
		}
	  	tabsModules.show(toogleElement);
		/* establezco el foco en la parte que se muestra para ayudar a los usuarios que utilicen una herramienta de asistencia
	   por voz */
		toogleElement.tabIndex = -1;		
		toogleElement.focus();
		tabsModules.historyModule = toogleElement;
		return false;
	},
	show:function(obj){ 	
		obj.style.display = "block"; 
		obj.parentNode.className += "Sel";
	},
	hide:function(obj){ 
		obj.style.display = "none"; 
		obj.parentNode.className = obj.parentNode.className.replace("Sel","");
	}			
}

/* ASIGNACION DE EVENTOS */
var load={
	existeId:function(cid){
		if($(cid)) return true;
		return false;
	},
	existeClass:function(className, container){
		var content = (!container) ? $("bodyContent") : $(container);
		var existsClass = false;
		if(content){			
			if(content.className.indexOf(className) != -1) existsClass = true;
		}	
		return existsClass;
		
	},
	setEvents:function(){			
		acciones.externalLinks();
		//if(load.existeId("navBar")) navBar.init();
		if(load.existeId("navBar")) acciones.setIframesNavBar();
		if(load.existeId("headerNavBar")) curves.setTabsHeader();	
		if(load.existeId("results")) curves.setMainInfo();
		if(load.existeClass("home")) tabsModules.setEventsModule(true);
		if(load.existeClass("special", "results")) tabsModules.setEventsModule();
		if(load.existeId("imprimir")){
			$("imprimir").style.display = 'block';
			e.addEvent($("imprimir"),'click',acciones.imprimir,false);
		}		
		if(load.existeId("aumentar")){
			$("aumentar").style.display = 'block';
			e.addEvent($("aumentar"),'click',acciones.fontSize.aumentar,false);
			e.addEvent($("aumentar"),'keypress',acciones.fontSize.aumentar,false);
		}
		if(load.existeId("disminuir")){
			$("disminuir").style.display = 'block';
			e.addEvent($("disminuir"),'click',acciones.fontSize.disminuir,false);
			e.addEvent($("disminuir"),'keypress',acciones.fontSize.disminuir,false);
		}
		if(load.existeId("contGrupos")){
			acciones.conmutar();
		}		
		
	}
}


if(W3CDOM) e.addEvent(window, "load", load.setEvents, false);