/**
 * General
 *
 * Script personalizado de uso general y global en la aplicación.
 *
 * @author Alex Barrios <alex@alexertech.com>
 * @version 14.03.2009 12:22:38
 * @package js
 */

// global
cuenta = 0;

// validar() ~ Es un validador general de todos los formularios.
function validar(fx) {

    // Expresión regular para la validación de campos de correo
    email_str=/^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/;

    // Revisión de todos los campos
    for (i = 0; i < fx.elements.length; i++) {

        // Que tipo de elemento recibirá la validacion
        if ((fx.elements[i].type == 'text' ||
             fx.elements[i].type == 'password' ||
             fx.elements[i].type == 'textarea') &&
             (fx.elements[i].type != 'hidden' &&
              fx.elements[i].type != 'file')) {

            // De acuerdo al nombre, cuales elementos no serán validados
            // Si el nombre del campo finaliza en "_omit" el campo no es validado
            if((fx.elements[i].name.substr(-5))!='_omit'){

                // Reglas a validar en los campos
                if (fx.elements[i].value.length == 0  ||
                    fx.elements[i].value == 'null' ||
                    fx.elements[i].value.indexOf("\\", 0) > -1 ||
                    fx.elements[i].value.indexOf("=", 0) > -1){

                    alert('Por favor completa todos los campos del formulario\n'+
                          'Verifique que no contenga caracteres especiales (Ej. \\ =)\n');

                    // Si los elementos no son de tipo 'hidden' colocará
                    // el foco en el elemento que no cumple la validación
                    if(fx.elements[i].type != 'hidden')
                        fx.elements[i].focus();

                    return false;
                    break;

                }
            }
        }

        // Verificar el correo con una expresión regular
        if (fx.elements[i].name == 'email' && fx.elements[i].value.length > 0) {
            if (!email_str.test(fx.elements[i].value)) {
                alert('El formato del campo email no es valido');
                return false;
                break;
            }
        }

        // Verificar campos fecha
        if (fx.elements[i].type == 'hidden') {
            var idFecha = fx.elements[i].id;
            var fecha   = idFecha.substr(0,7);

            if (fecha == 'f_fecha' && fx.elements[i].value == '') {
                alert("Por favor completa todos los campos del formulario"+
                      "\nVerifique las fechas");
                return false;
                break;
            }
        }

        // Verificar que las listas de selección no estén en su valor
        // predeterminado
        if (fx.elements[i].value=='_defa_') {
            alert('Por favor completa todos los campos del formulario\n'+
                  'Verifique las listas dependientes');
            return false;
            break;
        }

        if (fx.elements[i].name == 'link_omit') {
            link = fx.elements[i].value;
            if (link.substr(0,7) == 'pag.php' &&
                fx.elements[i].readOnly == false) {
                alert('El nombre de enlace "pag.php" es reservado. Por favor utilice otro.');
                return false;
                break;
            }
        }

        // Validaciones relacionadas con AJAX
        if (document.getElementById('cK')) {
            alert ('Introduzca un valor Válido!');
            return false;
        }

    }

    // Evita que el usuario envíe 2 veces el formulario
    /*if (cuenta == 0) {
        cuenta++;
        return true;
    }else{
        //alert('Por favor espera la respuesta de tu peticion!');
        return false;
    }*/

}


// updateView() ~ realiza las transiciones

var prevHref = '';
var prevAux  = 0;

function updateView(urlHref, form) {

    form        = typeof(form) != 'undefined' ? form : '';

    var tipo    = 'get';
    var datos   = '';
    var dataVal = '';

    if (form != '' ) {
        $('#'+form+' :input').each(
            function() {
                value   = this.type == 'textarea' ? escape(this.value) : this.value;
                dataVal = this.name+'='+value+'&'
                datos   = datos + dataVal;
            }
        );
        tipo = form == 'buscador' ? 'get' : 'post';
    } else {
        var str = urlHref.split('?');
        urlHref = str[0];
        datos   = str[1];
    }

    $.ajax({
        type       : tipo,
        url        : urlHref,
        data       : datos,
        dataType   : 'html',
        cache      : false,
        beforeSend : function () {
            $('#principal #preload').fadeIn('fast');
        },
        success    : function (html) {

            $('#principal #preload').fadeOut('fast');

            $('#ajaxResp').html(html);

        }
    });
}


// updateNavBar() ~ actualiza la barra de lugar.

function updateNavBar(str) {
    $('#locationPlaces').empty();
    $('#locationPlaces').append(str);
}


// comprobar() ~ Verifica algunos formularios especiales como el
// de contactos y sugerencias.

function comprobar(){

    email_str=/^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/;

    if($('#nombre').val().length == 0 || $('#nombre').val()==' '){
        alert('Por favor coloque un nombre.');
        $('#nombre').focus();
        return false;
    }
    if(!email_str.test($('#email').val())) {
        alert('Por favor coloque una dirección e-mail válida.');
        $('#email').focus();
        return false;
    }
    if($('#message').val().length == 0 || $('#message').val()==' '){
        alert('Por favor indique su mensaje.');
        $('#message').focus();
        return false;
    }

    return true;
}



