var barrasslide = new Array();
var cuadrosslide = new Array();
var clicked = false;
var fronteraizq;
var fronterader;
var result;
var gigante;
var buffermousemove;
var posicionX = 0;
var mitadcuadro;
var llamadofinal=0;
var leftfinal;
var targetactual;
var miestilo;
var califViveinActual = 0;
var califUsuariosActual = 0;
var precioActual = 0;
var precioMaximo = 0;
var longitudBarra;

function clickme(e){
    fronteraizq = obtenerLeftAbsoluto(barrasslide[0]);
    fronterader = toInt(obtenerEstiloDiv(barrasslide[0],"width"))+toInt(fronteraizq);
    longitudBarra = fronterader-fronteraizq;
    if(window.event){
        e = window.event;
        targetactual = e.srcElement;
    }    
    else{
       targetactual = e.target;
    }
    clicked = true;
}
function donotclickme(e){
    e = (window.event) ? window.event : e;
    if(clicked){
        clicked = false;
        llamadofinal = toInt(e.clientX)-toInt(fronteraizq);
        if (e.clientX <= fronteraizq)
           llamadofinal = 0;
        else if(e.clientX >= fronterader)
           llamadofinal = longitudBarra;
           
        cambiarCalificacion(llamadofinal);
    }
}
function moveme(e){
    e = (window.event) ? window.event : e;
    if(!clicked)
        return;
    if (e.clientX >= fronteraizq && e.clientX <= fronterader){
        leftfinal = e.clientX-fronteraizq-mitadcuadro;
        targetactual.style.left=leftfinal+"px";
        llamadofinal = toInt(e.clientX)-toInt(fronteraizq);
        switch(targetactual.id){
           case "cuadrito_vivein":              
              mostrarencaja = ((llamadofinal*5)/(longitudBarra)).toString();
              document.getElementById("calif_vivein_variable").innerHTML = mostrarencaja.substring(0,3);
              break;
           case "cuadrito_usuario":
              mostrarencaja = ((llamadofinal*5)/(longitudBarra)).toString();
              document.getElementById("calif_usu_variable").innerHTML = mostrarencaja.substring(0,3);
              break;           
           case "cuadrito_precio":
                mostrarencaja = ((llamadofinal*precioMaximo)/(longitudBarra)).toString();
                if(mostrarencaja.length > 5)
                        mostrarencaja = mostrarencaja.substring(0,mostrarencaja.indexOf(".")-3);
                else
                        mostrarencaja = mostrarencaja.substring(0,mostrarencaja.length-3);
                document.getElementById("costo_variable").innerHTML = "&#36;"+mostrarencaja;
              break;           
        }
    }
}
function initControl(){
    
    result = document.getElementById("result");
        barrasslide = getElementsByClassName(document,"div","slider");
    for(i=0; i<barrasslide.length; i++){
       var imgtmp = barrasslide[i].getElementsByTagName("div");
       var imgtmp = getElementsByClassName(barrasslide[i], "div", "knob");
       for(j=0; j<imgtmp.length; j++){
          cuadrosslide.push(imgtmp[j]);
       }
    }
    
    
        gigante = document.getElementById("hv_content");

        if(window.addEventListener){
       for(i=0; i<cuadrosslide.length; i++){
          cuadrosslide[i].addEventListener("mousedown",clickme,true);
       }
    }
    else{
       for(i=0; i<cuadrosslide.length; i++){
             cuadrosslide[i].onmousedown=clickme;
       }
    }
        
    if(window.addEventListener){
        window.addEventListener("mouseup",donotclickme,true);
        window.addEventListener("mousemove",moveme,false);
    }else{
        gigante.onmouseup=donotclickme;
        gigante.onmousemove=moveme;
    }
    if(barrasslide.length>0){
       fronteraizq = obtenerLeftAbsoluto(barrasslide[0]);
       aux = obtenerEstiloDiv(barrasslide[0],"width");
       fronterader = toInt(aux)+toInt(fronteraizq);
       longitudBarra = fronterader-fronteraizq;
    }
    
    mostrarBarrasCalificaciones();
}

