﻿function validaCondicionesReserva(source, arguments) {
    if ($('#chkCondiciones').attr('checked')) {
        arguments.IsValid=true;
    } else {
        arguments.IsValid=false;
    }
}

function showPopup(url) {window.open(url);}

function TipoHabitacion() {
    this.Codigo;
    this.Descripcion;
    this.DistribucionMinima =  new Array();
    this.DistribucionMaxima = new Array();
};
	
function Distribucion(ad, ni, cu) {
    this.Adultos = ad;
    this.Ninos = ni;
    this.Cunas = cu;
};

function distribucionPersonasValida(tipo, adultos, ninos, cunas) {
    if (isNaN(adultos)) adultos = 0;
    if (isNaN(ninos)) ninos = 0;
    if (isNaN(cunas)) cunas = 0;

    var disponibilidadValida = false;
    for (i=0;i<tipo.DistribucionMinima.length;i++) {
        if ((adultos >= tipo.DistribucionMinima[i].Adultos) && (ninos >= tipo.DistribucionMinima[i].Ninos) && (cunas >= tipo.DistribucionMinima[i].Cunas)) {
            disponibilidadValida = true;
            break;
        }
    }
    
    if (disponibilidadValida) {
        disponibilidadValida = false;
        for (i=0;i<tipo.DistribucionMaxima.length;i++) {
            if ((adultos <= tipo.DistribucionMaxima[i].Adultos) && (ninos <= tipo.DistribucionMaxima[i].Ninos) && (cunas <= tipo.DistribucionMaxima[i].Cunas)) {
                disponibilidadValida = true;
                break;
            }
        }
    }
    
    return disponibilidadValida;
};

function CompruebaDisponibilidad(habitacion) {
    var id = '#ControlDisponibilidad'+habitacion;
    if ($(id).text() == '') {
        id = '#ControlDisponibilidadOns'+habitacion;
    }
    
    var tipoHabitacion;
                
    for (i=0;i<TiposHabitacionDisponibles.length;i++) { 
        if (TiposHabitacionDisponibles[i].Codigo == $(id+'_txtTipoHabitacionApartamento').attr('value')) {
            tipoHabitacion = TiposHabitacionDisponibles[i];
            break;
        }
    }

    if (tipoHabitacion != null) {
        var distribucionValida = false;
        distribucionValida = distribucionPersonasValida(tipoHabitacion, Number($(id+'_txtAdultos').attr('value')), Number($(id+'_txtNinos').attr('value')), Number($(id+'_txtCunas').attr('value')));

        if (!distribucionValida) {
            $(id+'_Error').css('visibility', 'visible');
            $(id+'_Error').css('display', 'block');
        } else { 
            $(id+'_Error').css('visibility', 'hidden');
            $(id+'_Error').css('display', 'none');
        }
    }
}

function CompruebaDisponibilidad2(id) {
    if ($(id) != null) {
        var tipoHabitacion;
                    
        for (i=0;i<TiposHabitacionDisponibles.length;i++) { 
            if (TiposHabitacionDisponibles[i].Codigo == $(id+'_txtTipoHabitacionApartamento').attr('value')) {
                tipoHabitacion = TiposHabitacionDisponibles[i];
                break;
            }
        }

        if (tipoHabitacion != null) {
            var distribucionValida = false;
            distribucionValida = distribucionPersonasValida(tipoHabitacion, Number($(id+'_txtAdultos').attr('value')), Number($(id+'_txtNinos').attr('value')), Number($(id+'_txtCunas').attr('value')));

            if (!distribucionValida) {
                $(id+'_Error').css('visibility', 'visible');
                $(id+'_Error').css('display', 'block');
            } else { 
                $(id+'_Error').css('visibility', 'hidden');
                $(id+'_Error').css('display', 'none');
            }
        }    
    }
}

function CambiaNumeroHabitaciones(habitaciones) {
    for(i=1;i<=10;i++) {
        var id = '#habitacion'+i.toString();
        if (i > habitaciones) {
            $(id).css('display', 'none');
        } else {
            $(id).css('display', 'block');
        }
    }
}

function ValidaTarjetaCredito(cardNumber, cardType) {
    var isValid = false;
    var ccCheckRegExp = /[^\d ]/;
    isValid = !ccCheckRegExp.test(cardNumber);

    if (isValid) {
        var cardNumbersOnly = cardNumber.replace(/ /g,"");
        var cardNumberLength = cardNumbersOnly.length;
        var lengthIsValid = false;
        var prefixIsValid = false;
        var prefixRegExp;

        if (cardType == "" || cardType == undefined) {
            /* MasterCard */
            prefixRegExp = /^5[1-5]/;
            prefixIsValid = prefixRegExp.test(cardNumbersOnly);
            
            if (prefixIsValid) {
                cardType="mastercard"
            } else {
                /* Visa */
                prefixRegExp = /^4/;
                prefixIsValid = prefixRegExp.test(cardNumbersOnly);
                
                if (prefixIsValid) {
                    cardType="visa"
                } else {
                    /* American Express */
                    prefixRegExp = /^3(4|7)/;
                    prefixIsValid = prefixRegExp.test(cardNumbersOnly);
                    
                    if (prefixIsValid) {
                        cardType="amex"
                    }
                }
            }
        }

        switch(cardType) {
            case "mastercard":
                lengthIsValid = (cardNumberLength == 16);
                prefixRegExp = /^5[1-5]/;
                break;

            case "visa":
                lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
                prefixRegExp = /^4/;
                break;

            case "amex":
                lengthIsValid = (cardNumberLength == 15);
                prefixRegExp = /^3(4|7)/;
                break;

            default:
                prefixRegExp = /^$/;
                lengthIsValid = (cardNumberLength == 16);
        }

        prefixIsValid = prefixRegExp.test(cardNumbersOnly);
        isValid = prefixIsValid && lengthIsValid;
    }

    if (isValid) {
        var numberProduct;
        var numberProductDigitIndex;
        var checkSumTotal = 0;

        for (digitCounter = cardNumberLength - 1; digitCounter >= 0; digitCounter--) {
            checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
            digitCounter--;
            numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
            
            for (var productDigitCounter = 0; productDigitCounter < numberProduct.length; productDigitCounter++) {
                checkSumTotal += 
                parseInt(numberProduct.charAt(productDigitCounter));
            }
        }

        isValid = (checkSumTotal % 10 == 0);
    }

    return isValid;
}

function ValidaCaducidadTarjetaCredito(mes, anyo) {
    hoy = new Date();
    expira = new Date(anyo, mes);
    
    if (hoy.getTime() > expira.getTime()) {
        return false;
    } else {
        return true;
    }
}

function ValidaCvvCvc(CvvCvc) {
    if (isNaN(CvvCvc)) {
        return false;
    } else {
        if (CvvCvc.length < 3) {
            return false;
        } else {
            if ((Number(CvvCvc) == 0) || (Number(CvvCvc) < 0)) {
                return false;
            } else {
                return true;
            }
        }
    }
}
