/*********************************************************
* Cargador de XMLs según código proporcionado en W3CHOOL
*
* Realizado por: Pablo Hernández
* Creado: 05 - Sept - 2007
*
**********************************************************/
/**
* Función para cargar un XML, sirve tanto para archivos como para textos
* es cross-browser, así que debe funcionar en todos lados
* @param texto El texto o la ruta que se desea cargar
* @param tipo El tipo de elemento que se desea cargar. true: se carga un archivo, false: se carga un texto
*
* @returns Retorna un objeto XML
**/
function cargarXML(texto, tipo)
{
var xmlDoc;
//Comprobar que se desea cargar
if(tipo)
{
// code for IE
if (window.ActiveXObject)
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
xmlDoc=document.implementation.createDocument("","",null);
}
else
{
alert('Su navegador no soporta carga de archivos XML, no es posible ejecutar el programa');
xmlDoc = null;
}
xmlDoc.async=false;
xmlDoc.load(texto);
} else {
// code for IE
if (window.ActiveXObject)
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(texto);
}
// code for Mozilla, Firefox, Opera, etc.
else
{
var parser=new DOMParser();
xmlDoc=parser.parseFromString(texto,"text/xml");
//Comprobar el resultado de la carga, si hay error devolver un objeto nulo
if(xmlDoc.documentElement.nodeName=='parsererror')
xmlDoc = null;
}
}
return(xmlDoc);
} var paneSplitter; //Contenedor de toda la aplicación
var menuBar; //Menú de la aplicación
var calendario; //Calendario para escoger las fechas
var feed; //Cadena de texto que contiene la información para el newFeed
var acercaWin; //Ventana modal de "Acerca de..."
var velocidadMarquesina = 5;
var modalWin; //Ventana modal
var windowModelDirectorio; //Modelo de la ventana de directorio
var winDirectorio; //ventana de directorio
var windowModelCalEmpl; //Modelo de la ventana del calendario
var winCalEmpl; //ventana del calendario
var geo_Calculadora; //Calculadora sencilla
/**
* Pone la fecha obtenida en la caja de texto que se creo como referencia en la función elegir Fecha
*
* @param inputArray contiene los datos de la fecha retornados por elegirFecha
*/
function abrirCalculadora()
{
geo_Calculadora = new geoCal();
}
/**
* Abre una nueva pestaña en la posición dada
*
* @param position Panel en el que se abrirá el contenido (north, south, east, west, center)
* @param id Id de la pestaña a crear
* @param contentUrl Dirección del contenido a cargar
* @param title Título del contenido
* @param tabTitle Título de la pestaña
* @param closable Indica si la pestaña puede ser cerrada
* @param showRefresh Indica si se debe o no mostrar el boton de Actualizar
* @param onCompleteJsCode El código que se ejecutará una vez cargada la pestaña
**/
function abrirPagina(position,id,contentUrl,title,tabTitle,closable, showRefresh, onCompleteJsCode)
{
var inputArray = new Array();
inputArray['id'] = id;
inputArray['position'] = position;
inputArray['contentUrl'] = contentUrl;
inputArray['title'] = title;
inputArray['tabTitle'] = tabTitle;
inputArray['closable'] = closable;
inputArray['displayRefreshButton'] = showRefresh;
if(document.getElementById(id))
{
paneSplitter.loadContent(id,contentUrl,0,onCompleteJsCode);
paneSplitter.showContent(id);
}
else
{
if(!paneSplitter.addContent(position, new DHTMLSuite.paneSplitterContentModel( inputArray ),onCompleteJsCode ));
paneSplitter.showContent(id);
}
}
/**
* Mostrar la información de Geosys
*/
function acerca()
{
acercaWin = new DHTMLSuite.modalMessage( {isModal:false} );
acercaWin.setShadowOffset(5); // Large shadow
acercaWin.setSize(300,250);
var contenido = "
Geosys2
Ver: 0.15
Licenciado a:
Geosuelos Cía. Ltda.
Desarollado por:
Departamento de Sistemas
Geosuelos Cia. Ltda.
";
contenido += "Cerrar";
acercaWin.setHtmlContent(contenido);
acercaWin.display();
}
/**
* Cambiar el título de un contenido dado
*
* @param codigo el código del contenido
* @param titulo el título que se pondrá tanto en el tab como en el título
*/
function cambiarTitulo(codigo, titulo)
{
paneSplitter.setContentTabTitle(codigo,titulo); //Cambiar el título del Tab
paneSplitter.setContentTitle(codigo,titulo); //Cambiar el título
paneSplitter.showContent(codigo); //Mostrar el contenido
}
/**
* Cargar las actividades del usuario
*/
function cargarActividades() {
//Comprueba si ya está cargado el archivo, de no ser así crear el panel para ello
if(!paneSplitter.isUrlLoadedInPane('paneActividades','http://186.4.180.43/geosys2/modules/general/verActividadesDI.php'))
{
var paneActividades = new DHTMLSuite.paneSplitterContentModel( { id: 'paneActividades', title: 'Actividades Pendientes', tabTitle: 'Inicio', closable: false, displayRefreshButton: true, contentUrl: 'http://186.4.180.43/geosys2/modules/general/verActividadesDI.php', refreshAfterSeconds: 300 } );
paneSplitter.addContent('west',paneActividades);
}
}
/**
* Cargar el panel de noticias
*/
function cargarPanelNoticias() {
//Comprueba si ya está cargado el archivo, de no ser así crear el panel para ello
if(!paneSplitter.isUrlLoadedInPane('paneNoticias','http://186.4.180.43/geosys2/modules/general/noticiasFix.html'))
{
var paneNoticias = new DHTMLSuite.paneSplitterContentModel( { id: 'paneNoticias', title: 'Noticias', tabTitle: 'Noticias', closable: true, displayRefreshButton: true, contentUrl: 'http://186.4.180.43/geosys2/modules/general/noticiasFix.html', refreshAfterSeconds: 300 } );
paneSplitter.addContent('west',paneNoticias);
}
}
/**
* Cargar las actividades del usuario
*/
function cargarListaProyectos() {
//Comprueba si ya está cargado el archivo, de no ser así crear el panel para ello
if(!paneSplitter.isUrlLoadedInPane('paneListaProyectos','http://186.4.180.43/geosys2/modules/ejecucion/proyecto/verTareasCompartidasDI.php'))
{
var paneListaProyectos = new DHTMLSuite.paneSplitterContentModel( { id: 'paneListaProyectos', title: 'Lista de Tareas Compartidas', tabTitle: 'Tareas Compartidas', closable: false, displayRefreshButton: true, contentUrl: 'http://186.4.180.43/geosys2/modules/ejecucion/proyecto/verTareasCompartidasDI.php', refreshAfterSeconds: 300 } );
paneSplitter.addContent('center',paneListaProyectos);
}
}
/**
* Cargar los Gadgets del usuario en el panel derecho
*/
function cargarGadgets()
{
url = 'http://186.4.180.43/geosys2/gadgets/verGadgetsDI.php?';
//Comprueba si ya está cargado el archivo, de no ser así crear el panel para ello
if(!paneSplitter.isUrlLoadedInPane('paneActividades',url))
{
var paneGadget = new DHTMLSuite.paneSplitterContentModel( { id: 'paneGadgets', title: 'Gadgets', tabTitle: 'Gadgets', closable: false, contentUrl: url} );
paneSplitter.addContent('east',paneGadget,'resizeCaller("frmGadgets")');
}
}
/**
* Carga dinámicamente el menú de la aplicación
*/
function cargarMenu()
{
ajaxObj = new DHTMLSuite.ajaxUtil();
ajaxObj.sendRequest("includes/cargarMenu.php",'',"ejecutarJS");
}
/**
* Crea la ventana de calendario de empleado
*/
function crearVentanaCalEmpl()
{
windowModelCalEmpl = new DHTMLSuite.windowModel({id:"winCalEmpl",title:"Reporte Trabajo de Campo por Empleado"});
windowModelCalEmpl.isResizable=false,
windowModelCalEmpl.addTab({id:"winCalEmplContent", tabTitle:"Calendario"});
winCalEmpl = new DHTMLSuite.windowWidget();
winCalEmpl.addWindowModel(windowModelCalEmpl);
winCalEmpl.init();
winCalEmpl.setWidthOfWindow(350);
winCalEmpl.setHeightOfWindow(375);
winCalEmpl.slideWindowToXAndY(100,50);
winCalEmpl.close();
}
/**
* Crear la ventana de directorio
*
*/
function crearVentanaDir()
{
windowModelDirectorio = new DHTMLSuite.windowModel({id:"winDirectorio",title:"Directorio",activeTabId:"winDirContent"});
windowModelDirectorio.isResizable=false,
windowModelDirectorio.addTab({id:"winDirContent", tabTitle:"Datos Rápidos"});
winDirectorio = new DHTMLSuite.windowWidget();
winDirectorio.addWindowModel(windowModelDirectorio);
winDirectorio.init();
winDirectorio.setWidthOfWindow(350);
winDirectorio.setHeightOfWindow(180);
winDirectorio.slideWindowToXAndY(100,50);
winDirectorio.close();
}
/**
* Ejecuta el código JavaScript recibido
*
* @param codigo El codigo a ejecutar
*/
function ejecutarJS(codigo)
{
//Si existe response es un objeto DHTMLSuite.ajaxUtil
if(codigo.response)
eval(codigo.response);
else
eval(codigo);
}
/**
* Muestra el calendario para elegir una fecha
*
* @param input la caja de texto en la que se muestra la fecha elegida, se referencia directo desde el formulario para evitar duplicidad
* @param hora indica si se debe mostrar la opcion de hora
*/
function elegirFecha(input,hora)
{
//Revisar si mostrar horas y minutos
calendario.displayTimeBar = (hora=='' || hora==null) ? false : hora;
calendario.setCalendarPositionByHTMLElement(input,0,input.offsetHeight+2); // Posicionar el calendario a la derecha de la caja
calendario.setInitialDateFromInput(input,'dd-mm-yyyy hh:ii'); // El calendario se iniciará con la fecha de la caja
calendario.addHtmlElementReference('fechaCalendario',input); // Se añade la referencia con el fin de poder recuperar la fecha en la funcion obtenerFecha
if(calendario.isVisible()){
calendario.hide();
}else{
calendario.resetViewDisplayedMonth(); // Muestra el calendario nuevamente limpiando las fechas anteriores
calendario.display();
}
}
/**
* Eliminar la cadena para validación de cierre de contenido
*
* @param codigo el código del elemento a eliminar cadena de validación
*/
function eliminarCadenaValidacionCierre(codigo)
{
var aux = document.getElementById(codigo).innerHTML;
var patron = /<\/?[cC]heck[cC]lose\/?>/;
document.getElementById(codigo).innerHTML = aux.replace(patron,"");
}
/**
* Dar formato decimal de dos dígitos a un número dado
*
* @param num el número a convertir
*
* @return el número formateado
*/
function formatNumber(num) {
if(isNaN(num)) return "";
num -= 0;
num = (Math.round(num*100))/100;
return (num == Math.floor(num)) ? num + '.00' : ( (num*10 == Math.floor(num*10)) ? num + '0' : num);
}
/**
* Obtener la nueva cadena de noticias
*/
function feed()
{
var feedObj = new DHTMLSuite.ajaxUtil();
feedObj.sendRequest("http://186.4.180.43/geosys2/modules/general/noticiasDP.php","","ejecutarJS");
}
/**
* Posicionar el foco en un elemente dado
*
* @param id Id del elemento
*/
function focusElement(id)
{
document.getElementById(id).focus();
}
/**
* Carga el contenido para el usuario identificado
*/
function ingresar()
{
//Comprobar si aún no está cargada la interfaz
if(!paneSplitter)
inicio();
//Mostrar el div de Ingreso con los menus, saludos y demás. Ocultar el div de inicio
document.getElementById("divLogin").className = "visible";
document.getElementById("divInicio").className = "oculto";
//Mostrar los paneles
paneSplitter.showPane("north");
paneSplitter.showPane("west");
paneSplitter.showPane("east");
paneSplitter.showPane("south");
paneSplitter.collapsePane("south");
//paneSplitter.collapsePane("east");
paneSplitter.deleteContentById('center');
//cargarGadgets(); //Cargar gadgets del usuario
cargarPanelNoticias(); //Carga el panel emergente de noticias (NEW)
cargarActividades(); //Carga el archivo de actividades
cargarListaProyectos(); //Carga la lista compartida de tareas (NEW)
cargarMenu(); //Mostrar el menú
saludar(); //Actualiza el campo del saludo
//Cargar las noticias y definir el intervalo de repetición
feed();
setInterval("feed()",300*1000)
marquesina();
setInterval("marquesina()",200); //Inicializar la marquesina
}
/**
* Carga la interface inicial del sistema
*/
function inicio()
{
//Corregir la transparencia del logo para navegadores IE
if(document.all)DHTMLSuite.commonObj.correctPng('logoImage');
// Crear el modelo de datos para el panel
var paneModel = new DHTMLSuite.paneSplitterModel( { collapseButtonsInTitleBars:true } );
DHTMLSuite.commonObj.setCssCacheStatus(false);
var paneWest = new DHTMLSuite.paneSplitterPaneModel( { position:"west", id:"westPane",size:260,minSize:260, maxSize:260, resizable:false } );
paneModel.addPane(paneWest);
//var paneEast = new DHTMLSuite.paneSplitterPaneModel( { position:"east", id:"eastPane",size:250,resizable:false } );
//paneModel.addPane(paneEast);
var paneSouth = new DHTMLSuite.paneSplitterPaneModel( { position:"south", id:"southPane", size:100,minSize:100,maxSize:100,scrollbars:false } );
paneSouth.addContent( new DHTMLSuite.paneSplitterContentModel( { id:"southContent", htmlElementId:'southContent', closable:false, title:" " } ) );
paneModel.addPane(paneSouth);
var paneNorth = new DHTMLSuite.paneSplitterPaneModel( { position:"north", id:"northPane",size:55,scrollbars:false,resizable:false } );
paneNorth.addContent( new DHTMLSuite.paneSplitterContentModel( { id:"northContent",htmlElementId:'northContent' } ) );
paneModel.addPane(paneNorth);
var paneCenter = new DHTMLSuite.paneSplitterPaneModel( { position:"center", id:"centerPane",size:150,callbackOnBeforeCloseContent:'validarCierreContenido' } );
paneCenter.addContent( new DHTMLSuite.paneSplitterContentModel( { id: 'center',htmlElementId:'mainContainer' } ) );
paneModel.addPane(paneCenter);
// Crear el objeto Panel
paneSplitter = new DHTMLSuite.paneSplitter();
paneSplitter.addModel(paneModel); // Add the data model to the pane splitter
paneSplitter.init(); // Add the data model to the pane splitter
DHTMLSuite.configObj.resetCssPath();
// Iniciar el calendario
calModel = new DHTMLSuite.calendarModel();
calModel.setLanguageCode('es'); //El calendario se mostrará en español
calModel.setWeekStartsOnMonday(false);
calendario = new DHTMLSuite.calendar({callbackFunctionOnDayClick:'obtenerFecha',isDragable:true});
calendario.setCalendarModelReference(calModel);
}
/**
* Eliminar los hijos diferentes a NodeType=1
*
* @param obj el objeto contenedor
*/
function limpiarNodos(obj)
{
for($i=0;$i/;
if(innerHTML.search(patron)>=0)
return confirm('¿Está seguro que desea cerrar el panel "' + contentObj.title + '"?');
else
return true;
}
return true;
}
/**
* Mostrar el calendario del empleado
*
* @param emplcdgo código del empleado
* @param mes mes en el que se muestra el calendario
* @param anio año en el que se muestra el calendario
*
*/
function verVentanaCalEmpl(emplcdgo, mes, anio)
{
if(!winCalEmpl)
crearVentanaCalEmpl();
var ruta = "http://186.4.180.43/geosys2/modules/recursos/empleados/calendarioEmpleadoDI.php?emplcdgo="+emplcdgo+"&mes="+mes+"&anio="+anio;
winCalEmpl.loadContent('winCalEmplContent',ruta);
winCalEmpl.show();
}
/**
* Ver la Ventana de directorio
*
* @param contacto id del contacto
* @param tipo tipo de contacto
*/
function verVentanaDir(contacto, tipo)
{
if(!winDirectorio)
crearVentanaDir();
var ruta = "http://186.4.180.43/geosys2/modules/general/datosRapidosDI.php?cdgo="+contacto+"&tipo="+tipo;
winDirectorio.loadContent('winDirContent',ruta);
winDirectorio.show();
}
/**
* Mostrar las propiedades de un objeto
*/
function zz(obj)
{
var str=""; //variable which will hold property values
for(prop in obj)
{
str+=prop + " value :"+ obj[prop]+"\n";//Concate prop and its value from object
}
alert(str); //Show all properties and its value
}