var butacas_seleccionadas = 0; //se utiliza en la selección de butacas

/**
 * Oculta el listado de pases y muestra el listado de cupos y precios del pase que interesa al usuario
 * @param id_pase
 * @return
 */
function seleccionar_pase(id_pase)
{
    YAHOO.util.Dom.addClass('ficha_listado_pases', 'oculto');
    YAHOO.util.Dom.removeClass('ficha_info_pase_' + id_pase, 'oculto');
}

/**
 * Muestra el listado de pases y oculta el listado de cupos y precios del pase especificado
 * @param id_pase
 * @return
 */
function deseleccionar_pase(id_pase)
{
    YAHOO.util.Dom.removeClass('ficha_listado_pases', 'oculto');
    YAHOO.util.Dom.addClass('ficha_info_pase_' + id_pase, 'oculto');
    reset_seleccionar_precio(id_pase);
}

/**
 * Setea en cero la cantidad de pases cuando se cambia de fecha
 * @param id_pase
 * @return
 */
function reset_seleccionar_precio(id_pase)
{
    var mostrar_alerta = false;
    var form_pase = eval('document.form_reservar_pase_' + id_pase);
    for(var i = 0; i <= form_pase.elements.length; i++)
    {
    	if(typeof form_pase.elements[i] != 'undefined') 
    		form_pase.elements[i].selectedIndex = 0;
    }
}

/**
 * Muestra el listado de pases y oculta el mapa de butacas
 */
function ocultar_mapa_butacas()
{
    YAHOO.util.Dom.removeClass('ficha_listado_pases', 'oculto');
    YAHOO.util.Dom.addClass('caja_mapa_butacas_exterior', 'oculto');
}

/**
 * Muestra el contenido del id especificado.
 * @param id_info
 * @return
 */
function mostrar_info(id_info)
{
    YAHOO.util.Dom.removeClass(id_info, 'oculto');
}

/**
 * Oculta el contenido del id especificado.
 * @param id_info
 * @return
 */
function ocultar_info(id_info)
{
    YAHOO.util.Dom.addClass(id_info, 'oculto');
}

/**
 * Muestra un panel centrado en la pantalla con el plano general de la sala
 * @param imagen_plano
 * @return
 */
function ver_plano_sala(imagen_plano)
{
    //cargar la imagen
    $('img_plano_sala').src = imagen_plano;

    //mostrar panel
    var oPanel_plano = null;
    oPanel_plano = new YAHOO.widget.Panel("panel_plano_sala",{ width:"80%", height:"auto", constraintoviewport: true, underlay:"none", close:true, draggable:false, modal:false,zIndex:1000,context:['menu','tl','tr']});
    oPanel_plano.render(document.body);
    oPanel_plano.show();
}

/**
 * Cuando no hay selección de butacas, verifica que no se han reservado más o menos entradas de la cuenta y
 * hace submit del formulario del pase para ir al carrito. Es un remake de la función reservar de funciones_fichas.js 
 * @param id_pase
 * @param cupo_disponible
 * @return
 */
function reservar_pase(id_pase, cupo_disponible, regalo, multi)
{
    var entradas_seleccionadas = 0;
    var form_pase = eval('document.form_reservar_pase_' + id_pase);
    for(var i = 0; i <= form_pase.elements.length; i++)
    {
        if(form_pase.elements[i] && form_pase.elements[i].type == 'select-one')
        {
            entradas_seleccionadas = parseInt(entradas_seleccionadas) + parseInt(form_pase.elements[i].value);
        }
    }
    
    //no se ha seleccionado ninguna entrada
    if(entradas_seleccionadas < 1)
    {
        alert(str_no_entradas);
        return;
    }
    
    //se han seleccionado más entradas que el cupo disponible
    if(entradas_seleccionadas > cupo_disponible)
    {
        alert(str_max_ent_ini + cupo_disponible + str_max_ent_fin);
        return;
    }
    else{ // Miramos si se pasa el parámetro is_regalo para activar regalo en carrito
    	var is_regalo = document.getElementById("is_regalo");
    	if(is_regalo){
	        if(regalo==true && entradas_seleccionadas==1 || regalo==true && multi=='0')
	        	is_regalo.value=true;
	        else is_regalo.value=false;
    	}
        form_pase.submit();
    }
}

