// Constantes
KEY_RETURN = 13;
KEY_BACKSPACE = 8;
KEY_TAB = 9;
KEY_SHIFT_TAB = 16;
KEY_DOS_PUNTOS = 58;
KEY_BARRA_FECHA = 47;
KEY_CERO = 48;
KEY_NUEVE = 57;
KEY_PUNTO = 46;
KEY_PAD_CERO = 96;
KEY_PAD_NUEVE = 105;
TITULO_X_DEFECTO = 'La Continental';

var message_window;

function getKeyNum(evt)
{
    var intRetVal = 0;

    if(window.event){ // IE
        intRetVal = evt.keyCode
    }
    else if(evt.which){ // Netscape/Firefox/Opera
        intRetVal = evt.which
    }

    return intRetVal;
}

function IsKeyValid(p_keynum, p_textValue, p_adicional)
{
    var blnRetVal = true;

    if ((p_keynum < KEY_CERO) || (p_keynum > KEY_NUEVE)){
        switch(p_keynum){
            case 0: // TAB y otras teclas que no tienen keyCode en firefox
                break;
            case KEY_BACKSPACE:
                break;
            case p_adicional:
                // se permite una sola vez el caracter adicional
                if (String(p_textValue).indexOf(String.fromCharCode(p_adicional)) != -1)
                    blnRetVal = false;
                break;
            default:
                blnRetVal = false;
        }
    }
    
    return blnRetVal
}

function isTimeKey(evt, obj)
{
    var keynum = getKeyNum(evt);
    
    return IsKeyValid(keynum, obj.value, KEY_DOS_PUNTOS);
}

function isDateKey(evt)
{
    var keynum = getKeyNum(evt);
    
    if (keynum == KEY_BARRA_FECHA)
        return true;
    else
        return IsKeyValid(keynum, null, null)
}

function isNumberKey(evt, obj, blnmover)
{
    var keynum = getKeyNum(evt);

    if (blnmover) {
        // funcion definida en el el script de la pagina de ingreso de pedidos: pedidos.js
        SetFocusOnNext(keynum, obj);
    }
    return IsKeyValid(keynum, obj.value, KEY_PUNTO);
}

function isIntegerKey(evt)
{
    var keynum = getKeyNum(evt);

    return IsKeyValid(keynum, null, null);
}

function agregar_elemento(strTagName, strId, strHtml, strClassName)
{
    var objElem = document.createElement(strTagName);
    if (strId != '') objElem.id = strId;
    if (strHtml != '') objElem.innerHTML = strHtml;
    if (strClassName != '') objElem.className = strClassName;

    return objElem;
    objElem = null;
}

function Cerrar(objDiv)
{
    document.body.removeChild(objDiv);
    //message_window.hide();
}

function cerrar_mensaje(objTxt)
{
    Cerrar(document.getElementById('messageWindow'));
    SetFocus(objTxt);
}


function $style(obj, CssProperty)
{
    if(obj.currentStyle) {
        var convertToCamelCase = CssProperty.replace(/\-(.)/g, function(m, l){return l.toUpperCase()});
        return obj.currentStyle[convertToCamelCase];
    }
    else if (window.getComputedStyle) {
        var elementStyle = window.getComputedStyle(obj, "");
        return elementStyle.getPropertyValue(CssProperty);
    }
}

function ventana_mensaje(strTitulo, strMensaje, fn_onclick)
{

    // para mostrar el nuevo Div una sola vez
    if (document.getElementById('messageWindow') != null) return;

    var objDiv = agregar_elemento('DIV', 'messageWindow', '', '');
    var objDivTitle = agregar_elemento('DIV', '', strTitulo, 'titleWindow');
    objDiv.appendChild (objDivTitle);

    var objDivContent = agregar_elemento('DIV', '', '', 'contentForm')
    var objDiv1 = agregar_elemento('DIV', '', strMensaje, 'mensaje');
    objDivContent.appendChild (objDiv1);

    objDiv1 = agregar_elemento('DIV', '', '', 'lineForm');
    var objDivButton = agregar_elemento('DIV', '', '', 'button');
    var objCmd = agregar_elemento('BUTTON', '', 'Cerrar', 'inputButton')
    //objCmd.onclick = function (){ blnNoClick = false;document.body.removeChild(objDiv)};
    if (fn_onclick)
        objCmd.onclick = fn_onclick;
    else
        objCmd.onclick = function (){Cerrar(objDiv)};
    objDivButton.appendChild (objCmd);
    objDiv1.appendChild (objDivButton);
    objDivContent.appendChild (objDiv1)
    objDiv.appendChild (objDivContent);
    
    document.body.appendChild (objDiv);

    objCmd.focus();

    //message_window=dhtmlmodal.open('message_window', 'div', 'message_window', strTitulo, 'width=350px,height=150px,left=250px,top=300px,resize=0,scrolling=0')
}

// para mostrar un div progresivamente
function mostrar_ventana(strId, int_total, int_ancho)
{
    var objDiv = document.getElementById(strId);

    if (Number(String(objDiv.style.height).replace(/px/, '')) < int_total)
        objDiv.style.height = Number(String(objDiv.style.height).replace(/px/, '')) + 10 + 'px';
    
    if (Number(String(objDiv.style.width).replace(/px/, '')) < int_ancho)
        objDiv.style.width = Number(String(objDiv.style.width).replace(/px/, '')) + 10 + 'px';

    if (Number(String(objDiv.style.height).replace(/px/, '')) >= int_total && Number(String(objDiv.style.width).replace(/px/, '')) >= int_ancho) {
        for (var i =0; i < objDiv.getElementsByTagName('DIV').length; i++) {
            objDiv.getElementsByTagName('DIV')[i].style.display = 'inline';
        }
    }
    else
        setTimeout("mostrar_ventana('" + strId + "', " + int_total + "," + int_ancho + ")", 1)
}

