/*
 * Libreria JavaScript
 * EINSMER. Todos los derechos reservados
 *
 * Es necesaria la libreria JQuery para esta version (basado en Jquery-1.3.1)
 *
 */

function EINSMERLIB(){
    /* Propiedades */
    this.contenedor         = null;
    this.html              = '';
    this.ejecutarAlCargar   = null;
    this.textoCargando      = '';
    this.semaforoCalendario = null;

    /* Metodos */
    /*this.HTMLInyecta = HTMLInyecta;
    this.HTMLInsertarTexto      = HTMLInsertarTexto;
    this.Muestra                        = Muestra;
    this.Esconde                        = Esconde;
    this.Alterna                        = Alterna;
    this.AlternaPresentacion    = AlternaPresentacion;
    this.getPosicion                    = getPosicion;
    this.setPosicion                    = setPosicion;
    this.getDimensiones             = getDimensiones;
    this.getPosition			= getPosition;
    this.displayBlock			= displayBlock;
    this.displayNone			= displayNone;
    this.displayToggle			= displayToggle;
    this.setXY					= setXY;*/
}

/* Funcion de test
 */
EINSMERLIB.prototype.dummy = function (){
    alert("Dummy");
}



EINSMERLIB.prototype.cajaSugerencias = function (input,div,urlsugerencias){
    $("#"+input).keyup( function() {
            this.contenedor = "#"+div;
            $(this.contenedor).css("visibility","visible");
            var busqueda = "#"+input;
            var parametros= escape($(busqueda).attr('value')).replace(/\+/g,'%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40');
            this.url=urlsugerencias+"?palabra="+parametros;
            
             $(this.contenedor).load(this.url, null, (function() {
                    $("ldi").each(
                       function(index){
                            var inp = "#"+input
                            var strPulsada = $(inp).attr("value");
                            if(strPulsada!="")  {
                                $(this).html($(this).text().replace(parametros,"<strong>$&</strong>","i"));
                                $(this).css("cursor","pointer");
                            } else {
                                 $(this).html("");
                            }
                           }
                    );
                    $("ldi").click(function(){
                        $(busqueda).attr("value", $(this).text());
                        //Esconder despues de clickar
                        $(this).parent().css("visibility","hidden");
                    });

                    $("ldi").append("<br/>");

            }));


   })
}

/* Codifica una uri
 *@param str es el string a codificar
 * */
EINSMERLIB.prototype.codificaurl = function(str) {
    return escape(str).replace(/\+/g,'%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40');
}

// ********************************************************************
// ********FUNCIONALIDADES DE CONTENIDO HTML Y POSICIONES ***************
// ********************************************************************

/* Ejecuta la funcion que indiquemos en el inicio
 * @param funcion   la funcion que ha de ejecutarse al cargar
 *
 * */

EINSMERLIB.prototype.ejecutaAlInicio = function (funcion){
    $(document).ready(function(){
        //Aqui tu codigo
        if (funcion!=null) funcion()
    });
}

/* Carga HTML desde una pagina y coloca el contenido
 * cargado sobre el elemento de la pagina actual
 * con el ID especificado
 * @param url   la direccion de la pagina con el contenido a inyectar
 * @param textoCargando   el texto que debe mostrarse mientras se carga
 * @param contenedor    el identificador del div, span, p o cualquier otro elemento de la pagina en el que se inyectara el contenido cargado
 * @param ejecutarAlCargar   la funcion que se ha de ejecutar despues de cargar el contenido (no es string)
 * Ejemplo:
 *       function alerta(){
             alert("HTML Cargado.");
         }
 *      var a = new EINSMERLIB();
 *      a.ejecutarAlCargar=alerta;
 *      a.contenedor='contenido';
 *      a.textoCargando='Cargando';
 *      a.url='contenidoacargar.html';
 *      a.HTMLInyecta();
 */
EINSMERLIB.prototype.HTMLInyecta = function (){
    /* Mostrar texto mientras carga */
    if(this.textoCargando) this.html = this.textoCargando;
    this.HTMLInsertarTexto();
    /* Cargar contenido bajo el mismo dominio */
    eval('contenedor="#' + this.contenedor + '"');
    if (this.ejecutarAlCargar) {
        $(contenedor).load(this.url, this.ejecutarAlCargar());
    } else {
        $(contenedor).load(this.url);
    }
}

/* Muestra el texto en el contenedor
 * @param contenedor   el elemento HTML donde se mostrara el texto
 * @param html    el texto a mostrar
 */
EINSMERLIB.prototype.HTMLInsertarTexto = function (){
    eval('contenedor="#' + this.contenedor + '"');
    //$(contenedor).text(this.html);
    $(contenedor).html(this.html);
}

/* Esconde el contenedor
 * @param contenedor   el elemento HTML a mostrar o esconder
 */