function obtenerEstiloDiv(elemento,estilo)
{
    if(elemento.width)
    {
       return elemento.estilo;
    }
    style = estilo;
    value=elemento.style.estilo;
    if (!value) {
          if (document.defaultView && document.defaultView.getComputedStyle) {
            var css = document.defaultView.getComputedStyle(elemento, null);
            value = css ? css[style] : null;
          } else if (elemento.currentStyle) {
            value = elemento.currentStyle[style];
          }
    }
    if(value)
        return value.replace("px","");
    else
        return 0;
}
function toInt(variable){
    return variable*1;
}
function obtenerLeftAbsoluto(divc){
    var leftAbsoluto = divc.offsetLeft;
    while(divc.parentNode){
        divtmp = divc.parentNode;
        if (divtmp.tagName) {
            if(divtmp.tagName!="body" && obtenerEstiloDiv(divtmp,"position")=="relative" && divtmp.offsetLeft){
                leftAbsoluto+=divtmp.offsetLeft;
                return leftAbsoluto;
            }
        }else {
            return leftAbsoluto;
        }
        divc = divtmp;
    }
    return leftAbsoluto;
}

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrReturnElements = new Array();
    var arrElements;
    if(!oElm) {oElm = document;}
    arrElements = oElm.getElementsByTagName(strTagName);    
    //var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);    
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    if(arrElements){
        for(var i=0; i < arrElements.length; i++){
            oElement = arrElements[i];      
            if(oRegExp.test(oElement.className)){
                arrReturnElements.push(oElement);
            }   
        }
    }
    return (arrReturnElements)
}

    
    //Valida el si la paginacion requerida esta en el rango de paginas que hay
    function validarNumeroPagina(pagina,numPaginas)
    {
      if(pagina<=0 || pagina > numPaginas)
      {
         return false; 
      }
      return true;
    }


    function cambiarPagina(frmPaginacion , paginaNueva , tampagina, formatoRecurso , tipo , soloLugar) {
        frmPaginacion.numeroPagina.value = paginaNueva;
        
        if (tampagina != '') {
            frmPaginacion.tampagina.value = tampagina;
        }
        
        if (formatoRecurso != '') {
            frmPaginacion.formato.value = formatoRecurso;
        }
        
        if (tipo != '') {
            frmPaginacion.tipo.value = tipo;
        }
        
        frmPaginacion.soloLugar.value = soloLugar;
        
        if (validarHerramientasBus(frmPaginacion)) {
            frmPaginacion.submit();
        }
        
    }   
    function cambiarPaginaBusqueda(frmPaginacion , paginaNueva , tampagina, formatoRecurso , tipo , soloLugar, numPags) {
    
        if(formatoRecurso=="LUGAR")
           var pagina = document.frm_paginacion_lugar.numeroPaginaTemp.value;
        else if (formatoRecurso=="EVENTO")
           var pagina = document.frm_paginacion_evento.numeroPaginaTemp.value;
        else
           var pagina=1;
           
        var numPaginas = numPags;

        if(pagina=="") {
           alert("No has ingresado ninguna página. Intenta nuevamente.");
           return false;
        }
        if(pagina <= 0)
        {
           alert('La página solicitada es inválida. Intenta nuevamente.');
           return false;
        }
        if(pagina>numPaginas) {
           alert('El número de página solicitado es mayor al número de paginaciones. Intenta nuevamente.'+pagina);
           return false;
        }
    
        frmPaginacion.numeroPagina.value = paginaNueva;
        
        if (tampagina != '') {
            frmPaginacion.tampagina.value = tampagina;
        }
        
        if (formatoRecurso != '') {
            frmPaginacion.formato.value = formatoRecurso;
        }
        
        if (tipo != '') {
            frmPaginacion.tipo.value = tipo;
        }
        
        frmPaginacion.soloLugar.value = soloLugar;
        
        if (validarHerramientasBus(frmPaginacion)) {
            frmPaginacion.submit();
        }
        
    }
     
    
    function validarHerramientasBus(frmPaginacion) {
        if (frmPaginacion.numeroPagina.value != '') {
            var valorNumeroPagina = frmPaginacion.numeroPagina.value;
            if (!esEntero(valorNumeroPagina)) {
                alert('Debe digitar un número en el campo.');
                return false;
            }
            valorNumeroPagina = eval(valorNumeroPagina);
            var valorTotalPaginas = eval(frmPaginacion.totalPaginas.value);
            if (valorNumeroPagina > valorTotalPaginas) {
                alert('No puede digitar un valor mayor al total de paginas');
                return false;
            }
            frmPaginacion.pagina.value = valorNumeroPagina;
        }
        return true;
    }
        
    function esEntero (numero) {
        var reInteger = /^\d+$/;
        return reInteger.test(numero)
    }
    
    function cambiarOrden(nuevoOrden , formatoBusqueda, tipoFormato) {
        if (document.frm_busqueda.orden.value == nuevoOrden) {
            if (document.frm_busqueda.ascdesc.value == 'ASC') {
                document.frm_busqueda.ascdesc.value = 'DESC';
            }else {
                document.frm_busqueda.ascdesc.value = 'ASC';
            }
        }else {
            document.frm_busqueda.ascdesc.value = 'ASC';
            if (nuevoOrden == 'PRO_VOTACION_VIVEIN' || nuevoOrden == 'PRO_VOTACION_USUARIO') {
                document.frm_busqueda.ascdesc.value = 'DESC';
            }
        }
        
        document.frm_busqueda.formato.value = formatoBusqueda;
        if (formatoBusqueda == 'LUGAR') {
            document.frm_busqueda.soloLugar.value = 'SI';
        }else {
            document.frm_busqueda.soloLugar.value = '';
        }
        document.frm_busqueda.tipo.value = tipoFormato;
        cambiarParametroBusqueda('orden' , nuevoOrden);
    }
    
    function cambiarCalificacion (paramllamadofinal) {
        var totalValorCal;
        switch (targetactual.id) {
            case 'cuadrito_vivein': 
                totalValorCal = (paramllamadofinal*5)/(longitudBarra);
                totalValorCal = totalValorCal;
                campoCalificacion = 'califVivein';
            break;
            case 'cuadrito_usuario':
                totalValorCal = (paramllamadofinal*5)/(longitudBarra);
                totalValorCal = totalValorCal;
                campoCalificacion = 'califUsuarios';
            break;
            case 'cuadrito_precio':
                totalValorCal = (paramllamadofinal*precioMaximo)/(longitudBarra);
                totalValorCal = totalValorCal;
                campoCalificacion = 'precio';
            break;
        }
        //alert(paramllamadofinal+" - "+totalValorCal);
        //return;  /// yooo
        
        
        cambiarParametroBusqueda(campoCalificacion , totalValorCal);
    }
    
    function cambiarParametroCaracteristica (caracteristica) {
        caracteristicaActual = document.frm_busqueda.caracteristica.value;
        if (caracteristicaActual != '') {
            caracteristicaActual = caracteristicaActual + ';' + caracteristica
        }else {
            caracteristicaActual = caracteristica
        }
        cambiarParametroBusqueda('caracteristica' , caracteristicaActual);
    }
    
    function mostrarBarrasCalificaciones(){
//        barrasslide = getElementsByClassName(document,"div","slider");
        for(i=0; i<barrasslide.length; i++){
           var imgtmp = barrasslide[i].getElementsByTagName("div");
           var imgtmp = getElementsByClassName(barrasslide[i], "div", "knob");
           for(j=0; j<imgtmp.length; j++){
              cuadrosslide.push(imgtmp[j]);
           }
        }
        if(cuadrosslide.length>0){
           var posicion;
           mitadcuadro = (obtenerEstiloDiv(cuadrosslide[0],"width"))/2;
           for(i=0; i<cuadrosslide.length; i++){       
               posicion = "-"+mitadcuadro+"px";
               switch (cuadrosslide[i].id) {
                   case 'cuadrito_vivein':
                        if (califViveinActual > 0 && califViveinActual != '') {
                            posicion = (longitudBarra-mitadcuadro)*eval(califViveinActual)/5;
                            posicion = posicion+"px";
                        }
                    break;
                    case 'cuadrito_usuario':
                        if (califUsuariosActual > 0 && califUsuariosActual != '') {
                            posicion = (longitudBarra-mitadcuadro)*eval(califUsuariosActual)/5;
                            posicion = posicion+"px";
                        }
                    break;
                    case 'cuadrito_precio':
                        if (precioActual < precioMaximo && precioActual != '') {
                            //posicion = (longitudBarra-mitadcuadro)*eval(precioActual)/eval(precioMaximo);
                            posicion = (longitudBarra)*eval(precioActual)/eval(precioMaximo);
                            posicion = posicion+"px";
                        }
                        else{
                            posicion = (longitudBarra-mitadcuadro)+"px";
                        }
                    break;
               }
               
               cuadrosslide[i].style.display="block";
               cuadrosslide[i].style.left = posicion;
           }
        }    
    }
    
