/*
 * 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      = '';

    /* 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;
}


/* Ejecuta la funcion que indiquemos en el inicio
 * @param funcion   la funcion que ha de ejecutarse al cargar
 *
 * */
function ejecutaAlInicio(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();
 */
function HTMLInyecta(){
    /* 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
 */
function HTMLInsertarTexto(){
    eval('contenedor="#' + this.contenedor + '"');
    //$(contenedor).text(this.html);
    $(contenedor).html(this.html);
}

/* Esconde el contenedor
 * @param contenedor   el elemento HTML a mostrar o esconder
 */
function Esconde(){
    eval('contenedor="#' + this.contenedor + '"');
    $(contenedor).hide();
}
/* Muestra el contenedor
 * @param contenedor   el elemento HTML a mostrar o esconder
 */
function Muestra(){
    eval('contenedor="#' + this.contenedor + '"');
    $(contenedor).show();
}
/* Alterna la visualizacion del contenedor
 * @param contenedor   el elemento HTML a mostrar o esconder
 */
function Alterna(){
    eval('contenedor="#' + this.contenedor + '"');
    $(contenedor).toggle();
}

/* Alterna la visualizacion del contenedor
 * @param contenedor   el elemento HTML a mostrar o esconder
 */
function AlternaPresentacion(){
    eval('contenedor="#' + this.contenedor + '"');
    $(contenedor).slideToggle();
}
/* Obtener posicion del elemento metodo 2
 * @param objetivo   el elemento HTML a obtener la informacion
 * @return .x .y
 */
function getPosition(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
 */
function getPosicion(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
 */
function setPosicion(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
 */
function getDimensiones(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
 */
function displayNone(objetivo){
   document.getElementById(objetivo).style.display="none";
}
/* Cambia la propiedad css display a  Block
 * @param objetivo   el elemento HTML
 */
function displayBlock(objetivo){
   document.getElementById(objetivo).style.display="block";
}
/* Cambia la propiedad css display a  block o a none
 * @param objetivo   el elemento HTML
 */
function displayToggle(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
 */
function setXY(objetivo,x,y){
	document.getElementById(objetivo).style.left=x+"px";
	document.getElementById(objetivo).style.top=y+"px";
}