EINSMERLIB.prototype.Esconde = function (){
    eval('contenedor="#' + this.contenedor + '"');
    $(contenedor).hide();
}
/* Muestra el contenedor
 * @param contenedor   el elemento HTML a mostrar o esconder
 */
EINSMERLIB.prototype.Muestra = function (){
    eval('contenedor="#' + this.contenedor + '"');
    $(contenedor).show();
}
/* Alterna la visualizacion del contenedor
 * @param contenedor   el elemento HTML a mostrar o esconder
 */
EINSMERLIB.prototype.Alterna = function (){
    eval('contenedor="#' + this.contenedor + '"');
    $(contenedor).toggle();
}

/* Alterna la visualizacion del contenedor
 * @param contenedor   el elemento HTML a mostrar o esconder
 */
EINSMERLIB.prototype.AlternaPresentacion = function (){
    eval('contenedor="#' + this.contenedor + '"');
    $(contenedor).slideToggle();
}
/* Obtener posicion del elemento metodo 2
 * @param e   el elemento HTML a obtener la informacion
 * @return .x .y
 */
EINSMERLIB.prototype.getPosition = function (e){
		var left = 0;
		var top  = 0;

		while (e.offsetParent){
			left += e.offsetLeft;
			top  += e.offsetTop;
			e     = e.offsetParent;
		}

		left += e.offsetLeft;
		top  += e.offsetTop;

		return {x:left, y:top};
	}
/* Obtener posicion del elemento
 * @param objetivo   el elemento HTML a obtener la informacion
 * @return .left .top
 */
EINSMERLIB.prototype.getPosicion = function (objetivo){
    eval('contenedor="#' + objetivo + '"');
    return $(contenedor).show().position();
}
/* Setea la posicion del elemento
 * @param contenedor   el elemento HTML a mover
 * @param left   posicion left
 * @param top   posicion top
 */
EINSMERLIB.prototype.setPosicion = function(l,t){
    eval('contenedor="#' + this.contenedor + '"');
	$(contenedor).css({ position: "absolute", marginLeft: 0, marginTop: 0, top: t, left: l });
    //alert("left:"+l+" Top:"+t);
    //document.getElementById(this.contenedor).style.left=l;
    //document.getElementById(this.contenedor).style.top=t;
}
/* Obtiene la anchura y altura de un elemento
 * @param objetivo   el elemento HTML
 */
EINSMERLIB.prototype.getDimensiones = function(objetivo){
   eval('contenedor="#' + objetivo + '"');
    return {width: $(contenedor).show().css('width'), height: $(contenedor).show().css('height')};
}
/* Cambia la propiedad css display a  none
 * @param objetivo   el elemento HTML
 */
EINSMERLIB.prototype.displayNone = function(objetivo){
   document.getElementById(objetivo).style.display="none";
}
/* Cambia la propiedad css display a  Block
 * @param objetivo   el elemento HTML
 */
EINSMERLIB.prototype.displayBlock = function (objetivo){
   document.getElementById(objetivo).style.display="block";
}
/* Cambia la propiedad css display a  block o a none
 * @param objetivo   el elemento HTML
 */
EINSMERLIB.prototype.displayToggle = function(objetivo){
   document.getElementById(objetivo).style.display=(document.getElementById(objetivo).style.display == 'block' ? 'none' : 'block' );
}
/* Cambia las propiedades left y top del objetivo
 * @param objetivo   el elemento HTML
  * @param x   posicion left sin px
   * @param y   posicion top sin px
 */
EINSMERLIB.prototype.setXY = function(objetivo,x,y){
	document.getElementById(objetivo).style.left=x+"px";
	document.getElementById(objetivo).style.top=y+"px";
}



// creaAjax crea un objeto AJAX y en caso de no error, lo devuelve
EINSMERLIB.prototype.creaAjax = function(){
    var objetoAjax=false;
    try{
        /*Para navegadores distintos a internet explorer*/
        objetoAjax = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
            /*Para explorer*/
            objetoAjax = new ActiveXObject("Microsoft.XMLHTTP");
        }catch (E){
            objetoAjax = false;
        }
    }
    if (!objetoAjax && typeof XMLHttpRequest!='undefined') {
        objetoAjax = new XMLHttpRequest();
    }
    //objetoAjax.setRequestHeader("charset", "utf-8");
    //objetoAjax.setRequestHeader(, value)
    return objetoAjax;
}

//variable global para controlar el objeto ajax desde cualquier JS
var http_request = EINSMERLIB.prototype.creaAjax();
/**
 * Function que genera una llamada ajax a la url y parametros pasados por parametro.
 **/