// formato_campo() ~ permite definir que caracteres puede introducir
// un usuario en un campo. Para utilizarlo solo basta con agregar la
// siguiente linea como atributo del campo a validar:
//
// onKeyPress="return(formato_campo(this,event,1))"

function formato_campo(fld,e,t) {

    // Variables
    var aux = aux2 = '';
    var i = j = 0;
    var strCheck = null;

    // solo numeros
    if (t==1)
        var strCheck = '0123456789';

    // solo letras
    if (t==2)
        var strCheck = 'AaBbCcDdEeFfGgHhIiJjKkLlÑñNnMmOoPpQqRrSsTtUuVvWwXxYyZzáÁéÉíÍóÓúÚ ';

    // telefonos
    if (t==3)
        var strCheck = '0123456789-ext';

    // moneda & numerico con decimales
    if (t==4)
        var strCheck = '0123456789,.';

    // Obtiene el codigo de la letra precionada
    var whichCode = (window.Event) ? e.which : e.keyCode;

    // Comienza la comprobación
    if (whichCode == 13 || whichCode == 8)
        return true; // Permitir Tecla Enter

    if (t==4 && (whichCode == 44 || whichCode == 46))
        return true; // Permitir Comas y puntos

    if (whichCode == 0)
        return true; // Permitir Tabulador

    // Consigue el valor del codigo de tecla
    key = String.fromCharCode(whichCode);

    // Verifica el caracter con los seleccionados en strCheck
    if (strCheck.indexOf(key) == -1)
        return false;

    // Retorna el caracter al campo
    fld.value += aux2.charAt(i);
}


// Acordion
function montre(id) {

    $('div.acordion').css('display','none');

    if ($("#"+id)) { $("#"+id).css('display','block') };

}

// ventanaPopUp() ~ generador de ventanas emergentes
// La sintaxis sería similar a la siguiente:
// <a href="javascript:ventanaPopUp('pagina.html',
//                                  'nombreVentana',
//                                  '600px','400px','yes');">Texto Enlace</a>

function ventanaPopUp (pagina,nom_ventana,ancho,alto,scroll_b){
    var opciones=("toolbar=no, "+
                  "location=no, "+
                  "directories=no, "+
                  "status=no, "+
                  "menubar=yes, "+
                  "scrollbars="+scroll_b+","+
                  "resizable=no,"+
                  "width="+ancho+","+
                  "height="+alto+"");
    var w=window.open(pagina,nom_ventana,opciones);
}

// ventanaPopUp() ~ marcar la opción del menú

function markMenu(i) {
    $('.opm').removeClass('menuAct');
    $('#op'+i).addClass('menuAct');
}


// sugerencias() ~ obtiene los datos de un formulario y los envía al
// encargado ajax en php.

function sugerencias() {

    // ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

    nombre     = $('#nombre').val();
    email      = $('#email').val();
    ciudad     = $('#ciudad').val();
    telefono   = $('#telefono').val();
    mensaje    = $('#mensaje').val();
    code       = $('#code').val();

    $.ajax({
        type       : 'POST',
        dataType   : 'html',
        url        : 'lib/ajax.php?acc=1',
        data       : 'nombre='+nombre+'&email='+email+'&telefono='+telefono+'&ciudad='+ciudad+'&mensaje='+mensaje+'&code='+code,
        cache      : false,
        beforeSend : function () {
            $('#sugerencias #msg').empty();
            $('#sugerencias #msg').append('<br><span style="color:blue">Enviando ... Por favor espere.</span>');
        },
        success: function(html){
            $('#sugerencias #msg').empty();
            $('#sugerencias #msg').append(html);
            $('#codeImage').attr('src', 'lib/securimage/securimage_show.php?sid=' + Math.random());
            document.formulario.reset();
        }
    });

}



// inscripciones() ~ obtiene los datos de un formulario y los envía al
// encargado ajax en php.

function inscripciones() {

    // ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

    var inputs = [];

    $(':input').each(function() {
       inputs.push(this.name + '=' + escape(this.value));
    });


    $.ajax({
        type: "POST",
        dataType: 'html',
        url : "lib/ajax.php",
        data: inputs.join('&'),
        cache:false,
        beforeSend: function () {
            $('#inscripciones #msg').empty();
            $('#inscripciones #msg').append('<br><span style="color:blue">Enviando ... Por favor espere.</span>');
        },
        success: function(html){
            $('#inscripciones #msg').empty();
            $('#inscripciones #msg').append(html);
            $('#inscripciones').attr('src', 'lib/securimage/securimage_show.php?sid=' + Math.random());
            //document.formulario.reset();
        }
    });

}

// $(document).ready ~ Realizar ciertas acciones cuando la página
// este completamente cargada

$(document).ready(function() {

    // ---

});

