include('/lib/utils/interpreteScripts.js');

var Tabs = Class.create({
	
	resultados: null,
	keys: null,
	subkeys: null,
	valores: null,
	tabs: null,
	ids: null,
	selected: null,
	idTabs: null,
	first: null,
	instancia: null,
	seleccionada: null,
	initialize: function(id, instancia, classOl, cuerpoId, tabs) {
		var muestraDatos = this.muestraDatos.bind(this);
		var olTab = $(id + '_tabs');
		if(olTab==null) {	return; }
		this.cuerpoId = cuerpoId;
		this.selected = 0;
		this.idTabs = id + "_tabs";
		this.keys = new Array();
		this.subkeys = new Array();
		this.valores = new Array();
		this.tabs = tabs;
		this.instancia = instancia;
		this.first = "";
		this.ids = new Array();
		this.resultados = new Array();

		for (key in tabs) {
			if (key == "inicial") this.first = tabs[key];
			else this.keys.push(key);
		}
		
		if (this.first.blank())
			this.first = "buscadorVuelos";

		for (var i = 0; i < this.keys.length; i++) {
			for (key in this.tabs[this.keys[i]]) {
				this.subkeys.push(key);
			}
		}
		
		for (var i=0; i<this.keys.length; i++) {
			var valor = this.tabs[this.keys[i]][this.subkeys[i]];
			if (valor) {
				this.resultados.push(false);
				this.ids.push(this.creaId(this.subkeys[i]));
			}
			else {
				this.resultados.push(true);
				this.ids.push(this.keys[i]);				
			}
				
			this.valores.push(this.tabs[this.keys[i]][this.subkeys[i]]);
		}

		for (var i = 0; i < this.keys.length; i++) {
			//Se hace la llamada por ajax
			if (this.valores[i]) {
				var e = new Element("div", {"id": "" + this.ids[i] + "", "class": "" + this.ids[i] + ""});				
				$(cuerpoId).appendChild(e);
					
				var url = this.keys[i];
				var myAjax = new Ajax.Request(url, {
					evalJS: true,
					onComplete: muestraDatos
				});
				
			}
			//Se accede directamente al div del php
			else {				
				if (this.first == this.ids[i]) 
					this.mostrarCapa(this.ids[i]);
				else 
					this.ocultarCapa(this.ids[i]);
			}			
		}			
		
		//Crea la lista de las pestanyas
		var ol = $(id + '_tabs');	
		var listLi = "<ol class='"+classOl+"'>";		
		for (i=this.ids.length - 1; i>=0; i--) {		
			/*if (i == 0) {				
				if (this.first == this.ids[i]) {
					this.selected = i;
					listLi += "<li id='first' class='current'><a href='javascript:" + this.instancia + ".CambiaTab(" + i + ");'></a></li>";
				}
				else {
					listLi += "<li id='first'><a href='javascript:" + this.instancia + ".CambiaTab(" + i + ");'></a></li>";
				}
			}
			else {				*/
				if (this.first == this.ids[i]) {
					this.selected = i;
					listLi += "<li id=\"" + this.subkeys[i].toLowerCase() + "\" class=\"current\"><a id=\"enlace_" + this.subkeys[i].toLowerCase() + "\" href='javascript:" + this.instancia + ".CambiaTab(" + i + ");'>"+this.subkeys[i].toLowerCase()+"</a></li>";
				} else {
					listLi += "<li id=\"" + this.subkeys[i].toLowerCase() + "\"><a id=\"enlace_" + this.subkeys[i].toLowerCase() + "\" href='javascript:" + this.instancia + ".CambiaTab(" + i + ");'>"+this.subkeys[i].toLowerCase()+"</a></li>";
				}
			//}
		}
		listLi += "</ol>";
		ol.update(listLi);							
	},
	
	muestraDatos: function(t) {		
		for (var j=0;j<this.resultados.length; j++) {
			if (!this.resultados[j]) {									
				var scs = t.responseText.extractScript();
				$(this.ids[j]).update(t.responseText.stripScript());
				scs.evalScript();

				if (this.first == this.ids[j])
					this.mostrarCapa(this.ids[j]);
				else
					this.ocultarCapa(this.ids[j]);
					
				this.resultados[j] = true;
				break;
			}
		}				
	},
	
	CambiaTab: function (id) {
		if (this.selected != id) {
			var lis = $$("#"+this.idTabs+" ol li");
			lis[(this.ids.length - 1) - id].className = "current";
			lis[(this.ids.length - 1) - this.selected].className = "";
			//Cambia el contenido
			this.mostrarCapa(this.ids[id]);
			this.ocultarCapa(this.ids[this.selected]);
			this.selected = id;
		}
	},	    

	ocultarCapa: function (capa) {
		$$('div.'+capa).invoke('hide');
	},
	
	mostrarCapa: function (capa) {
		$$('div.'+capa).invoke('show');
	},

	creaId: function (elem) {
		var index = elem.charAt(0);
		index = index + (elem.substring(1)).toLowerCase();
		index = "buscador" + index;
		return index;
	}				      
});
