﻿var xml;
var result;
var grid;
var AddResult;
var codigo=-1;
var tree;
var vp;
var estado;
var primeraCarga;
var primeraCargaArbol;
var wMap;

Ext.onReady(function() {
            primeraCarga=true;
			primeraCargaArbol=true;
            Ext.QuickTips.init();
            codigo=lngDirectorioID;

            estado= new Ext.StatusBar({
                    id: 'my-status',
                    busyText: strProceso,
                    items: ['<a href=http://www.udalgeo.com target=_blank><img src=../../Imagenes/UdalGEO.png /></a>']
            });
            estado.showBusy();

            vp=new Ext.Viewport({
                layout: 'border',
                items: [{
                    region: 'north',
                    contentEl :'cabeceraDiv',
                    autoHeight: true,
                    border: false,
                    margins: '0 0 0 0'
                }, {
                    region: 'west',
                    collapsible: false,
                    title: "<img src='../../Imagenes/Archivos.gif' align=absmiddle /> " + strDocumentos,
                    width: 250,
                    autoScroll: true,
                    split: true,
                    shadow : true,
                    contentEl :'newTree'
                }, {
                    region: 'center',
                    contentEl :'contenido'

                }
                , {
                    region: 'south',
                    header:false,
                    contentEl:'pie',
                    bbar:estado
                    
                }
                ]
            });

            vp.addListener('afterlayout',windowResized);
        
             var Tree = Ext.tree;
                
                 tree = new Tree.TreePanel({
                    el:'newTree',
                    autoHeight : true,
                    border: false,
                    rootVisible: false,
                    useArrows: true,
                    loader: new Tree.TreeLoader({dataUrl:'loadnodes.aspx'})
                });

                // set the root node
                var root = new Tree.AsyncTreeNode({
                    text: 'Root',
                    draggable:false,
                    id:strObjMapaID
                });
                tree.setRootNode(root);
                tree.render();
                root.expand();

                tree.on("click",function(){        
                        tree.getNodeById(tree.getSelectionModel().getSelectedNode().id).expand();
                        codigo=tree.getSelectionModel().getSelectedNode().id;
                        obtenerGrid();
                        });
                tree.on("load",function(){
                        if (primeraCarga)
                            {							
                            tree.getNodeById(lngDirectorioID).expand();
                            primeraCarga=false;
                            }
                        });

              var tb = new Ext.Toolbar();
                tb.render('toolbar');
                    
                    tb.add('->',
                    {text:'<div style="height:14px;width:0px"></div>',tooltip: {text:strMapa},handler:abrirMapa,iconCls:'btnMap'
                    },
                    {text:'<div style="height:14px;width:5px"></div>',tooltip: {text:strIdioma},handler:cambioIdioma,iconCls:'btnLang'
                    }                    
                    );

function formatTamano(val)
{  
 if (val==null) return "";
    return Ext.util.Format.fileSize(val);
}
function formatFecha(val)
{
 if (val==null) return "";
    return Ext.util.Format.date(val,'d/m/Y');

}
   
AddResult= new Ext.data.Connection();
obtenerGrid();                    

grid = new Ext.grid.GridPanel({
    store: new Ext.data.JsonStore({
    fields:['id','nombre','tamano',{name: 'fecha', type: 'date'},'descripcion','ruta']
    }),
    columns: [
        {header: strNombre,  sortable: true, dataIndex: 'nombre',menuDisabled:true},
        {header: strTamano, width: 60, sortable: false, dataIndex: 'tamano', renderer:formatTamano,fixed:true,align:'center',menuDisabled:true},
        {header: strFecha, width: 80, sortable: true, dataIndex: 'fecha', renderer:formatFecha,fixed:true,align:'center',menuDisabled:true},
        {header: strDescripcion, sortable: true, dataIndex: 'descripcion',menuDisabled:true}
    ],
    viewConfig: {
        forceFit:true
    },
    sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
    width:document.getElementById('toolbar').offsetWidth,
    height:document.body.offsetHeight-202,   
    border:false,
    iconCls:'icon-grid',
    renderTo: 'grid'
});
grid.getView().refresh();  
grid.addListener('celldblclick',griddblClick);
grid.addListener('cellclick',gridClick);

grid.render();

grid.on("mouseover", function(e, t){

var row_index = grid.getView().findRowIndex(t);
var cell_index= grid.getView().findCellIndex(t);
if (row_index.toString()!='false') {

    if(grid.getView().getCell(row_index,cell_index)!=null)
        {
        var text;
        if (text=grid.getView().getCell(row_index,cell_index).textContent)
        {
            text=grid.getView().getCell(row_index,cell_index).textContent;
        }
        else
        {
            text=grid.getView().getCell(row_index,cell_index).innerText;
        }      
            if (text.replace(/\s+$/, "")!='')
            {
                Ext.QuickTips.register({
                text: text,
                trackMouse: true,
                target: e.target
                });
            }
        }
    }
});

Ext.get('loading').remove();
Ext.get('loading-mask').fadeOut({remove:true});

});