function seleccionar(cboSelect, valor)
{
    for (var i = 0; i < cboSelect.options.length; i++) {
        if (cboSelect.options[i].value == valor) {
            cboSelect.selectedIndex = i
            return;
        }
    }
}

function SetFocus(objTxt)
{
    objTxt.focus();
    objTxt.select();
}

function AgregarItems(cboDesde, cboHasta, ondbl)
{
    var objOpt;
    var i = 0

    while (i <= cboDesde.options.length) {
        if (cboDesde.options[i].selected) {
            objOpt = agregar_elemento('OPTION', '', cboDesde.options[i].innerHTML, '');
            objOpt.value = cboDesde.options[i].value;
            objOpt.ondblclick=ondbl;
            cboHasta.appendChild (objOpt);
            cboDesde.remove(i);
        }
        else
            i++
    }
}

function DateDemo()
{
   var d, s = "";
   var mesEnCastellano = '';
    d = new Date();
    s += d.getDate() + " de ";
   
    switch (d.getMonth() + 1) 
    {
        case 1: 
            mesEnCastellano = "Enero";
            break;
        case 2: 
            mesEnCastellano = "Febrero";
            break;
        case 3: 
            mesEnCastellano = "Marzo";
            break;
        case 4: 
            mesEnCastellano = "Abril";
            break;
        case 5: 
            mesEnCastellano = "Mayo";
            break;
        case 6: 
            mesEnCastellano = "Junio";
            break;
        case 7: 
            mesEnCastellano = "Julio";
            break;
        case 8: 
            mesEnCastellano = "Agosto";
            break;
        case 9: 
            mesEnCastellano = "Septiembre";
            break;
        case 10: 
            mesEnCastellano = "Octubre";
            break;
        case 11: 
            mesEnCastellano = "Noviembre";
            break;
        case 12: 
            mesEnCastellano = "Diciembre";
            break;
    }
   
   s += (mesEnCastellano) + " de ";
   s += d.getUTCFullYear();
   return(s);
}

function ltrim(s)
{
   return String(s).replace(/^\s+/, '');
}

function rtrim(s)
{
   return String(s).replace(/\s+$/, '');
}

function trim(s)
{
   return rtrim(ltrim(s));
}

function ControlVacio(objTxt, strMensaje, bln_alert)
{
    if (trim(objTxt.value) == '' ) {
        if (bln_alert) {
            alert(strMensaje);
            SetFocus(objTxt);
        }
        else
            ventana_mensaje(TITULO_X_DEFECTO, strMensaje, function (){cerrar_mensaje(objTxt)});
        return false;
    }
    else
        return true;
}

function GetFecha(strFecha)
{
    var dia, mes, anio;
    var intbarra1, intbarra2;

    intbarra1 = String(strFecha).indexOf('/');
    intbarra2 = String(strFecha).indexOf('/', intbarra1 + 1);

    dia = Number(String(strFecha).substr(0, intbarra1));
    mes = Number(String(strFecha).substr(intbarra1 + 1, intbarra2-intbarra1-1));
    anio = Number(String(strFecha).substr(intbarra2 + 1, 4));

    dt = new Date(anio, mes-1, dia);

    return dt;
}

function ValidarFecha(strFecha, strMensaje, bln_alert)
{
    var dt;

    if (strFecha == '') {
        if (bln_alert)
            alert(strMensaje);
        else
            ventana_mensaje(TITULO_X_DEFECTO, strMensaje);

        return false;   
    }

    intbarra1 = String(strFecha).indexOf('/');
    intbarra2 = String(strFecha).indexOf('/', intbarra1 + 1);

    dia = Number(String(strFecha).substr(0, intbarra1));
    mes = Number(String(strFecha).substr(intbarra1 + 1, intbarra2-intbarra1-1));
    anio = Number(String(strFecha).substr(intbarra2 + 1, 4));

    dt = new Date(anio, mes-1, dia);

    if(dt.getFullYear() != anio || dt.getMonth() != mes-1 || dt.getDate() != dia) {
        if (bln_alert)
            alert(strMensaje);
        else
            ventana_mensaje(TITULO_X_DEFECTO, strMensaje);
        return false;
    }

    return true;
}

function GetValue(strId)
{
    var obj = document.getElementById(strId);

    if (obj == null)
        return '';
    else {
        if (obj.tagName == 'INPUT' && obj.type == 'text')
            return obj.value;

        if (obj.tagName == 'INPUT' && obj.type == 'hidden')
            return obj.value;

        if (obj.tagName == 'INPUT' && obj.type == 'password')
            return obj.value;

        if (obj.tagName == 'SELECT' || obj.tagName == 'TEXTAREA')
            return obj.value;
    }
}

function ControlMail(strMail)
{
    if (strMail.indexOf('@') == -1) return false;

    if (strMail.replace(/@.*/, '') == '') return false;

    if (strMail.replace(/.*\./, '').length <= 1) return false;

    if (strMail.replace(/.*@/, '').indexOf('.') < 1) return false;

    return true;
}