/**
 * Hace submit del formulario del mapa de butacas para proceder con la reserva
 * @param total_entradas
 * @return
 */
function reservar_mapa_butacas(total_entradas)
{
    if(total_entradas != $('cont_entradas').value)
    {
        alert(str_no_butacas);
        return;
    }
    document.form_mapa_butacas.submit();        
}
/**
 * Cuando el usuario quiere reservar entradas de un pase con mapa de butacas, muestra mapa para que las escoja.
 * Es un remake de la función Mapa de funciones_fichas.js 
 * @param id_pase
 * @param id_cupo
 * @param cupo_disponible
 * @return
 */
function mostrar_mapa_butacas(id_pase, id_cupo, cupo_disponible)
{
    var entradas_seleccionadas  = 0;
    var form_pase  = eval('document.form_reservar_pase_' + id_pase);
    var lista_precios = '';
    for(var i = 0; i <= form_pase.elements.length; i++)
    {
        if(form_pase.elements[i] && form_pase.elements[i].type == 'select-one')
        {
            entradas_seleccionadas = parseInt(entradas_seleccionadas) + parseInt(form_pase.elements[i].value);

            //en lista precios montamos el listado de precios que el usuario quiere reservar en para poderlos concatenar a la url
            lista_precios += '&' + form_pase.elements[i].name + '=' + form_pase.elements[i].value;
        }
    }
    
    //no se ha seleccionado ninguna entrada
    if(entradas_seleccionadas < 1)
    {
        alert(str_no_entradas);
        return;
    }
    
    //se han seleccionado más entradas que el cupo disponible
    if(entradas_seleccionadas > cupo_disponible)
    {
        alert(str_max_ent_ini + cupo_disponible + str_max_ent_fin2);
        return;
    }

    var vrandom  = Math.floor(Math.random()*1000001);

    load_url = url_do_ajax + '?&pg_action=mapa&id_cupo=' + id_cupo + '&rnd=' + vrandom + '&entradas=' + entradas_seleccionadas + lista_precios;
    YAHOO.util.Connect.asyncRequest("GET", load_url, {
         timeout: 10000,
         success: function(o) {
            if(!o.responseText) alert(str_no_disponible);
            else
            {
            	butacas_seleccionadas = 0;
                //ocultar tanto el listado de pases como la caja con la información de este pase en particular
                YAHOO.util.Dom.addClass('ficha_listado_pases', 'oculto');
                YAHOO.util.Dom.addClass('ficha_info_pase_' + id_cupo, 'oculto');
                //alert(o.responseText);
                //asignar la respuesta de la llamada ajax a la caja de mapa butacas
                $('caja_mapa_butacas_contenido').innerHTML = o.responseText;
                
                //mostrar el mapa de butacas
                YAHOO.util.Dom.removeClass('caja_mapa_butacas_exterior', 'oculto');
            }
         },
         failure: function() {
            alert(str_no_disponible);
            return false;
         }
       });
}

/**
 * Cuando hay mapa de butacas y un usuario selecciona un precio en un cupo, automáticamente se ponen a 0 las
 * selecciones que hubiera hecho en precios de otros cupos.
 * Si se resetea algún precio. Mostraremos un mensaje de alerta al usuario. Esta función és un remake de resetSelección
 * @param id_pase
 * @param id_cupo
 * @return 
 */