function cambiarParametroBusqueda(tipovalor,newvalor){
    var elm = document.getElementsByName(tipovalor);
    document.frm_busqueda.pagina.value = 1;
    if (tipovalor != 'orden' && tipovalor != 'califVivein' && tipovalor!= 'califUsuarios' && tipovalor!= 'precio') {
        adicionCaracter = '';
        if (document.frm_busqueda.historico_busqueda.value != ''){
            adicionCaracter = ';';
        }
        document.frm_busqueda.historico_busqueda.value = document.frm_busqueda.historico_busqueda.value + adicionCaracter + tipovalor;
    }
    
    if(elm.length >0){
        elm[0].value = newvalor;
    }
    document.frm_busqueda.submit();
}

function onEnterBus( evt, frmPaginacion , paginaNueva , tampagina, formatoRecurso , tipo , soloLugar, numPags) {
    var keyCode = null;
    if( evt.which ) {
        keyCode = evt.which;
    } 
    else if( evt.keyCode ) {
        keyCode = evt.keyCode;
    }
    if( 13 == keyCode ) {
        cambiarPaginaBusqueda(frmPaginacion , paginaNueva , tampagina, formatoRecurso , tipo , soloLugar, eval(numPags));
        return false;
    }
    return true;
}

function cambiarHistoricoBusqueda(historicoBusqueda, valoresBusqueda) {
    arrayHistorico = historicoBusqueda.split(";");
    arrayValores = valoresBusqueda.split(";");
    limpiarValoresBusqueda();
    for (num = 0; num < arrayHistorico.length; num++) {
        campo = arrayHistorico[num];
        if (arrayHistorico[num] != ''){
            valorCampo = arrayValores[num];
            //valorElemento = document.frm_busqueda.eval(campo).value;
            valorElemento = document.frm_busqueda.elements[campo].value;
            if (campo == 'caracteristica' || campo == 'caracteristica_adi'){
                if (valorElemento != '') {
                    valorElemento = valorElemento + ';';
                }
            }else {
                valorElemento = '';
            }
            //document.frm_busqueda.eval(campo).value = valorElemento + valorCampo; 
            document.frm_busqueda.elements[campo].value = valorElemento + valorCampo; 
            
        }
    }
    document.frm_busqueda.historico_busqueda.value = historicoBusqueda;
    document.frm_busqueda.submit();
}

