Fujar.Entidad = {
	instance : [],
	//prefix : "admin_tree",
	_entidad : function(){
		me =  this;
		var indice = me.instance.length;
		if(!me.instance[indice]){
			me.instance[indice] = new me.c(me,indice);
		}
		return me.instance[indice];
	},
	// @pobj objeto padre
	// @ci indice de instancia
	// @fname funcion que se ejecuta al cargar el XML
	c : function(pobj,ci,fname){
		var self =  this;
		self._parent = pobj;
		self.allowEdit = true,
		self.uid = "";
		self.xf  = Fujar.Utils._xml;
		self.indice = ci;
		self.urlHandler = "handler.php";
		self.xml = null;
		self.xnodes = [];
		self.currentvars = "";
		self.pagina = 1;
		self.numpages = 1;
		self.nmaximo = 11;
		self.currentID = null;
		self.xpagina = 0;
		self.nresultados = 0;
		self.criterio = "";
		self.isfrontend = "0";
		self.onGetElementFinished = function(xml,idn){};
		self.onDelete = function(str){};
		self.mainID = "arbol_entidades_div";
		self.pagingID = "entidad_admin_paging";
		self._do = function(vars,fname){
			var peticion = new Fujar.MyServer();
			peticion.url = self.urlHandler;
			var pvars = "";
			pvars += "pg=entidad_accion";
			for (var att in vars){
				pvars += "&" + att + "=" + escape(vars[att]);
			}
			peticion.vars = pvars;
			peticion.onFinish = function(){
				var str = peticion.response;
				if(fname)fname(str);
			}
			peticion._post();
		}
		// @url Pagina para handler
		// @vars Variables para peticion
		self._load = function(url,vars,fname){
			self.currentvars = vars;
			vars += "&pagina="+self.pagina;
			vars += "&criterio="+encodeURIComponent(self.criterio);
			var _xml = new Fujar.MyServer();
			_xml.url = url;
			_xml.vars = vars;
			_xml.onFinish = function(){
				var node,rootNode;
				node = _xml.responseXML;	
				if(node.childNodes[0].nodeType == 7) {
					rootNode = node.childNodes[1];
				}else{
					rootNode = node.childNodes[0];
				}
				self.xml = rootNode;
				self._parse();
				if(fname){ fname(self.xml);}
			}
			_xml._get(); 
		};
		self._parse = function(){
			var obj = document.getElementById(self.mainID);
			if(self.xml.getAttribute("allowed")=="0"){
				obj.innerHTML = "Acceso Denegado";
				return;
			}
			var config = self.xml.getElementsByTagName("configuracion")[0];
			var tpaginas = Number(self.xf._subnodevalue(config,"total"));
			var nresultados = Number(self.xf._subnodevalue(config,"num"));
			self.xpagina = Number(self.xf._subnodevalue(config,"xpagina"));
			self.nresultados = nresultados;
			self.setpaging(nresultados);
			var items = self.xml.getElementsByTagName("item");
			
			obj.innerHTML = "";
			if(items.length > 0){
				var capa = self._html(items);
				obj.appendChild(capa);
			}else{
				obj.innerHTML = "No se encontraron elementos";	
			}
		};
		self._html = function(items,clase){
			if(!clase)var clase = "";
			var capa = document.createElement("div");
			capa.className = clase;
			var htm = '';
			htm += "<div class='separador'>ELEMENTOS</div>";
			self.template.nitem = 0;
			for(var i=0;i<items.length;i++){
				var nodo = items[i];
				var nombre = arbol.xf._subnodevalue(nodo,"nombre");
				var resumen = arbol.xf._subnodevalue(nodo,"resumen");
				var aruta = arbol.xf._subnodevalue(nodo,"ruta");
				var nodoID = nodo.getAttribute("entidadID");
				var imagen = nodo.getAttribute("imagen");
				var precio = nodo.getAttribute("precio");
				var galerias = nodo.getElementsByTagName("galeria");
				var archivos = nodo.getElementsByTagName("archivo");
				
				self.xnodes[nodoID] = nodo;
				aruta = aruta.split(",").join("&gt;");
				var coltxt = resumen + "<div class='ruta'>" + aruta + "</a></div><br/>";
				if(archivos.length > 0){
					coltxt += "<a class='smenu' href='#' onclick=\"Fujar.Entidad.instance['"+self.indice+"'].dmenu(this,'simple_menu','"+nodoID+"','archivo');return false;\">Archivos</a> &nbsp;";
				}
				if(galerias.length > 0){
					coltxt += "<a class='smenu' href='#' onclick=\"Fujar.Entidad.instance['"+self.indice+"'].dmenu(this,'simple_menu','"+nodoID+"','galeria');return false;\">Galerias</a> &nbsp;";
				}
				if(imagen != ""){
					var img = "<img src='"+imagen+"' width='200'>";
					
					htm += self.template.tpl_2col(nombre,img,coltxt,nodoID);	
				}else{
					htm += self.template.tpl_simple(nombre,coltxt,nodoID);
				}
				self.template.nitem++;
			}
			capa.innerHTML = htm;
			return capa;
			
		};
		self.dmenu = function(obj,menuID,entidadID,tipo){
			var nodo = self.xnodes[entidadID];
			var lista = nodo.getElementsByTagName(tipo);
			var menu = document.getElementById(menuID);
			menu.innerHTML = "";
			for(var i =0;i<lista.length;i++){
				var nodoLista = lista[i];
				var nombre = Fujar.Utils._xml._subnodevalue(nodoLista,"nombre");
				var resumen = Fujar.Utils._xml._subnodevalue(nodoLista,"resumen");
				var li =  self._dmenu_htm(nodoLista,entidadID);
				menu.appendChild(li);
			}
			menuSimple._do(obj,menuID);
		}
		self._dmenu_htm = function(nodoLista,entidadID){
			var nombre = Fujar.Utils._xml._subnodevalue(nodoLista,"nombre");
			var resumen = Fujar.Utils._xml._subnodevalue(nodoLista,"resumen");
			var li =  document.createElement("li");
			var a =  document.createElement("a");
			a.href = "#";
			a.title = resumen;
			a.className = "sub_menu_css_li";
			a.onclick = function(){
				self.currentID = entidadID;
				var galeriaID = nodoLista.getAttribute("Id");
				self._printGallery(galeriaID,nodoLista);
				return false;
			}
			a.innerHTML = nombre;
			li.appendChild(a);
			return li;
		}
		self._printGallery = function(galeriaID,nodo){
			var peticion = new Fujar.MyServer();
			peticion.url = self.urlHandler;
			peticion.vars = "pg=galeria_xmltext&galeriaID=" + galeriaID;
			peticion.onFinish = function(){
				var xml = peticion.responseXML;
				var tipo = nodo.getAttribute("tipo");
				if(tipo == "images"){
					self.PictureType(xml,nodo);
				}else{
					self.FileType(xml,nodo);
				}
			}
			peticion._get();
		};
		self.FileType = function(xml,galeria){
			var nombre = Fujar.Utils._xml._subnodevalue(galeria,"nombre");
			var resumen = Fujar.Utils._xml._subnodevalue(galeria,"resumen");
			var pictures = xml.getElementsByTagName("picture");
			var entidad = self.xnodes[self.currentID];
			var entidadNombre = arbol.xf._subnodevalue(entidad,"nombre");
			var entidadResumen = arbol.xf._subnodevalue(entidad,"resumen");
			var htm = "";
			htm += "<h3><a href=\"javascript:entidad.edit('"+self.currentID+"')\">"+entidadNombre+"</a></h3>";
			htm += "<div class='resumen_entidad_galeria'>"+entidadResumen+"</div>";
			htm += "<div><a class='smenu' href='#' onclick=\"Fujar.Entidad.instance['"+self.indice+"'].dmenu(this,'simple_menu','"+self.currentID+"','archivo');return false;\">Archivos</a>";

			htm += "</div>";

			htm += "<div class='entidad_related_files'>";
			for(var i =0;i<pictures.length;i++){
				var img = pictures[i];	
				var n = i+1;
				var path = Fujar.Utils._xml._subnodevalue(img,"path");
				var title = Fujar.Utils._xml._subnodevalue(img,"title");
				var description = Fujar.Utils._xml._subnodevalue(img,"description");
				htm += "<div class='entidad_related_files_sub'>";
				htm += "<a href='"+path+"' target='_blank'>"+title+"</a>";
				htm += "<div>"+description+"</div>";
				htm += "</div>";
			}
			htm += "</div>";
			var obj1 = document.getElementById("arbol_entidades_container");
			var obj2 = document.getElementById("arbol_entidad_description");
			obj2.style.display = "block";
			obj1.style.display = "none";
			obj2.innerHTML = htm;
		}
		self.PictureType = function(xml,galeria){
			var nombre = Fujar.Utils._xml._subnodevalue(galeria,"nombre");
			var resumen = Fujar.Utils._xml._subnodevalue(galeria,"resumen");
			var pictures = xml.getElementsByTagName("picture");
			var entidad = self.xnodes[self.currentID];
			var entidadNombre = arbol.xf._subnodevalue(entidad,"nombre");
			var entidadResumen = arbol.xf._subnodevalue(entidad,"resumen");
			var htm = "";
			htm += "<h3><a href=\"javascript:entidad.edit('"+self.currentID+"')\">"+entidadNombre+"</a></h3>";
			htm += "<div class='resumen_entidad_galeria'>"+entidadResumen+"</div>";
			htm += "<div><a class='smenu' href='#' onclick=\"Fujar.Entidad.instance['"+self.indice+"'].dmenu(this,'simple_menu','"+self.currentID+"','galeria');return false;\">Galerias</a> </div>";
			htm += '<div id="dhtmlgoodies_slideshow">';
			htm += '<div id="previewPane">';
			htm += '';	
			htm += '<span id="waitMessage">Cargando Imagen</span>'
			htm += '<div id="largeImageCaption"><div class="gallery_title">'+nombre+'</div><div class="gallery_desc">'+resumen+'</div></div>';
			htm += '</div>';
			htm += '<div id="galleryContainer">';
			htm += '<div id="arrow_up"><img src="images/arrow-up.gif" id="arrow_up_image"></div>'
		
			htm += '<div id="theImages">';
			htm += '<div>';
		
			for(var i =0;i<pictures.length;i++){
				var img = pictures[i];	
				var n = i+1;
				var path = Fujar.Utils._xml._subnodevalue(img,"path");
				var title = Fujar.Utils._xml._subnodevalue(img,"title");
				var description = Fujar.Utils._xml._subnodevalue(img,"description");
				htm += "<a href='#' onclick=\"showPreview('"+path+"','"+n+"');return false\"><img src='"+path+"' width='120' /></a>";
				htm += "<div class=\"imageCaption\"><div class='gallery_title'>"+title+"</div><div class='gallery_desc'>"+description+"</div></div>";
			}
			htm += '<div id="slideEnd"></div>';
			htm += '</div>';
		
			htm += '</div>';
			htm += '<div id="arrow_down"><img src="images/arrow-down.gif" id="arrow_down_image"></div>';
			htm += '</div>';
			htm += '</div>';
			var obj1 = document.getElementById("arbol_entidades_container");
			var obj2 = document.getElementById("arbol_entidad_description");
			obj2.style.display = "block";
			obj1.style.display = "none";
			obj2.innerHTML = htm;
			previewImage = false;
			initGalleryScript();
		};
		self._search = function(criterio,fname){
			self.pagina = 1;
			self.criterio = criterio;
			self._load(self.urlHandler,self.currentvars,function(xml){
				if(fname)fname();						 
			});
		};
		self.p = function(pindex){
			if(self.nresultados == 0)return;
			var pnum = Math.ceil(self.nresultados/self.xpagina);
			if(pindex < 1)pindex = 1;
			else if(pindex > pnum)pindex = pnum;
			self.pagina = pindex;
			self._load(self.urlHandler,self.currentvars);
    	}
		self.setpaging = function(pnum){
			var divpage = document.getElementById(self.pagingID);
			if(pnum == 0){
				divpage.innerHTML = "";
				return;
			}
			pnum = Math.ceil(pnum/self.xpagina);
			var mitad = Math.ceil(self.nmaximo / 2);
			var htm ="";
			htm += "<div class='pagenavi' style='clear: both;'>"
			htm += "<span class='pages'>Page " + self.pagina + " of " + pnum + "</span>";
			htm += '<a href="#" title="&laquo; Primera" onclick="Fujar.Entidad.instance[\''+self.indice+'\'].p(1);return false;">&laquo; Primera</a>';
			var ultima = 1;
			if(self.pagina < mitad){
				ultima = (pnum < self.nmaximo)?pnum:self.nmaximo;
				for(var i = 1;i <= ultima;i++){
					var clase = "class='normal'";
					if(self.pagina == i)clase ='class="current"';
					htm += '<a href="#" onclick="Fujar.Entidad.instance[\''+self.indice+'\'].p('+i+');return false;" title="'+i+'"><span '+clase+'>'+i+'</span></a>';
				}
			}else{
				var inicio = (self.pagina - (mitad))+1;
				var nfinal = (self.pagina + (mitad))-1;
				for(var i = inicio;i <= self.pagina-1;i++){
					htm += '<a href="#" onclick="Fujar.Entidad.instance[\''+self.indice+'\'].p('+i+');return false;" title="'+i+'">'+i+'</a>';
				}
				for(var i = self.pagina;i <= nfinal;i++){
					var clase = "class='normal'";
					if(self.pagina == i)clase ='class="current"';
					if(i > pnum)break;
					htm += '<a href="#" title="'+i+'" onclick="Fujar.Entidad.instance[\''+self.indice+'\'].p('+i+');return false;" ><span '+clase+'>'+i+'</span></a>';
				}
			}
			htm += '<a href="#" title="&Uacute;ltima &raquo;" onclick="Fujar.Entidad.instance[\''+self.indice+'\'].p('+pnum+');return false;">&Uacute;ltima &raquo;</a>';
			htm += "</div>";
			divpage.innerHTML = htm;
			
		   
		}
		self.edit = function(idn,fname){
			var peticion = new Fujar.MyServer();
			peticion.url = self.urlHandler;
			peticion.vars += "pg=entidadbyid";
			peticion.vars += "&id=" + idn;
			peticion.vars += "&frontend="+self.isfrontend;
			self.currentID = idn;
			peticion.onFinish = function(){
				var node;
				node = peticion.responseXML;
				try{self.onGetElementFinished(node,idn);}catch(ex){}
				if(fname)fname(node,idn);
				
			}
			peticion._get();
		};
		self._delete = function(idn){
			var peticion = new Fujar.MyServer();
			peticion.url = self.urlHandler;
			peticion.vars += "pg=removeentidad";
			peticion.vars += "&id=" + idn;
			peticion.onFinish = function(){
				var str = peticion.response;
				self.onDelete(str);
			}
			peticion._get();
		};
		self.getPermisos = function(n){
			var permisos = Fujar.Utils._xml._subnodevalue(n,"permisos");
			var separa = permisos.split(",");
			var json = {};
			for(var i=0;i<separa.length;i++){
				json[separa[i]] = true;
			}
			return json;
		};
		self.template = {
			nitem : 0,
			star : function(id){
				var htm = "";
				var n = self.xnodes[id];
				var score = Fujar.Utils._xml._subnodevalue(n,"rating");
				if(score=="")score = 0;
				score = Math.round(score);
				var clases = ["nostar","onestar","twostar","threestar","fourstar","fivestar"];
				
				htm += '<div>&nbsp; Calificaci&oacute;n</div>';
				htm += '<ul class="rating '+clases[score]+'">';
				htm += '<li ><a href="#" onclick="return false;" title="1">1</a></li>';
				htm += '<li ><a href="#" onclick="return false;" title="2">2</a></li>';
				htm += '<li ><a href="#" onclick="return false;" title="3">3</a></li>';
				htm += '<li ><a href="#" onclick="return false;" title="4">4</a></li>';
				htm += '<li ><a href="#" onclick="return false;" title="5">5</a></li>';
				htm += '<li ><a href="#" onclick="return false;" title="5">5</a></li>';
				htm += '</ul>';
				
				return htm;
			},
			mbottom : function(id){
				var htm = "";
				var n = self.xnodes[id];
				var opermisos = self.getPermisos(n);
				htm += '<ul class="botonera">';
				htm += '<li><a href=\"javascript:Fujar.Entidad.instance[\''+self.indice+'\'].edit(\''+id+'\',function(){IluminarSeleccionado(\''+id+'\',true)});\"><img src="../img/page_white_add.png" border="0"/> Detalles</a></li>';
				
				if(opermisos.agregacesta){
					htm += '<li><a href=\"javascript:Cart._add(\''+id+'\',function(str){PrintHTMLCart(str)});\" ><img src="../img/add_pr.png" border="0"> Solicitar</a><li>';
				}
				if(opermisos.recomienda){
					htm += '<li><a href="#" onclick="oMail._click(this,\''+id+'\');return false;"><img src="../img/email.png" border="0" style="cursor:pointer" />Recomendar</a></li>';
				}
				if(opermisos.helpdesk){
					htm += '<li><a href="#" onclick="window.open(\'/c2c\',\'mywindow\',\'width=350,height=300,toolbar=no,status=no,menubar=no,scrollbars=no, resizable=no\');return false;" alt="Clic2Call"><img border="0" src="../img/c2c.png" style="cursor:pointer" />Clic2Call</a></li>';
				}
				if(opermisos.calificacion){
					htm += '<li>'+this.star(id)+'</li>';
				}
				htm += '</ul>';
				return htm;
			},
			tpl_simple : function(title,col1,id){
				var n = self.xnodes[id];
				var opermisos = self.getPermisos(n);
				var precio = n.getAttribute("precio");
				var htm = "";
				htm += '<div class="tpl_image">';
				//Tabla contenedora
				htm += '<table width="100%" border="0" cellpadding="3" cellspacing="3"><tr><td class="col1">';
				//Columna Una
				htm += '  <table width="100%" border="0" cellpadding="3" cellspacing="3" >';
				htm += '    <tr>';
				htm += '      <td><span class="tpl_title">'+title+' </span></td>';
				htm += '    </tr>';
				if(opermisos.precio){
					if(precio!="" && precio != "0"){
						htm += '    <tr>';
						htm += '      <td><span>Precio: $'+precio+' </span></td>';
						htm += '    </tr>';
					}
				}
				htm += '    <tr>';
				htm += '      <td >'+col1+'</td>';
				htm += '    </tr>';
				htm += '  </table>';
				
				//Segunda Columna
				htm += '</td><td>';
				if(self.allowEdit){
					htm += '    <ul>';
					htm += '      	<li><a href=\"javascript:ReorderEntidad(\''+id+'\',\'up\')\" >[Mover arriba]</a></li>';
					htm += '      	<li><a href=\"javascript:ReorderEntidad(\''+id+'\',\'down\')\" >[Mover abajo]</a></li>';
					htm += '      	<li><a href=\"javascript:Fujar.Entidad.instance[\''+self.indice+'\'].edit(\''+id+'\');\" >[editar]</a></li>';
					htm += '      	<li><a href=\"javascript:Fujar.Entidad.instance[\''+self.indice+'\']._delete(\''+id+'\');\" >[eliminar]</a></li>';
					htm += '      	<li><a href=\"javascript:GetPermisos(\''+id+'\')" >[Permisos]</a></li>';
					htm += '      	<li><a href=\"javascript:ogaleria._open(\''+id+'\');\" >[Archivos]</a></li>';
					htm += '      	<li><a href=\"javascript:GetAtributos(\''+id+'\');\" >[Atributos]</a></li>';					
					htm += '    </ul>';
				}
				else{
					htm += this.mbottom(id);
				}

				htm += '</td></tr></table>';
				htm += '</div>';
				return htm;
			},
			tpl_2col : function(title,col1,col2,id){
				var htm = "";
				var n = self.xnodes[id];
				var opermisos = self.getPermisos(n);
				var precio = n.getAttribute("precio");
				htm += '  <div class="tpl_image">';
				htm += '<table width="100%" border="0" cellpadding="3" cellspacing="3"><tr><td class="col1">';
				htm += '  <table width="100%" border="0" cellpadding="3" cellspacing="3" >';
				htm += '    <tr>';
				htm += '      <td width="100%" colspan=2><span class="tpl_title">'+title+' </span></td>';
				htm += '    </tr>';
				if(opermisos.precio){
					if(precio!="" && precio != "0"){
						htm += '    <tr>';
						htm += '      <td><span >Precio: $'+precio+' </span></td>';
						htm += '    </tr>';
					}
				}
				htm += '    <tr>';
				htm += '      <td width="5%" valign="top">'+col1+'</td>';
				htm += '      <td width="95%" valign="top">'+col2+'</td>';
				htm += '    </tr>';
				htm += '  </table>';
				htm += '</td><td class="col2">';
				if(self.allowEdit){
					htm += '    <ul>';
					htm += '      	<li><a href=\"javascript:ReorderEntidad(\''+id+'\',\'up\')\" >[Mover arriba]</a></li>';
					htm += '      	<li><a href=\"javascript:ReorderEntidad(\''+id+'\',\'down\')\" >[Mover abajo]</a></li>';
					htm += '      	<li><a href=\"javascript:Fujar.Entidad.instance[\''+self.indice+'\'].edit(\''+id+'\');\" >[editar]</a></li>';
					htm += '      	<li><a href=\"javascript:Fujar.Entidad.instance[\''+self.indice+'\']._delete(\''+id+'\');\" >[eliminar]</a></li>';
					htm += '      	<li><a href=\"javascript:GetPermisos(\''+id+'\')" >[Permisos]</a></li>';
					htm += '      	<li><a href=\"javascript:ogaleria._open(\''+id+'\');\" >[Archivos]</a></li>';
					htm += '      	<li><a href=\"javascript:GetAtributos(\''+id+'\');\" >[Atributos]</a></li>';					
					htm += '    </ul>';
				}
				else{
					htm += this.mbottom(id);
				}
				htm += '</td></tr></table>';
				htm += '</div>';
				return htm;
			}	
		}
	}
}