function seleccionar_precio(id_pase, id_cupo, estado_mapas)
{
    if(!YAHOO.util.Dom.hasClass('caja_mapa_butacas_exterior','oculto'))
        YAHOO.util.Dom.addClass('caja_mapa_butacas_exterior', 'oculto'); 
    if(estado_mapas == 2){
        if(YAHOO.util.Dom.hasClass('btn_continuar_'+id_pase,'hidden')){
            YAHOO.util.Dom.addClass('btn_comprar_'+id_pase,'hidden');
            YAHOO.util.Dom.removeClass('btn_continuar_'+id_pase,'hidden');
        }
        stock_cupo = document.getElementById("stock_cupo_"+id_cupo).value;
        document.getElementById("a_btn_continuar").onclick =  function (){
            mostrar_mapa_butacas(id_pase,id_cupo, stock_cupo);
            return false;
        };        
    }
    else if(estado_mapas != 2 && YAHOO.utils.Dom.hasClass('btn_comprar_'+id_pase,'hidden')){
        YAHOO.util.Dom.addClass('btn_continuar_'+id_pase,'hidden');
        YAHOO.util.Dom.removeClass('btn_comprar_'+id_pase,'hidden');
    }
    var mostrar_alerta = false;
    //recorremos todos los elementos del formulario del pase seleccionado y si no tiene la clase "cupo_".id_cupo reseteamos el valor del campo
    var form_pase = eval('document.form_reservar_pase_' + id_pase);
    for(var i = 0; i <= form_pase.elements.length; i++)
    {
        if(form_pase.elements[i] && form_pase.elements[i].type == 'select-one')
        {
            if (!YAHOO.util.Dom.hasClass(form_pase.elements[i].id, 'cupo_' + id_cupo))
            {
                if (form_pase.elements[i].value > 0)
                {
                    //hemos hecho reset en algun campo: avisar al usuario
                    mostrar_alerta = true;
                }
                form_pase.elements[i].value = '0';
            }
        }
    }
    
    if (mostrar_alerta)
    {
        alert(str_cambio_seleccion_butacas);
    }
}

/**
 * Se utiliza para seleccionar las butacas una a una en el mapa
 * @param obj
 * @param num_butaca
 * @param entradas
 * @return
 */
function dibuja(obj, num_butaca, entradas)
{
    if(obj.className == 'butaca_seleccionada')
    {
        obj.className = 'butaca_4';
        $('v_butaca_' + num_butaca).value = '4';
        butacas_seleccionadas--;
    }
    else if(obj.className == 'butaca_4')
    {
        if(entradas == butacas_seleccionadas)
        {
            if(entradas == 1) alert(str_butaca_seleccionada);
            else alert(str_butacas_seleccionadas_ini + entradas + ' butacas.\nSi deseas otras ubicaciones, debes deseleccionarlas primero.');
            return;
        }
        else
        {
            obj.className = 'butaca_seleccionada';
            $('v_butaca_' + num_butaca).value = '32';
            butacas_seleccionadas++;
        }
    }

    $('cont_entradas').value = butacas_seleccionadas;
    $('cont_entradas2').innerHTML = butacas_seleccionadas;
}

var panel_mapa;
/**
 * Muestra el mapa de google
 * @param latitud
 * @param longitud
 * @param descripcion
 * @param google_key
 * @param e
 * @return
 */
function show_mapa(latitud, longitud, descripcion, google_key, e)
{
    if(!GMap2) {
        setTimeout(function() {
            show_mapa(latitud, longitud, descripcion, google_key, e);
            }, 500);
    }

    //api de google
    if(isObject(panel_mapa)) panel_mapa.destroy();
    
    posx = e.clientX + document.body.scrollLeft  + document.documentElement.scrollLeft;
    posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
    
    panel_mapa = new YAHOO.widget.Panel("panel_mapa",
    {
        width:'407px',
        height:'430px',
        underlay:"none",
        close:true,
        draggable:true,
        fixedcenter:true,
        constraintoviewport: true,
        zIndex:1000      
    }
    );

    titulo=str_mapa;

    panel_mapa.setHeader(titulo.toUpperCase());

    panel_mapa.setBody('<div id="mi_mapa" style="width: 400px;height: 400px;"></div>');
    panel_mapa.render(document.body);

    var map = new GMap2(document.getElementById("mi_mapa"));
    map.addControl(new GSmallMapControl());//map.addControl(new GLargeMapControl());
    var point = new GLatLng(parseFloat(latitud),parseFloat(longitud));
    map.setCenter(point, 15);  
    map.openInfoWindow(point, document.createTextNode(descripcion));   
}

/**
 * Muestra el contenido completo de la descripción del evento
 * @return
 */
function mostrar_descripcion()
{
    if (document.getElementById('link_ver_mas').firstChild.nodeValue == str_leer_mas)
    {
        document.getElementById('link_ver_mas').firstChild.nodeValue = str_ocultar;
        document.getElementById('descripcion').style.overflow = "visible";
        document.getElementById('descripcion').style.height = "";
    }else{
        document.getElementById('link_ver_mas').firstChild.nodeValue = str_leer_mas;
        document.getElementById('descripcion').style.overflow = "hidden";
        document.getElementById('descripcion').style.height = "50px";
    }
}