function obtenerGrid()
{
estado.showBusy();
AddResult.request({
                url: "ws/wsSistemaFicheros.asmx/getFolderContent",
                params: {lngDirectorioID:codigo,blnFiltrarIdioma:true},
                method: 'POST',
                scope: this,
            	callback: function(options, success, response){ 	
			    if (success){
			    	xml = response.responseXML;             
				    result= Ext.DomQuery.select('clsDirectorio',xml);
				    cargaGrid();
				    }}
				});
AddResult.request({
                url: "ws/wsSistemaFicheros.asmx/getFolderData",
                params: {lngDirectorioID:codigo},
                method: 'POST',
                scope: this,
            	callback: function(options, success, response){ 	
			    if (success){
			    	var xml2 = response.responseXML;
			    	var nombre=Ext.DomQuery.selectValue('clsDirectorio/Nombre',xml2);
			    	var descripcion=Ext.DomQuery.selectValue('clsDirectorio/Descripcion',xml2);
				    if(nombre==null)
				    {
				        nombre='';
				    }
				    document.getElementById('lblDirectorioNombre').innerHTML=nombre;
				    if(descripcion==null)
				    {
				        descripcion='';
				    }
				    document.getElementById('lblDirectorioDescripcion').innerHTML=descripcion;
				    }}
				});
}

function cargaGrid()
{
   grid.store.removeAll();
   var dirV =document.getElementById("directorioVacio");
   if(result.length==0)
   {
        grid.setHeight(24);
        dirV.style.display="block";
        dirV.style.visibility="visible";
   }
   else
   {
        grid.setHeight(document.body.offsetHeight-202);
        dirV.style.display="none";
        dirV.style.visibility="hidden";
   }
   for (i=0;i<result.length;i++)
   {
    var id =  Ext.DomQuery.selectValue('DirectorioID', result[i]);	
    var ruta =  Ext.DomQuery.selectValue('ruta', result[i]);	
    var nombre= Ext.DomQuery.selectValue('Nombre',result[i]);	
    var imagen = Ext.DomQuery.selectValue('Imagen',result[i]);	
    if (ruta!=null)
    {
        nombre = '<img src=' + imagen + ' align=absmiddle /> <a href=' + ruta + ' target=_blank>' + nombre + '</a>'
    }
    else
    {
        nombre = '<img src=' + imagen + ' align=absmiddle /> ' + nombre
    }    
    var tamano= Ext.DomQuery.selectValue('Tamano', result[i]);	
    var fecha= Ext.DomQuery.selectValue('Fecha', result[i]);	
	var descripcion= Ext.DomQuery.selectValue('Descripcion', result[i]);	

				 
    var recordData = new Ext.data.Record( {id:id,nombre:nombre,descripcion:descripcion,fecha:fecha,tamano:tamano,ruta:ruta});
   
    grid.store.add(recordData);
    }
    estado.clearStatus();
	if(result.length==1 && primeraCargaArbol)
	{			
		primeraCargaArbol=false;
		openFirstLevel();
	}
}

function griddblClick(grid, rowIndex, columnIndex, e)
{
        var record = grid.getStore().getAt(rowIndex);  // Get the Record
        var fieldName = grid.getColumnModel().getDataIndex(columnIndex); // Get field name
        var data = record.get('id');
        codigo=data;        
        var ruta=record.get('ruta');
        if(ruta==null)
        {
            obtenerGrid();
            tree.getNodeById(data).expand();
            tree.getNodeById(data).select();
        }     
};

function openFirstLevel()
{
        var record = grid.getStore().getAt(0);  // Get the Record
        var data = record.get('id');
        codigo=data;        
        var ruta=record.get('ruta');
        if(ruta==null)
        {
			setTimeout(expandFirstLevel,50);
			setTimeout(obtenerGrid,100);			
        }     
};
function expandFirstLevel()
{
		var record = grid.getStore().getAt(0);  // Get the Record
        var data = record.get('id');
        codigo=data;        
        var ruta=record.get('ruta');
        if(ruta==null)
        {
			tree.getNodeById(data).expand();
			tree.getNodeById(data).select();
        }     
}

function gridClick(grid, rowIndex, columnIndex, e)
{
        var record = grid.getStore().getAt(rowIndex);  // Get the Record
        var fieldName = grid.getColumnModel().getDataIndex(columnIndex); // Get field name
        var data = record.get('id');
        codigo=data;        
        var ruta=record.get('ruta');
        if(ruta==null)
        {
            
            tree.getNodeById(data).select();
        }     
};
function windowResized()
{
    grid.setWidth(document.getElementById('toolbar').offsetWidth);
    if(result.length==0)
    {
        grid.setHeight(24);
    }
    else
    {
        grid.setHeight(document.body.offsetHeight-202);
    }
    
}
function cambioIdioma()
{
    document.getElementById('btnIdioma').click();
}
function abrirMapa()
{		
	var url;
	var idioma=querySt("Idioma");
		
	url="../../map.asp?MPID=" + strEnlaceMapa;
	
	if (idioma==null)	
	{
		url+= "&Idioma=es";       
	   
	}
	else
	{
		url+= "&Idioma=" + querySt("Idioma");
	}
	
	wMap=window.open(url);
}
function inicioProceso()
{
    Ext.MessageBox.show({
        msg: strProceso,
        closable:false
    });
}
function finProceso()
{
    Ext.MessageBox.hide();
}

function querySt(find) {
    query = window.location.search.substring(1);
    ft = query.split("=");
    if (ft[0] == find) {
        return ft[1];
    }

}
