﻿// Archivo JScript
//*******************************************************************
//****** Proceso para las Ventanas con movimiento y Modales *********
//*******************************************************************
var ventana = new Object();
function $getVentana(nombreControl) {
    var obj = document.getElementById(nombreControl);

    var _div = document.createElement('div');
    _div.className = 'ventanaModal';
    _div.id = obj.id + '_div';   
    obj.parentNode.insertBefore(_div,obj);
    obj.className ='modalInterna';
    obj.style.zIndex = 2;
    
    obj.ver = function(evento,nombreObj){
        _div = document.getElementById(this.id + '_div');
        _div.style.width = document.documentElement.scrollWidth;
        _div.style.height = window.document.body.clientHeight;
        _div.style.display = 'block';
        this.style.top=document.documentElement.scrollTop + (window.document.body.scrollHeight - parseInt(this.style.height))/2;    
        this.style.left=(window.document.body.scrollWidth-parseInt(this.style.width))/2; 
        this.style.display = 'block';
        if(evento != undefined){
            var cuerpo = document.getElementById(nombreObj);
            cuerpo.onclick = evento;
        }
        return false;
    }
    obj.ocultar = function(){
        this.style.display = 'none';
        _div = document.getElementById(this.id + '_div');
        _div.style.display = 'none';
        return false;
    }
    return obj;
}

//*******************************************************************
//********************        Manejo de Error          **************
//*******************************************************************
function esperar(mensaje,titulo,ancho,alto,bloquear){
    titulo = (titulo == undefined || titulo=='')?'':'<legend>' + titulo +  '</legend>';
    var mensaje = '<div class="error100"><fieldset>' + titulo + '<img alt="" src="' + imgVentana[6].src + '" class="progreso" /><label>' + mensaje + '</label></fieldset></div>'
    if(ancho==undefined || ancho=='')
        ancho=350;
    if(alto==undefined || alto=='')
        alto=250;
        var _img;
        if(bloquear != undefined && bloquear){
            var _div = document.createElement('div');
            _div.className='error';
            _div.style.height = window.document.body.scrollHeight;
            ventana.fondo=_div;
            document.body.insertBefore(_div, document.body.firstChild);
            $(_div).slideDown(500);
        }
        var _divMsg = document.createElement('div');
        _divMsg.className='errorMsg';
        _divMsg.style.width= ancho + 'px';
        _divMsg.style.height= alto + 'px';
        document.body.insertBefore(_divMsg, document.body.firstChild);
        //document.body.firstChild.appendChild(_divMsg);
        ventana.panel=_divMsg;
        _divMsg.style.top=document.documentElement.scrollTop + 'px';    
        if (document.all) {
            _divMsg.style.left=(document.documentElement.clientWidth - _divMsg.style.width.replace('px','')) + 'px'; 
        } else {
            _divMsg.style.left=(window.innerWidth - _divMsg.style.width.replace('px','')) + 'px'; 
        }

        var _divHijo1 = document.createElement('div');
        _divHijo1.className='errorMsg_1';
        _divHijo1.style.height=alto-46 + 'px';
        _divHijo1.innerHTML=mensaje;
        _divMsg.appendChild(_divHijo1);
        var _divHijo2 = document.createElement('div');
        _divHijo2.className='errorMsg_2';
        _divHijo2.style.height='46px';
        _divMsg.appendChild(_divHijo2);
        
        var _divPie = document.createElement('div');
        _divPie.className='errorPie1';
        _divPie.style.backgroundImage= 'url(' + imgVentana[0].src + ')';
        _divHijo2.appendChild(_divPie);
        
        _divPie = document.createElement('div');
        _divPie.className='errorPie2';
        _divPie.style.width= (ancho-123) + 'px';
        _divPie.style.backgroundImage= 'url(' + imgVentana[1].src + ')';
        _divHijo2.appendChild(_divPie);
        
        _divPie = document.createElement('div');
        _divPie.className='errorPie3';
        _divPie.style.backgroundImage= 'url(' + imgVentana[2].src + ')';
        _divHijo2.appendChild(_divPie);
        $(_divMsg).slideDown(500);
    }
