$(document).ready(function(){	
    var actualizarListaTarjetas = function() {
        var tr_ = '';
        $.each(tarjetas, function(i, val){
            var tarjeta_split = val.split('-');
            tr_ += '<tr class="lol"><td>'+$.trim(tarjeta_split[0])+'</td><td>'+$.trim(tarjeta_split[1])+'</td><td><a style="cursor:pointer;"><img src="img/cross.png" alt="" /></a></td></tr>';
        });
        $('#listado_tarjetas .lol').remove();
        $('#listado_tarjetas tr:last').after(tr_);
		
        if (tarjetas.length > 0) {
            $('#listado_tarjetas').css({'display':''});
            $('#botonGuardarTarjetas').css({'display':''});
        } else {
            $('#listado_tarjetas').css({'display':'none'});
            $('#botonGuardarTarjetas').css({'display':'none'});
        }
		
        $('#listado_tarjetas tr a').unbind('click').click(function(){
            var tarjeta_seleccionada = $(this).parent().parent().find('td:first').html();
            if (confirm('\u00BF Est\u00E1 seguro de borrar la tarjeta '+tarjeta_seleccionada+' ?')) {
                tarjetas = $.grep(tarjetas, function(a){
                    var tarjeta_split = a.split('-');
                    tarjeta_split[0] = $.trim(tarjeta_split[0]);
                    return tarjeta_split[0] != tarjeta_seleccionada;
                });
                actualizarListaTarjetas();
            }
        });
        
        /* si hay tarjetas, activa el flag en el form principaol */
        $('#tiene_tarjetas').val( tarjetas.length );
        if( tarjetas.length>0 )
            $('#formRegistroT').find('label.falta').remove()
        
    };
	
    function IsNumeric(sText) {
        var ValidChars = "0123456789";
        var IsNumber=true;
        var Char;
        for (i = 0; i < sText.length && IsNumber == true; i++) {
            Char = sText.charAt(i); 
            if (ValidChars.indexOf(Char) == -1) IsNumber = false;
        }
        return IsNumber;			   
    }
	
    $('#boxTarjetas button').unbind('click').click(function(){
        var boxTarjetas = $('#boxTarjetas');
        var tarjeta_logico = $.trim(boxTarjetas.find('input[name=nro_tarjeta_logico]').val());
        var tarjeta_fisico = $.trim(boxTarjetas.find('input[name=nro_tarjeta_fisico]').val());
		
        if (tarjeta_logico != "" && tarjeta_fisico != "" && IsNumeric(tarjeta_logico) && $.inArray(tarjeta_logico+' - '+tarjeta_fisico, tarjetas) < 0) {
			
            cargandov2(true);
            $.ajax({
                data: "accion=validarTarjeta&fisico="+tarjeta_fisico+"&logico="+tarjeta_logico,
                    type: 'POST',
                    url: 'includes/funciones_parser.php',
                    success: function(response) {
                        if (response) {
                            tarjetas.push(tarjeta_logico+" - "+tarjeta_fisico);
                            boxTarjetas.find('input[name=nro_tarjeta_logico]').val("").blur();
                            boxTarjetas.find('input[name=nro_tarjeta_fisico]').val("").blur();
                            actualizarListaTarjetas();
                            $('#error_tarjeta').slideUp('normal');
                        } else {
                            $('#error_tarjeta').slideDown('normal');
                        }
                        cargandov2(false);
                    }
            });
        }
        /* si hay tarjetas, agregar un flag en el form principaol */
    });
	
    $('#boxReservas .cancelar_reserva a').unbind('click').click(function(){
        if (confirm('\u00BFEst\u00E1 seguro de querer cancelar esta reserva?')) {
            var link_cancelar = $(this);
            cargandov2(true);
            $.ajax({
                data: 'accion=reservar&queHacer=cancelar&evento='+$(this).attr('class').replace(/evento_/, ""),
                type: 'POST',
                url: 'includes/funciones_parser.php',
                success: function(response) {
                    if (response.estado == 'SI') {
                        link_cancelar.text('Anulada');
                    }
                    cargandov2(false);
                    loginBox_reservas();
                }
            });
        }
    });
	
    $('#formRegistroDP').unbind('submit').submit(function(){
        var todook = true, campos = '';

        $(this).find('.requerido').each(function(){
            if (jQuery.trim($(this).val()) == "") {
                $(this).addClass("falta");
                campos += (campos == '' ? '':', ') + $(this).attr('title');
                todook = false;
            } else {
                $(this).removeClass("falta");
                if ($(this).attr('name') == 'email' && !$(this).val().match(/^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/)) {
                    $(this).addClass("falta");
                    todook = false;
                }
                if ($(this).attr('name') == 'rut') {
                    if (!validarRut($(this))) {
                        $(this).addClass("falta");
                        todook = false;
                    } else {
                        $(this).val(formatearRUT($(this).val()));
                    }
                }
            }
        });

        if (todook) {

            //preferencias
            var pref_musica 	= $('#musica input:checked');
            var pref_musica_str = '';
            $.each(pref_musica, function(){
                pref_musica_str += (pref_musica_str == '' ? '&pref_musica='+$(this).parent().text():','+$(this).parent().text());
            });

            var pref_peliculas 	= $('#peliculas input:checked');
            var pref_peliculas_str = '';
            $.each(pref_peliculas, function(){
                pref_peliculas_str += (pref_peliculas_str == '' ? '&pref_peliculas='+$(this).parent().text():','+$(this).parent().text());
            });

            var pref_deportes 	= $('#deportes input:checked');
            var pref_deportes_str = '';
            $.each(pref_deportes, function(){
                pref_deportes_str += (pref_deportes_str == '' ? '&pref_deportes='+$(this).parent().text():','+$(this).parent().text());
            });

            var pref_libre 	= $('#libre input:checked');
            var pref_libre_str = '';
            $.each(pref_libre, function(){
                pref_libre_str += (pref_libre_str == '' ? '&pref_libre='+$(this).parent().text():','+$(this).parent().text());
            });
            //

            var str = $(this).serialize()+'&'+pref_musica_str+pref_peliculas_str+pref_deportes_str+pref_libre_str;

            cargandov2(true);
            $.ajax({
                data: str,
                type: 'POST',
                url: 'includes/funciones_parser.php',
                success: function(response) {
                    $('.feedback').html('<strong style="'+(response.estado ? 'color:#336600':'color:#c00;')+'">'+response.estado_mensaje+'</strong>').show();
                    if (promo_activa) setTimeout(function() { 
                        window.location.href = REQUESTURI;
                    }, 500);
                    cargandov2(false);
                }
            });
        } else {
            $('.feedback').html('<p><strong style="color:#c00;">Sus datos NO han sido guardados</strong>. Complete los siguientes campos: '+campos+'</p>').show();
        }
        return false;
    });
	
    $('#formRegistroC').unbind('submit').submit(function(){
        var todook = true;
        $(this).find('.requerido').each(function(){
            if (jQuery.trim($(this).val()) == "") {
                $(this).addClass("falta");
                todook = false;
            } else {
                $(this).removeClass("falta");
            }
        });

        var clave_nueva = $('#formRegistroC input[name=password_nueva]');
        var clave_nueva_confirmacion = $('#formRegistroC input[name=password_confirmacion]');
        var clave_anterior = $('#formRegistroC input[name=password_anterior]');

        if (jQuery.trim(clave_nueva.val()) != '' && jQuery.trim(clave_nueva_confirmacion.val()) != jQuery.trim(clave_nueva.val())) {
            clave_nueva_confirmacion.addClass("falta");
            todook = false;

            if (jQuery.trim(clave_anterior.val()) == '') {
                clave_anterior.addClass("falta");
                todook = false;
            } else {
                clave_anterior.removeClass("falta");
            }

        } else {
            clave_nueva_confirmacion.removeClass("falta");
        }

        if (todook) {
            var str = $(this).serialize();
            cargandov2(true);
            $.ajax({
                data: str,
                type: 'POST',
                url: 'includes/funciones_parser.php',
                success: function(response) {
                    $('.feedback').html(response.estado_mensaje);
                    cargandov2(false);
                }
            });
        }
        return false;
    });
	
    $('#formRegistroT').unbind('submit').submit(function(){
        var tarjeta_lista = '';
        for(var cont = 0; cont < tarjetas.length; cont++) {
            tarjeta_lista += 'tarjeta[]='+tarjetas[cont];
            if (cont < tarjetas.length - 1) tarjeta_lista += '&';
        }

        if (tarjeta_lista != '') {
            cargandov2(true);
            $.ajax({
                data: 'accion=cliente&queHacer=actualizarTarjetas&'+tarjeta_lista,
                type: 'POST',
                url: 'includes/funciones_parser.php',
                success: function(response) {
                    var salida = response[0] ? response[1]:('<span style="position:relative;float:right;width:230px;*margin-top:-50px;"><strong style="color:#c00;">'+response[1]+'</span>');
                    $('.feedback').html(salida);
                    cargandov2(false);
                    if (response[0]) actualizarListaTarjetas();
                }
            });
        }

        return false;
    });
    

    

    $('#formRegistro').validate({
        errorClass : 'falta',
        rules : {
            tiene_tarjetas : { min : 1 },
            nombre : { required : true, lettersonly : true },
            apellido_paterno : { required : true, lettersonly : true },
            apellido_materno : { required : true, lettersonly : true },
            rut : { required : true, rut: true },
            sexo : 'required',
            estado_civil : 'required',
            cantidad_hijos : 'required',
            grupo_familiar : 'required',
            dia_fechanacimiento : 'required',
            mes_fechanacimiento : 'required',
            ano_fechanacimiento : 'required',
            ocupacion : 'required',
            educacion : 'required',
            profesion : 'required',
            email : { required : true, email : true },
            codtelefono : { required : true, digits : true },
            telefono : { required : true, digits : true },
            calle : 'required',
            calle_numero : { required : true, digits : true },
            comuna : 'required',
            ciudad : 'required',
            condiciones_de_uso : 'required'
        },
        messages : {
            tiene_tarjetas : { min : '' },
            nombre : { required : '', lettersonly : 'Debes escribir sólo letras' },
            apellido_paterno : { required : '', lettersonly : 'Debes escribir sólo letras' },
            apellido_materno : { required : '', lettersonly : 'Debes escribir sólo letras' },
            rut : { required : '', rut : 'Escribe tu RUT correctamente' },
            sexo : '',
            estado_civil : '',
            cantidad_hijos : '',
            grupo_familiar : '',
            dia_fechanacimiento : '',
            mes_fechanacimiento : '',
            ano_fechanacimiento : '',
            ocupacion : '',
            educacion : '',
            profesion : '',
            email : { required : '', email : 'El email debe ser del tipo nombre@dominio.com' },
            codtelefono : { required : '', digits : 'Debes escribir sólo números' },
            telefono : { required : '', digits : 'Debes escribir sólo números' },
            calle : '',
            calle_numero : { required : '', digits : 'Debes escribir sólo números' },
            comuna : '',
            ciudad : '',
            condiciones_de_uso : 'Debes aceptar los términos para completar tu registro'
        },
        groups : {
            telefono : 'codtelefono telefono'
        },
        errorPlacement : function(error, element) {
            if (element.attr('name')=='codtelefono' || element.attr('name')=='telefono')
                error.insertAfter('#telefono');
            else if (element.attr('name')=='condiciones_de_uso')
                error.insertAfter( element.next() );
            else
                error.insertAfter(element);
        },
        invalidHandler : function(form, validator) {
            var errors = validator.numberOfInvalids();
            $('.feedback').html('');
            $('#formRegistroT').find('label.falta').remove()
            if(errors){
                if( $('#tiene_tarjetas').val()==0 ){
                    $("#listado_tarjetas").after('<label class="falta">Debes registrar tu N° de Chip y el Nº de Tarjeta de tu Tarjeta Bip!</label>')
                }
                $('.feedback').html('<p><strong style="color:#c00;">Sus datos NO han sido guardados</strong>. Complete los campos faltantes o corrija los errores indicados para continuar.</p>').show();
            }
        },
        submitHandler : function(form){
            
            var pref_musica 	= $('#musica input:checked');
            var pref_musica_str = '';
            $.each(pref_musica, function(){
                pref_musica_str += (pref_musica_str == '' ? '&pref_musica='+$(this).parent().text():','+$(this).parent().text());
            });
            var pref_peliculas 	= $('#peliculas input:checked');
            var pref_peliculas_str = '';
            $.each(pref_peliculas, function(){
                pref_peliculas_str += (pref_peliculas_str == '' ? '&pref_peliculas='+$(this).parent().text():','+$(this).parent().text());
            });
            var pref_deportes 	= $('#deportes input:checked');
            var pref_deportes_str = '';
            $.each(pref_deportes, function(){
                pref_deportes_str += (pref_deportes_str == '' ? '&pref_deportes='+$(this).parent().text():','+$(this).parent().text());
            });
            var pref_libre 	= $('#libre input:checked');
            var pref_libre_str = '';
            $.each(pref_libre, function(){
                pref_libre_str += (pref_libre_str == '' ? '&pref_libre='+$(this).parent().text():','+$(this).parent().text());
            });
            var tarjeta_lista = '';
            
            for(var cont = 0; cont < tarjetas.length; cont++) {
                tarjeta_lista += 'tarjeta[]='+tarjetas[cont];
                if (cont < tarjetas.length - 1) tarjeta_lista += '&';
            }
            
            var str = $('#formRegistro').serialize();
            
            $('#formRegistro input[name=rut]').val( formatearRUT($('#formRegistro input[name=rut]').val()) );
            
            cargandov2(true);
            $.ajax({
                data: str+(tarjeta_lista != '' ? '&'+tarjeta_lista:'')+pref_musica_str+pref_peliculas_str+pref_deportes_str+pref_libre_str+'&email_referido='+$('#email_referido').val(),
                type: 'POST',
                url: 'includes/funciones_parser.php',
                success: function(response) {
                    if (response.estado) {
                        loginBox_reservas();
                    }
                    $('.feedback').show().html('<strong style="color:#336600">'+response.estado_mensaje+'</strong>');
                    if (promo_activa) setTimeout(function() { 
                            window.location.href = REQUESTURI;
                        }, 5000);
                    cargandov2(false);
                    //$('#formRegistro .botonRegistro').removeAttr('disabled');
                }
            });
            return false;
        }/*,
        debug : true*/
    });

    $('#xformRegistro').unbind('submit').submit(function(){
        $('#formRegistro .botonRegistro').attr('disabled', 'disabled');
        var todook = true, tarjeta_lista = '', campos = '';

        for(var cont = 0; cont < tarjetas.length; cont++) {
                tarjeta_lista += 'tarjeta[]='+tarjetas[cont];
                if (cont < tarjetas.length - 1) tarjeta_lista += '&';
        }

        $(this).find('.requerido').each(function(){
                if (jQuery.trim($(this).val()) == "") {
                        $(this).addClass("falta");
                        campos += (campos == '' ? '':', ') + $(this).attr('title');
                        todook = false;
                } else {
                        $(this).removeClass("falta");
                        if ($(this).attr('name') == 'email' && !$(this).val().match(/^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/)) {
                                $(this).addClass("falta");
                                todook = false;
                        }
                        if ($(this).attr('name') == 'rut' && !validarRut($(this))) {
                                $(this).addClass("falta");
                                todook = false;
                        }
                }
        });
        if (tarjeta_lista == '') {
                todook = false;
                campos += (campos == '' ? '':', ') + "Tarjeta BIP";
                $('#nro_tarjeta').addClass("falta");
        }
        if (todook) {
            //preferencias
            var pref_musica 	= $('#musica input:checked');
            var pref_musica_str = '';
            $.each(pref_musica, function(){
                pref_musica_str += (pref_musica_str == '' ? '&pref_musica='+$(this).parent().text():','+$(this).parent().text());
            });

            var pref_peliculas 	= $('#peliculas input:checked');
            var pref_peliculas_str = '';
            $.each(pref_peliculas, function(){
                pref_peliculas_str += (pref_peliculas_str == '' ? '&pref_peliculas='+$(this).parent().text():','+$(this).parent().text());
            });

            var pref_deportes 	= $('#deportes input:checked');
            var pref_deportes_str = '';
            $.each(pref_deportes, function(){
                pref_deportes_str += (pref_deportes_str == '' ? '&pref_deportes='+$(this).parent().text():','+$(this).parent().text());
            });

            var pref_libre 	= $('#libre input:checked');
            var pref_libre_str = '';
            $.each(pref_libre, function(){
                pref_libre_str += (pref_libre_str == '' ? '&pref_libre='+$(this).parent().text():','+$(this).parent().text());
            });
            //

            var str = $(this).serialize();
            $('#formRegistro input[name=rut]').val(formatearRUT($('#formRegistro input[name=rut]').val()));
            cargandov2(true);
            $.ajax({
                data: str+(tarjeta_lista != '' ? '&'+tarjeta_lista:'')+pref_musica_str+pref_peliculas_str+pref_deportes_str+pref_libre_str+'&email_referido='+$('#email_referido').val(),
                type: 'POST',
                url: 'includes/funciones_parser.php',
                success: function(response) {
                    if (response.estado) {
                        loginBox_reservas();
                    }
                    $('.feedback').html('<strong style="color:#336600">'+response.estado_mensaje+'</strong>');
                    if (promo_activa) setTimeout(function() { 
                            window.location.href = REQUESTURI;
                        }, 5000);
                    cargandov2(false);
                    $('#formRegistro .botonRegistro').removeAttr('disabled');
                }
            });
        } else {
            $('#formRegistro .botonRegistro').removeAttr('disabled');
            $('.feedback').html('<p><strong style="color:#c00;">Sus datos NO han sido guardados</strong>. Complete los siguientes campos: '+campos+'</p>').show();
        }

        return false;
    });

    $('#nro_tarjeta_logico').lol();
    $('#nro_tarjeta_fisico').lol();
    actualizarListaTarjetas();
});