EINSMERLIB.prototype.makeGETRequest = function(url, parameters, nombrefuncionRespuesta) {
    http_request.onreadystatechange = nombrefuncionRespuesta;
    http_request.open('GET', (url+parameters), true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", parameters.length);
    http_request.setRequestHeader("Connection", "close");
    http_request.send("");
}


EINSMERLIB.prototype.makePOSTRequest = function(url, parameters, nombrefuncionRespuesta) {
    //alert('url='+url+' param='+parameters);
    http_request.onreadystatechange = nombrefuncionRespuesta;
    http_request.open('POST', url, true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", 0);
    http_request.setRequestHeader("Connection", "close");
    http_request.send(parameters);
}



/**
 * Funcion que recoge los parametros del formulario de contacta i realiza la llamada ajax para enviar la consulta
 */
EINSMERLIB.prototype.sendForm = function (){
    var argumentos ="", rutaWidgetJSP ="";

    switch (document.getElementById("idForm").value){
        
        case "1":
            argumentos = "&nomEsdeveniment=" + encodeURI( document.getElementById("nomEsdeveniment").value ) +
                "&Lloc=" + encodeURI( document.getElementById("Lloc").value )+
                "&Data=" + encodeURI( document.getElementById("Data").value )+
                "&Mail=" + encodeURI( document.getElementById("Mail").value )+
                "&Web=" + encodeURI( document.getElementById("Web").value )+
                "&Consulta=" + encodeURI( document.getElementById("Consulta").value );

            rutaWidgetJSP = "Beans/formAltaEvento.jsp";
   
        break;
          
          
        case "2":
            argumentos = "&Nom=" + encodeURI( document.getElementById("Nom").value ) +
                "&Cognoms=" + encodeURI( document.getElementById("Cognoms").value )+
                "&Direccio=" + encodeURI( document.getElementById("Direccio").value )+
                "&Poblacio=" + encodeURI( document.getElementById("Poblacio").value )+
                "&CP=" + encodeURI( document.getElementById("CP").value )+
                "&Pais=" + encodeURI( document.getElementById("Pais").value )+
                "&Telefon=" + encodeURI( document.getElementById("Telefon").value )+
                "&Mail=" + encodeURI( document.getElementById("Mail").value )+
                "&Web=" + encodeURI( document.getElementById("Web").value )+
                "&Carrec=" + encodeURI( document.getElementById("Carrec").value )+
                "&TEmpresa=" + encodeURI( document.getElementById("TEmpresa").value )+
                "&Comentario=" + encodeURI( document.getElementById("Comentario").value );

            rutaWidgetJSP = "Beans/formContacta.jsp";

        break;

        case "3":
            argumentos = "&Nom=" + encodeURI( document.getElementById("Nom").value ) +
                "&Cognoms=" + encodeURI( document.getElementById("Cognoms").value )+
                "&Empresa=" + encodeURI( document.getElementById("Empresa").value )+
                "&idioma=" + encodeURI( document.getElementById("idioma").value )+
                "&fecha=" + encodeURI( document.getElementById("fecha").value )+
                "&Mail=" + encodeURI( document.getElementById("Mail").value );

            rutaWidgetJSP = "Beans/formNewsLetter.jsp";

        break;

        case "4":
            argumentos = "&Nom=" + encodeURI( document.getElementById("Nom").value ) +
                "&Cognoms=" + encodeURI( document.getElementById("Cognoms").value )+
                "&Direccio=" + encodeURI( document.getElementById("Direccio").value )+
                "&Poblacio=" + encodeURI( document.getElementById("Poblacio").value )+
                "&CP=" + encodeURI( document.getElementById("CP").value )+
                "&Pais=" + encodeURI( document.getElementById("Pais").value )+
                "&Telefon=" + encodeURI( document.getElementById("Telefon").value )+
                "&Mail=" + encodeURI( document.getElementById("Mail").value )+
                "&Web=" + encodeURI( document.getElementById("Web").value )+
                "&Carrec=" + encodeURI( document.getElementById("Carrec").value )+
                "&TEmpresa=" + encodeURI( document.getElementById("TEmpresa").value )+
                "&Comentario=" + encodeURI( document.getElementById("Comentario").value );
                
            rutaWidgetJSP = "Beans/formAdhesio.jsp";

        break;

        default:
            argumentos=""
            rutaWidgetJSP="";

        break;
        
    }

    if(argumentos!=""&&rutaWidgetJSP!="")
        einsmer.makePOSTRequest(rutaWidgetJSP, argumentos, einsmer.respuestaAjaxSendForm);
}


EINSMERLIB.prototype.respuestaAjaxCalendario = function (){
    if (http_request.readyState==4){
        document.getElementById("capaCalendario").innerHTML=http_request.responseText;
    }
}

/**
 * Funcion que se ejecutará en respuesta al Ajax del envio de consultas
 */
EINSMERLIB.prototype.respuestaAjaxSendForm = function (){
    if (http_request.readyState==1){
        document.getElementById("contenedorForm").innerHTML=".......";
    }else if (http_request.readyState == 4) {
        document.getElementById("contenedorForm").innerHTML=http_request.responseText;
    }
}