function mostrar(mensaje,titulo,ancho,alto){
    titulo = (titulo == undefined || titulo=='')?'':'<legend>' + titulo +  '</legend>';
    var mensaje = '<div class="error100"><fieldset>' + titulo + '<label>Mensaje :</label><label>' + mensaje + '</label></fieldset></div>'
    if(ancho==undefined || ancho=='')
        ancho=350;
    if(alto==undefined || alto=='')
        alto=250;

        var _img;
        var _divMsg = document.createElement('div');
        _divMsg.className='errorMsg';
        _divMsg.style.width= ancho + 'px';
        _divMsg.style.height= alto + 'px';
        ventana.panelMostrar=_divMsg;
        _divMsg.style.top=document.documentElement.scrollTop + 'px';    
        if (document.all) {
            _divMsg.style.left=(document.documentElement.clientWidth - _divMsg.style.width.replace('px','')) + 'px'; 
        } else {
            _divMsg.style.left=(window.innerWidth - _divMsg.style.width.replace('px','')) + 'px'; 
        }

        var _divHijo1 = document.createElement('div');
        _divHijo1.className='errorMsg_1';
        _divHijo1.style.height=alto-46 + 'px';
        _divHijo1.innerHTML=mensaje;
        _divMsg.appendChild(_divHijo1);
        var _divHijo2 = document.createElement('div');
        _divHijo2.className='errorMsg_2';
        _divHijo2.style.height='46px';
        _divMsg.appendChild(_divHijo2);
        
        var _divPie = document.createElement('div');
        _divPie.className='errorPie1';
        _divPie.style.backgroundImage= 'url(' + imgVentana[0].src + ')';
        _divHijo2.appendChild(_divPie);
        
        _divPie = document.createElement('div');
        _divPie.className='errorPie2';
        _divPie.style.width= (ancho-123) + 'px';
        _divPie.style.backgroundImage= 'url(' + imgVentana[1].src + ')';
        _divHijo2.appendChild(_divPie);
        
        _img = document.createElement('img');
        _img.className='errorImg';
        _img.alt='Cerrar Ventana';
        _img.src= imgVentana[3].src ;
        _img.onclick=cerrarVentanaMostrar;
        _divPie.appendChild(_img);
         
        
        _divPie = document.createElement('div');
        _divPie.className='errorPie3';
        _divPie.style.backgroundImage= 'url(' + imgVentana[2].src + ')';
        _divHijo2.appendChild(_divPie);

        document.body.insertBefore(_divMsg, document.body.firstChild);
        $(_divMsg).slideDown(500);
        ventana.temporizador = setInterval("cerrarVentanaMostrar()", 4000);

}
function cerrarVentanaMostrar(){
    $(ventana.panelMostrar).fadeOut(2000);
    clearInterval(ventana.temporizador); 
}
function confirmar(metodo,mensaje,titulo,ancho,alto){
    titulo = (titulo == undefined || titulo=='')?'':'<legend>' + titulo +  '</legend>';
    var mensaje = '<div class="error100"><fieldset>' + titulo + '<label>Mensaje :</label><label>' + mensaje + '</label></fieldset></div>'
    if(ancho==undefined || ancho=='')
        ancho=350;
    if(alto==undefined || alto=='')
        alto=250;
    ventanaMensaje(mensaje,ancho,alto,metodo);        
}
function mensaje(mensaje,titulo,ancho,alto){
    titulo = (titulo == undefined || titulo=='')?'':'<legend>' + titulo +  '</legend>';
    var mensaje = '<div class="error100"><fieldset>' + titulo + '<label>Mensaje :</label><label>' + mensaje + '</label></fieldset></div>'
    if(ancho==undefined || ancho=='')
        ancho=350;
    if(alto==undefined || alto=='')
        alto=250;
    ventanaMensaje(mensaje,ancho,alto);        
}
function ventanaMensaje(mensaje,ancho,alto,metodo){
        var _img;
        var _div = document.createElement('div');
        _div.className='error';
        _div.style.height = window.document.body.scrollHeight;
        ventana.fondo=_div;
        document.body.insertBefore(_div, document.body.firstChild);
        $(_div).slideDown(500);
        //$(_div).fadeIn(500);
        
        var _divMsg = document.createElement('div');
        _divMsg.className='errorMsg';
        _divMsg.style.width= ancho + 'px';
        _divMsg.style.height= alto + 'px';
        document.body.insertBefore(_divMsg, document.body.firstChild);
        ventana.panel=_divMsg;
        _divMsg.style.top=document.documentElement.scrollTop + 'px';    
        if (document.all) {
            _divMsg.style.left=(document.documentElement.clientWidth - _divMsg.style.width.replace('px',''))/2; 
        } else {
            _divMsg.style.left=(window.innerWidth - _divMsg.style.width.replace('px',''))/2; 
        }

        var _divHijo1 = document.createElement('div');
        _divHijo1.className='errorMsg_1';
        _divHijo1.style.height=alto-46 + 'px';
        _divHijo1.innerHTML=mensaje;
        _divMsg.appendChild(_divHijo1);
        var _divHijo2 = document.createElement('div');
        _divHijo2.className='errorMsg_2';
        _divHijo2.style.height='46px';
        _divMsg.appendChild(_divHijo2);
        
        var _divPie = document.createElement('div');
        _divPie.className='errorPie1';
        _divPie.style.backgroundImage= 'url(' + imgVentana[0].src + ')';
        _divHijo2.appendChild(_divPie);
        
        _divPie = document.createElement('div');
        _divPie.className='errorPie2';
        _divPie.style.width= (ancho-123) + 'px';
        _divPie.style.backgroundImage= 'url(' + imgVentana[1].src + ')';
        _divHijo2.appendChild(_divPie);
        if(metodo==undefined){
            _img = document.createElement('img');
            _img.className='errorImg';
            _img.alt='Cerrar Ventana';
            _img.src= imgVentana[3].src ;
            _img.onclick=cerrarVentanaError;
            _divPie.appendChild(_img);
        }else{
            _img = document.createElement('img');
            _img.className='errorImg';
            _img.alt='';
            _img.src= imgVentana[4].src ;
            _img.onclick=metodo;
            _divPie.appendChild(_img);
            _img = document.createElement('img');
            _img.className='errorImg';
            _img.alt='Cancelar Acción';
            _img.src= imgVentana[5].src ;
            _img.onclick=cerrarVentanaError;
            _divPie.appendChild(_img);
        
        }
        
        
        _divPie = document.createElement('div');
        _divPie.className='errorPie3';
        _divPie.style.backgroundImage= 'url(' + imgVentana[2].src + ')';
        _divHijo2.appendChild(_divPie);

        $(_divMsg).fadeIn(500);

}
function msg_error(msg) {
    ventana.cerrar();
    var mensaje = '';
    if (typeof msg.responseText == 'string') {
        var mensaje = '<div class="error100"><fieldset><legend>Manejo de Errores</legend><label>Tipo Error :</label><label>error desconocido</label></fieldset></div><div class="error100"><fieldset><legend>Origen del Error</legend><label>Tipo de Error: <br />' + msg.statusText + '<br />Error:<br />' + msg.responseText + '<br />Seguimiento:<br />sin seguimiento par mostrar</label></fieldset></div>'
    } else {
        var errorTxt = eval("(" + msg.responseText + ")");
        var mensaje = '<div class="error100"><fieldset><legend>Manejo de Errores</legend><label>Tipo Error :</label><label>' + cambiarError(errorTxt.Message) + '</label></fieldset></div><div class="error100"><fieldset><legend>Origen del Error</legend><label>Tipo de Error: <br />' + errorTxt.ExceptionType + '<br />Error:<br />' + errorTxt.Message + '<br />Seguimiento:<br />' + errorTxt.StackTrace + '</label></fieldset></div>'
    }
    ventanaMensaje(mensaje,450,250);        
}
function cerrarVentanaError(){
    if (ventana.panel != undefined)
        $(ventana.panel).fadeOut(500);
    if (ventana.fondo != undefined)
        $(ventana.fondo).slideUp(2000);
}
ventana.cerrar = function(){
    cerrarVentanaError();
}
var imgTemp = new Array("/img/ventana/pie_1.png", "/img/ventana/pie_2.png", "/img/ventana/pie_3.png",
"/img/ventana/btn_cerrar.png","/img/ventana/btn_aceptar.png","/img/ventana/btn_cancelar.png","/img/ventana/cargar_barra.gif");
var imgVentana = new Array();

