var totalPrice = 0;
var layersCreated = false;

function enviaFormulario(){
    var f = document.getElementById("formCompra");
    f.submit();
}

function aceptarDatos(descuento){
    
    var f = document.getElementById("formCompra");
    var errores = new Array();
    
    if( f.nombre.value == "" ){
        errores.push(locale['el_campo'] + locale['full_name'] + locale['no_puede']);
    }
                    
    var reg_exp = /\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i
    
    if( f.email.value == "" ){
        errores.push(locale['el_campo'] + '"Email"' + locale['no_puede']);
    }else{
        if ( !reg_exp.test( f.email.value )){
            errores.push( locale['email_valido'] );
        }
    }
    
    if (f.fecha.value.length == 0){
        errores.push( locale['el_campo'] + locale['fecha'] + locale['no_puede']);
    }
    
    if( f.pais.selectedIndex == 0 ){
        errores.push(locale['el_campo'] + locale['pais'] + locale['no_puede']);
    }
    
    if( f.ninyos.selectedIndex == 0 && f.adultos.selectedIndex == 0){
        errores.push(locale['debe_seleccionar'] + locale['persona_debe']);
    }
    
    if( f.hotel.selectedIndex == 0 ){
        errores.push(locale['introducir_hotel']);
    }
    
    if (f.hotel.value == 'otro_lugar' && f.otro_lugar.value == ''){
        errores.push(locale['introducir_lugar']);
    }
    
    if( errores.length ){
        alert( locale['corrija'] + ":\n\n"+errores.join("\n") );
    }else{
        
    mostrarResumen();
        
    }
}

function mostrarResumen(){
    var f = document.getElementById("formCompra");
    jQuery.get( "/remotecall.es.html", {funcion:"getImporteDescuento",codigo:f.descuento.value,importe: totalReserva}, escribirResumen );
}

function volver(){
    document.getElementById("cajaResumen").style.display = "none";
    jQuery('#layerTrans').hide();     
}

function escribirResumen( datos ){
    eval(datos); // genera la variable result con los datos de descuento.
    descuento = result.valor;
    porcentaje = result.porcentaje;       
    
    var f = document.getElementById("formCompra");
    var contenido = document.getElementById("contenidoResumen");
    var html = "";
    
    var numAdultos = parseFloat(f.adultos.value);
    var numNinyos = parseFloat(f.ninyos.value);
    var importe = 0;
    
    //Se crea la capa trans
    if (layersCreated == false) {
    	if ( $.browser.msie && parseInt($.browser.version,10)<7  ) {
            jQuery('body').prepend('<div id="layerTrans"><iframe id="layerTransIE6"></iframe></div>');
    	} else {
    		jQuery('body').prepend('<div id="layerTrans"></div>');
    	}
    } else {
        jQuery('#layerTrans').css('display','block');
    }
    
    //Se posiciona
    var resumenLayer = jQuery('#cajaResumen');
    var anchoVentana = jQuery(window).width();
    var leftNecesario = (anchoVentana / 2) - 354;
    resumenLayer.css('left',leftNecesario + 'px');
    
    //
    //Se completan los datos del resumen
    //
    jQuery('#dataFechaExcursion').html(f.fecha.value);
    
    var cadPasajeros = '';

    if (f.adultos.value > 0){
        if(f.adultos.value == 1){
            cadPasajeros = '1 ' + locale['adulto'];
        } else {
            cadPasajeros = f.adultos.value + ' ' + locale['adultos'];
        }
    }
    
    if ((f.adultos.value > 0) && (f.ninyos.value > 0)){
        cadPasajeros += ' y ';
    }
    
    if (f.ninyos.value > 0){
        if(f.ninyos.value == 1){
            cadPasajeros += '1 ' + locale['ninyo'];
        } else {
            cadPasajeros += f.ninyos.value + ' ' + locale['ninyos'];
        }
    }
    
    jQuery('#dataPersonas').html(cadPasajeros);
    
    var oArea = getSelected(f.area);
    jQuery('#dataZona').html(oArea.text);

    if (f.area.value == '0') {
        jQuery('#cajaResumenLugarRecogida').css('display','none');
    }else{
        jQuery('#cajaResumenLugarRecogida').css('display','block');        
        if( f.hotel.value == '0' ){            
            jQuery('#hotelContainer').css('display','none');
            jQuery('#lugarContainer').css('display','none');
        }else{
            jQuery('#hotelContainer').css('display','block');
            jQuery('#lugarContainer').css('display','block');
            
            if (f.hotel.value == 'otro_lugar') {
                jQuery('#dataHotel').html('Otro lugar');
                jQuery('#lugarContainer').css('display', 'block');
                jQuery('#dataLugar').html(f.otro_lugar.value);
            }else {
                jQuery('#dataHotel').html(f.hotel.options[f.hotel.selectedIndex].text);
                jQuery('#lugarContainer').css('display', 'none');
            }
        }
    }
    
    jQuery('#dataNombre').html(f.nombre.value);
    
    if (f.direccion.value != 0){
        jQuery('#direccionContainer').css('display','block');
       jQuery('#dataDireccion').html(f.direccion.value);    
    } else {
        jQuery('#direccionContainer').css('display','none');
    }
    
    if( f.cp.value != '' ){
        jQuery('#cpContainer').css('display','block');
        jQuery('#dataCP').html(f.cp.value);
    }else{
        jQuery('#cpContainer').css('display','none');
    }
    
    if (f.poblacion.value != '') {
        jQuery('#ciudadContainer').css('display','block');
        jQuery('#dataCiudad').html(f.poblacion.value);
    } else {
        jQuery('#ciudadContainer').css('display','none');
    }
    jQuery('#dataPais').html(f.pais.options[f.pais.selectedIndex].text);
    jQuery('#dataEmail').html(f.email.value);
    
    if (f.telefono.value != ''){
        jQuery('#dataTelefono').css('display','block');
       jQuery('#dataTelefono').html(f.telefono.value);  
    } else {
       jQuery('#telefonoContainer').css('display','none');
    }
    
    if (f.comentarios.value != '') {
        jQuery('#comentariosContainer').css('display','block');
        jQuery('#dataComentario').html(f.comentarios.value);
    } else {
        jQuery('#comentariosContainer').css('display','none');
    }
    
    jQuery('#dataTotalPrice').html(formatCurrency(totalReserva));
        
    if (descuento == 0){
        jQuery('#sectorDescuento').css('display','none');
    } else {
        jQuery('#sectorDescuento').css('display','block');
        jQuery('#dataCodigoDescuento').html(f.descuento.value);
        
        if (porcentaje > 0) {
            jQuery('#dataValorDescuento').html('(' + porcentaje + '%) -' + formatCurrency(descuento));
        }else{
            jQuery('#dataValorDescuento').html('-' + formatCurrency(descuento));
        }
    }
    
    //var totalPriceFloat = string2float(totalPrice);
    var totalTotal = formatCurrency(Math.max( totalReserva - descuento, 0 ));
    
    jQuery('#dataFinalPrice').html(totalTotal);
    
    //Se muestran los datos
    if (layersCreated == false) {
        jQuery('body').prepend(resumenLayer);
        jQuery('#resumenContainer').empty();
    } else {
        resumenLayer.css('display','block');
    }
    
    layersCreated = true;
    
}