function limpiarValoresBusqueda(){
    document.frm_busqueda.califVivein.value     = '';
    document.frm_busqueda.califUsuarios.value   = '';
    document.frm_busqueda.precio.value          = '';
    document.frm_busqueda.caracteristica.value  = '';
    document.frm_busqueda.categoria.value       = '';
    document.frm_busqueda.fecha.value           = '';
    document.frm_busqueda.zona.value            = '';
    document.frm_busqueda.caracteristica_adi.value    = '';
    document.frm_busqueda.historico_busqueda.value = '';
}


function getURLParam(strParamName){
    var strReturn = null;
    var strHref = window.location.href;
    if ( strHref.indexOf("?") > -1 ){
        var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
        var aQueryString = strQueryString.split("&");
        for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
            if (
                    aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){
                var aParam = aQueryString[iParam].split("=");
                strReturn = aParam[1];
                break;
            }
        }
    }
    return unescape(strReturn);
}

function masmenos(idfiltro,idlabel,cuantos){
    var lista = document.getElementById(idfiltro);
    if (lista){    
        var items = lista.getElementsByTagName('li');
            
        if(cuantos>=items.length){
            return;
        }
                for (i = cuantos; i < items.length-1; i++){    
            if(lista.getAttribute("rel")=="cerrado" && items[i].style.className!="expandible_filtro")
                items[i].style.display = 'block';
            else if(lista.getAttribute("rel")=="abierto" && items[i].style.className!="expandible_filtro")
                items[i].style.display = 'none';                
        }
        
        if(lista.getAttribute("rel")=="cerrado"){
            lista.setAttribute("rel","abierto");
            document.getElementById(idlabel).innerHTML = "&uarr; Menos opciones";
        }
        else if(lista.getAttribute("rel")=="abierto"){
            lista.setAttribute("rel","cerrado");
            document.getElementById(idlabel).innerHTML = "&darr; M&aacute;s opciones";
        }
        else{
            alert("Error de DHTML");
        }
    }
}