for (var x = 0; x < imgTemp.length; x++) {
    imgVentana[x] = new Image();
    imgVentana[x].src = imgTemp[x];
}
function cambiarError(msg){ 
    var error = 'Error desconocido';

    if (msg.indexOf('System.Data.SqlClient.SqlException') > -1){
        error = 'Error datos'
            if (msg.indexOf('UNIQUE KEY constraint') > -1){
                error += ', esta intentando adicionar un registro que ya existe.';
            }else if(msg.indexOf('Incorrect syntax near') > -1){
                error += ', sintaxis sql incorrecta.';
            }else if(msg.indexOf('Could not find stored procedure') > -1){
                error += ', falta el procedimiento almacenado en la base de datos.';
            }else if(msg.indexOf('expects parameter') > -1){
                error += ', falta el valor para un parametro solicitado en el procedimiento almacenado.';
            }else if(msg.indexOf('has too many arguments specified') > -1){
                error += ', Demasiados argumentos especificados para el procedimiento almacenado.';
            }else{
                error += ', servidor base de datos.';
            }
    }else if(msg.indexOf('Server was unable to process request') > -1){
        error = 'Error Datos'
            if(msg.indexOf('DELETE statement conflicted with COLUMN REFERENCE') > -1){
                error += ', Esta intentando eliminar información que ya ha sido referenciada en otros procesos, esta información no puede ser eliminada, intente cambiar al estado inactivo y actualice la información.';
            }else{
                error += ', error en la sentencia Sql.';
            }
    }else if(msg.indexOf('SqlStringError') > -1){
        error = 'Error Datos'
            if (msg.indexOf('Sentencia sql:') > -1){
                error += ', verifique la sentencia sql, error en la informacion que intenta enviar a la base de datos.';
            }else{
                error += ', error en la sentencia Sql.';
            }
    }else if(msg.indexOf('System.NullReferenceException') > -1){
        error = 'Referencia Nula'
            if (msg.indexOf('Object reference not set to an instance of an object') > -1){
                error += ', esta intentando utilizar un objeto que no ha sido instanciado.';
            }else{
                error += ', error en objetos.';
            }
    }else if(msg.indexOf('System.InvalidCastException') > -1){
        error = 'Conversion de datos invalida'
            if (msg.indexOf('Unable to cast object of type') > -1){
                error += ', no es posible convertir el tipo de datos especificado.';
            }else{
                error += ', error al convertir datos.';
            }
    }
    return error;
}