function round_decimals(original_number, decimals) {
    var result1 = original_number * Math.pow(10, decimals);
    var result2 = Math.round(result1);
    var result3 = result2 / Math.pow(10, decimals);
    return (result3);
}

/**
 * Si num es 2.345 devuelve 2.34
 * Si num es 10 devuelve 10.00
 * @param {Integer} num
 */
function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g,'');
    if(isNaN(num)) num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num*100+0.50000000001);
    cents = num%100;
    num = Math.floor(num/100).toString();
    if(cents<10) cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
        num = num.substring(0,num.length-(4*i+3))+
        num.substring(num.length-(4*i+3));
          
    if (num.length > 3){
            if (num.length == 4){
                var parte1 = num.substr(1,3);
                var parte2 = num.substr(0,1);
                num = parte2 + millarSeparator + parte1; 
             } else if (num.length == 5){
                var parte1 = num.substr(2,4);
                var parte2 = num.substr(0,2);
                num = parte2 + millarSeparator + parte1; 
            }
    }     
            
    return (((sign)?'':'-') + num + decimalSeparator + cents);
}            

/**
 * Actualiza el precio del apartado excursion
 * @param {String} areaId
 * @param {DOMobj} comboObj
 */
function actualizaPrecio(areaId, comboObj){
    
    //Objetos
    var subTotalTarget = '#' + areaId + ' .subTotalPrice';
    var totalTarget = '#totalPrice';
    var basePrice;
    var subTotal;
    
    //Valores
    var cantidad = comboObj.value;
    if (areaId == 'preciosAdulto'){
        subTotal = subTotalAdulto = precioAdulto * cantidad;
        basePrice = precioAdulto;
    }else {
        subTotal = subTotalNinyo = precioNinyo * cantidad;
        basePrice = precioNinyo;
    }
    
    //Subtotal
    jQuery(subTotalTarget).html(formatCurrency(parseFloat(subTotal)));
    
    //Se actualiza el total
    totalReserva = subTotalNinyo + subTotalAdulto;
    jQuery(totalTarget).text(formatCurrency(parseFloat(totalReserva)));
    //totalPrice = formatCurrency(total);
    
}

/**
 * Borra todas las opciones de un select
 * @param {DOMobj} campo
 */
function borrarSelect(campo){
    while (campo.options.length) {
        campo.remove(0);
    }
    campo.options[0] = new Option("...","0");
    campo.selectedIndex = 0;
}

/**
 * Obté l'option seleccionat d'un selector
 * @param {Object} oSel
 */
function getSelected(oSel){
    for(var i=0;i<oSel.options.length;i++){
        if (oSel.options[i].selected){
            return oSel.options[i]; 
        }
    }
    return null;
}

/**
 * Marca un element (o varis) d'un selector
 * @param {Object} oSel
 * @param string valor
 */
function marcaSelect(oSel,valor){
    for(i=0;i<oSel.options.length;i++){
        oSel.options[i].selected = (oSel.options[i].value == valor); 
    }
}

/**
 * Actualiza el listado de hoteles
 * @param {Integer} idArea
 */
function actualizaHoteles(areaZona){
    
    var idArea = areaZona.split("-")[0];
    var cmbHoteles = document.getElementById('campoHotel');
    borrarSelect(cmbHoteles);
    for( var i in hotelesIDX[idArea] ){
        cmbHoteles.options[cmbHoteles.options.length] = new Option(hotelesIDX[idArea][i],i);
    }
    cmbHoteles.options[cmbHoteles.options.length] = new Option(locale['otro_lugar'],"otro_lugar");
    
    // Limpiamos el input de "otro lugar de recogida".
    verificaOtro(0);
}

/**
 * Verifica si al seleccionar un hotel se debe mostrar
 * el input de texto
 * @param {String} valorSelect
 */
function verificaOtro(valorSelect){
    jQuery('#mensajeRecogida').fadeIn('normal');
    document.getElementById('campoRecogida').value = '';
    if (valorSelect == 'otro_lugar'){
        jQuery('#otroLugarArea').fadeIn('fast');
    } else {
        jQuery('#otroLugarArea').fadeOut('fast');
    }
}

