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;

				alert(str);

				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);

				var scriptMag = document.createElement('script');

				scriptMag.type = "text/javascript";

				scriptMag.text = "$('.magnify').fsmagnify({ magText: 'Click aqui para ver completo', clsText: 'Click aqui para cerrar la vista completa'});";	

				obj.appendChild(scriptMag);

			}else{

				obj.innerHTML = ".";	

			}

		};

		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");

				var opermisos = self.getPermisos(nodo);

				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 strClick = "";

					if(opermisos.detalles){

						strClick = " style='cursor:pointer;' onclick=\"entidad.edit('"+nodoID+"');\" ";

					}

					var img = "<img class='magnify' src='"+imagen+"' width='200' "+strClick+" />";

					

					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.loadContentData = function(idn,fname){

			var peticion = new Fujar.MyServer();

			peticion.url = self.urlHandler;

			peticion.vars += "pg=cbyentidad";

			peticion.vars += "&id=" + idn;

			peticion.vars += "&frontend="+self.isfrontend;

			self.currentID = idn;

			peticion.onFinish = function(){

				var s;

				s = peticion.response;

				$.blockUI({ 

				message: $("#content_msg_dialog"),

				css: { top: '5%',left:'20%',width:750 }

			 });



				document.getElementById("content_msg_dialog_info").innerHTML = s;



			}

			peticion._get();

		};

		

		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;

				self.onGetElementFinished(node,idn);

				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">';

				if(opermisos.detalles){

					htm += '<li><a href=\"javascript:Fujar.Entidad.instance[\''+self.indice+'\'].edit(\''+id+'\');\"><img src="../img/page_white_add.png" border="0"/> Detalles</a></li>';

				}

				

				if(opermisos.info){

					htm += '<li><a href=\"javascript:Fujar.Entidad.instance[\''+self.indice+'\'].loadContentData(\''+id+'\');\"><img src="../img/page_white_add.png" border="0"/> Mas info.</a></li>';

				}

				

				if(opermisos.agregacesta){

					htm += '<li class="btn_addprod"><a href="#" onclick=\"Cart._add(\''+id+'\',function(str){PrintHTMLCart(str)},this);return false;\" ><img src="../img/add_icon.png" border="0"> Agregar a pedido</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 codigo =  n.getAttribute("codigo");

                                var tcantidad = n.getAttribute("tcantidad"); 

				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 class="trprecio">';

						htm += '      <td><span>Precio: $'+precio+' por '+tcantidad+' <br/>C&oacute;digo: '+codigo+' </span></td>';

						htm += '    </tr>';

					}

				}

				htm += '    <tr>';

				htm += '      <td >'+col1+'</td>';

				htm += '    </tr>';

				htm += '  </table>';

				

				//Segunda Columna

				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;

			},

			tpl_2col : function(title,col1,col2,id){

				var htm = "";

				var n = self.xnodes[id];

				var opermisos = self.getPermisos(n);

				var precio = n.getAttribute("precio");

                                var codigo =  n.getAttribute("codigo");

                                var tcantidad = n.getAttribute("tcantidad"); 

				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>';



				htm += '    <tr>';

				htm += '      <td width="5%" class="imagenItem"  valign="top">'+col1+'</td>';

				htm += '      <td width="95%" valign="top"><div class="tpl_title">'+title+'</div>';

				if(opermisos.precio){

					if(precio!="" && precio != "0"){

						htm += '    <div class="trprecio">';

						htm += '      <span >Precio: $'+precio+' por  '+tcantidad+'<br/>C&oacute;digo: '+codigo+' </span>';

						htm += '    </div>';

					}

				}								

				htm += 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;

			}	

		}

	}

}
