﻿// XML file explorer

var itext = "";
var margin = 0;
var items;
var dir;
var maxmargin = 45;
var contentid;
var treeid;
var rootkey = "documentos";
var path = "/";

function buildExplorer(url, treeid2, contentid2)
{
	treeid = treeid2;
	contentid = contentid2;
	makerequest2(url);	
}

function makerequest2(url){	
	var http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
	http_request = new XMLHttpRequest();
	if (http_request.overrideMimeType) {
	http_request.overrideMimeType('text/xml');
	}
	} else if (window.ActiveXObject) { // IE
	try {
	http_request = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	try {
	http_request = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (e) {}
	}
	}
	if (!http_request) {
	alert('Cannot create XMLHTTP instance');
	return false;
	}
	http_request.onreadystatechange = function() { 
	if (http_request.readyState == 4) {
	if (http_request.status == 200) {
	var items = [];
	var objNodeList = http_request.responseXML.getElementsByTagName("documentos");
	var xmlItem = objNodeList.item(0);	
	dir = {}
	items = resolveNode(xmlItem);			   
	document.getElementById(treeid).innerHTML = itext;
	var direccion = window.location.search;
	
	showFolder('/'+rootkey+'/',0);

	if(direccion.indexOf("file=")!=-1){
		direccion = unescape(direccion.substring(direccion.lastIndexOf("file=")+5,direccion.length));
		
		if(dir[direccion]["path"]==direccion){
			if(direccion.substring(direccion.length-1)=="/")
				showFolder(direccion,0)
			else
				showItem(direccion);
		}
			
	}			
	
	}		 		 }	  }
	http_request.open('GET', url, true);
	http_request.send(null);	  
}


function showItem(path)
{
		var src = dir[path]["link"]
		var nombre = dir[path]["titulo"]
		var descripcion = dir[path]["descripcion"]
		var inner='<div style="width:576px;height:20px;text-align:left;">'
		inner+='<div class="folderitem" style="position:absolute;background-image:url(../img/icon_fileopen.gif);padding-left: 35px"><span style="cursor:pointer;" onClick="showItem(\''+path+'\')">'+nombre+'</span></div>'

		inner+='</div><div style="width:576px;background-color:#1F1F1F;height:1px"></div><div style="width:576px;height:10px"></div>'
		inner+='<div class="itemdescription">'+descripcion+'</div>'
		var emailriddlerarray=[101,46,103,117,109,117,99,105,111,64,115,115,99,99,46,99,108]
		var encryptedemail_id96='' //variable to contain encrypted email 
		for (var i=0; i<emailriddlerarray.length; i++)
			encryptedemail_id96+=String.fromCharCode(emailriddlerarray[i])
		inner+='<div class="itemdescription">Si el enlace no funciona, por favor notif&iacute;calo a  <a class="content_link" href="mailto:'+encryptedemail_id96+'">'+encryptedemail_id96+'</a></div>'
		if(src=="")
			src="#"		
		inner+='<p><div style="width:576px;height:20px;text-align:left;"><div class="contentview">Contenido</div></div><div style="width:576px;background-color:#1F1F1F;height:1px"></div><div style="width:576px;height:10px"></div>'			
		inner+='<div class="fileitem" style="background-image:url(../img/icon_downloadmini.jpg);height:19px;padding-left:23px"><strong><a href="'+src+'" class="content_link">Ver/Descargar</a></strong></div>'	
		document.getElementById(contentid).innerHTML=inner	
}