$.fn.otro = function () {
    var contenedor = $(this);
    if ($(this).hasClass("pref")) {
        $(this).find('input[type=text]').
            attr('name', 'pref_'+contenedor.attr('id')+'_otro').
            attr('disabled', 'disabled').
            parent().
            css({'display':'none'});
        $(this).find('input[type=checkbox]:last').
            unbind('click').
            click(function(){
                if($(this).attr('checked')) $(this).parent().
                    parent().
                    find('input[type=text]').
                    removeAttr('disabled').
                    parent().
                    css({'display':'block'});
                else $(this).parent().
                     parent().
                     find('input[type=text]').
                     attr('disabled', 'disabled').
                     parent().
                     css({'display':'none'});
            });	
    }
    if ($(this).hasClass("prefselect")) {
        $(this).unbind('change').change(function(){
            if ($(this).val().indexOf("Otro") != -1) $('input[name='+contenedor.attr('name')+'_otro]').
                removeAttr('disabled').
                addClass('requerido').
                parent().
                css({'display':'block'});
            else $('input[name='+contenedor.attr('name')+'_otro]').
                attr('disabled', 'disabled').
                    removeClass('requerido').
                    parent().
                    css({'display':'none'});
        });
    }
    return true;
};

$('#musica').otro();
$('#peliculas').otro();
$('#deportes').otro();
$('#libre').otro();
$('#grupo_familiar').otro();
$('#profesion').otro();

$('#grupo_familiar').change();
$('#profesion').change();

$.each(pref, function(i, val) {
    if (val.length > 0)
        $.each(val, function(){
            if (this.indexOf("(otro)") != -1) {
                $("#"+i+" label:contains('Otro (Especificar)')").find('input:not(:checked)').click();
                $("#"+i+" input[name=pref_"+i+"_otro]").val(this.replace("(otro)", "")).removeAttr('disabled').parent().css({'display':'block'});
            }
            $("#"+i+" label:contains('"+this+"')").find('input').attr('checked', 'checked').change();
        });
});