function showFolder(root, page)
{

	var inner = '';
	inner+='<div style="width:576px;height:20px;text-align:left;">'			
	inner+='<div class="folderitem" style="position:absolute;background-image:url(../img/icon_folderopen.gif);padding-left: 35px">'
	inner+='<span style="cursor:pointer;" onClick="showFolder(\''+root+'\',0)">'+dir[root]["titulo"]+'</span></div>'			

	inner+='</div><div style="width:576px;background-color:#1F1F1F;height:1px"></div><div style="width:576px;height:10px"></div>'
	inner+='<div class="itemdescription">'
	
	if(dir[root]["imagen"]!="")
	{
		inner += '<div style=\'float: right;height:auto;width:390px\'><p>'+dir[root]["descripcion"]+'</div><div style=\'height:auto;\'>';
		inner += '<img src=\''+dir[root]["imagen"]+'\' style=\'border: 0pt none ;\' height=\'233\' width=\'150\'></div>';
	}
	else
	{
		inner += '<p>'+dir[root]["descripcion"]+'<p>';
	}
	
	inner+='</div>';	
	
	inner+='<div id="contentdiv"></div>'
	inner+='<p>&nbsp;</p>'
	
	inner += '<div style="width:576px;height:20px;text-align:left;">'
	inner += '<div class="contentview">Lista de archivos</div></div>'
	inner += '<div style="width:576px;background-color:#1F1F1F;height:1px"></div>'
	inner += '<div style="width:576px;height:10px"></div>'
	

	var nitems = 17;
	var totalitems = dir[root]["carpeta"].length + dir[root]["documento"].length;
	var pagecount = Math.floor(totalitems/nitems);
		if(pagecount<(totalitems/nitems))
			pagecount++
		var startindex = page*nitems		
		var endindex = startindex+nitems
		if(pagecount>1){
			inner+='<div style="width:576px;height:20px;text-align:left;"><div class="contentview">P&aacute;gina '
			inner+='<select onchange="showFileList(\''+root+'\',this.selectedIndex)">'
		var ultimo
		for(var i=0;i<pagecount;i++){
			ultimo=i+1
			if(page==i)
				inner += '<option selected="true">'+ultimo+'</option>'
			else
				inner += '<option>'+ultimo+'</option>'
			}

			inner+='</select> de '+ultimo+' '
		if(page>0)
			inner+='|<span style="cursor:pointer;" onClick="showFolder(\''+root+'\','+(page-1)+')"> &lt; anterior </span>'
		if(page<ultimo-1)
			inner+='|<span style="cursor:pointer;" onClick="showFolder(\''+root+'\','+(page+1)+')"> siguiente &gt; </span>'
		inner+='</div></div><div style="width:576px;height:10px"></div>'
			}
		inner+='<div id="thumbsc" style="width:576px;height:320px;">'		
		inner+='</div>'
		document.getElementById(contentid).innerHTML = inner	
	
		var side = "thumbsc"
		
		if(startindex==totalitems||startindex==endindex)
			document.getElementById(side).innerHTML = '<div class="fileitem" style="background-image:none;padding-left:0px;">No hay archivos disponibles</div>'
		else{
			var inner2=''
			for(var i=startindex;i<dir[root]["carpeta"].length&&i<endindex;i++){
				inner2+='<nobr><div class="fileitem" style="padding-left: 0px;background-image:url(../img/icon_folder.gif);"><span style="cursor:pointer;" onClick="showFolder(\''+dir[root]["carpeta"][i]["path"]+'\',0)"><img src="../img/bg_transparent.gif" height="12" width="17"/>'+dir[root]["carpeta"][i]["titulo"]+'</span></div></nobr>'
				}
				
			for(var i=startindex;i<dir[root]["documento"].length&&i<endindex;i++){
				var nombre = dir[root]["documento"][i]["titulo"];
				var linksrc = dir[root]["documento"][i]["path"];
				inner2+='<nobr><div class="fileitem" style="padding-left: 0px;overflow:hidden;width:525px"><span style="cursor:pointer;" onClick="showItem(\''+linksrc+'\')"><img src="../img/bg_transparent.gif" height="12" width="17"/>'+nombre+'</span></div></nobr>'
				}			
				
				document.getElementById(side).innerHTML = inner2;
			}
		
	

}

function resolveNode(xmlItem)
{
	var f = {};
	
	f["imagen"] = "";
	f["titulo"] = "";
	
	var i = 0;
	var h = 0;
	
	var isfolder = (xmlItem.nodeName == "carpeta")||(xmlItem.nodeName == "documentos");
	
	if(isfolder)
	{
		f["path"] = "/";
		f["descripcion"] = "No hay descripci&oacute;n disponible para esta carpeta.";
	}
	else
	{
		f["link"] = "";
		f["descripcion"] = "No hay descripci&oacute;n disponible para este documento.";
	}
		
	f["documento"] = new Array();
	f["carpeta"] = new Array();
	
	for (var j = 0; j < xmlItem.childNodes.length; ++j)
	{
		var child = xmlItem.childNodes.item(j);
		
		if (child.nodeName=="descripcion" || child.nodeName=="titulo" || child.nodeName=="imagen" || child.nodeName=="link")
		{
			f[child.nodeName] = child.firstChild.nodeValue;
		}		
	}
	
	if(isfolder)
	{
		var containerid = "fileview";
		var foldername = f["titulo"];
		f["path"] = clean(path + foldername.toLowerCase() + "/");
		var root = f["path"];
		path = root;
		dir[root] = f;
		
		if(margin<maxmargin)
			itext += '<div id="'+root+'" class="folderitem" style="width:'+(200-margin)+'px;background-image:url(../img/icon_folderclosed.gif);margin-left:'+margin+'px;overflow:hidden;"><nobr><span style="cursor:pointer;" onClick="showFolder(\''+root+'\',0)"><img src="../img/bg_transparent.gif" height="12" width="31"/>'+foldername+'</span></nobr></div>';
		margin += 15;
	}
	else if(!isfolder)
	{
		var endlink = f["link"].lastIndexOf("/")+1;
		var filename = f["link"].substring(endlink);
		f["path"] = clean(path + filename.toLowerCase());
		var root = f["path"];
		dir[root] = f;
	}
	
	for (var j = 0; j < xmlItem.childNodes.length; ++j)
	{
		var child = xmlItem.childNodes.item(j);
		
		if (child.nodeName=="documento")
		{
			f["documento"][h] = resolveNode(child);
			h++;
		}		
		else if(child.nodeName=="carpeta")
		{
			f["carpeta"][i] = resolveNode(child);
			i++;
		} 
	}

	if(isfolder)
	{
		path = path.replace(clean(f["titulo"].toLowerCase() + "/"), "")
		margin -= 15;
	}
	
	return f;
}

function clean(str){

str=str.replace(/á/g,"a");
str=str.replace(/é/g,"e");
str=str.replace(/í/g,"i");
str=str.replace(/ó/g,"o");
str=str.replace(/ú/g,"u");

return str;

}
