/*---------------
/ eJuniper.com
/ --------------*/


var MargenInicial=20; // En pixeles, el margen desde arriba de la página hasta el inicio del menu
var MargenSuperior=20; // En pixeles, el margen que dejaremos entre el buscador y la parte de arriba del menu
var ns = (navigator.appName.indexOf("Netscape") != -1);
var d = document;


/** Funciones "públicas" **/

// Inicializamos los valores y empezamos a hacer "flotar" al menú.
// MInicial es el margen superior que hay entre el menu y la parte superior de la página
// MSuperior es el margen superior que hay entre el menu y la parte superior del navegador
// Id es el identificador del elemento/menu a mover
// MInicial y MSuperior son distintos por si hay un logo o cualquier elemento al principio de la
// página. Al ir bajando, la altura del menu se fija a "MSuperior", pero al estar arriba, si la
// altura estuviese fijada a "MSuperior" se podría tapar el logo; por tanto se fija la altura a
// MInicial 
// MargenAbajo es el margen que siempre quedará respecto al pie de la página. Si es -1 entonces 
// no se toma en cuenta, si tiene otro valor entonces el menu no bajará a partir de esa posicion
// Este parámetro es útil si hay algún elemento que "tapa" el camino del menú
function InicializarValores(MInicial, MSuperior, id, MargenAbajo) {
	MargenInicial=MInicial;
	MargenSuperior=MSuperior;
	JSFX_FloatDiv(id,0,0,MargenAbajo).floatIt();
}




/** Funciones "privadas" **/

function JSFX_FloatDiv(id, sx, sy, MargenAbajo) {
	var el=d.getElementById?d.getElementById(id):d.all?d.all[id]:d.layers[id];
	var px = document.layers ? "" : "px";
	window[id + "_obj"] = el;
	if(d.layers)el.style=el;
	el.cx = el.sx = sx;
	el.cy = el.sy = sy;
	
	el.PosAbs=function(x,y){this.style.left=x;this.style.top=y;};
	el.sP=function(x,y){this.style.left=x+px;this.style.top=y+px;};

	el.floatIt=function()
	{
		var pX, pY;
		pX = (this.sx >= 0) ? 0 : ns ? innerWidth : 
		document.documentElement && document.documentElement.clientWidth ? 
		document.documentElement.clientWidth : document.body.clientWidth;
		pY = ns ? pageYOffset : document.documentElement && document.documentElement.scrollTop ? 
		document.documentElement.scrollTop : document.body.scrollTop;
		if(this.sy<0) 
		pY += ns ? innerHeight : document.documentElement && document.documentElement.clientHeight ? 
		document.documentElement.clientHeight : document.body.clientHeight;
		this.cx += (pX + this.sx - this.cx)/2;
		this.cy += (pY + this.sy - this.cy - MargenInicial + MargenSuperior)/2;
		// Movemos el cuadro solo si podemos!!
		// Miramos si la altura del cuadro es más grande que la ventana o si llegamos abajo del todo
		if  (MargenAbajo != -1 && PosicionScroll()+AltoElemento(id)>document.body.scrollHeight-MargenAbajo) {
				this.style.top=document.body.scrollHeight-MargenAbajo-AltoElemento(id)- MargenInicial + MargenSuperior;

		}else if (PosicionScroll()<=MargenInicial){
				this.PosAbs(this.cx,MargenSuperior/2);
		}else if (AltoElemento(id)+MargenSuperior<=AltoVentana()) {
				this.sP(this.cx, this.cy);
		}

		
		setTimeout(this.id + "_obj.floatIt()", 75);
	}
	return el;
}



function PosicionScroll() {
    var pos = (document.body.scrollTop) ? document.body.scrollTop : document.documentElement.scrollTop;
    return pos;
}

function AltoElemento(id){
return document.getElementById(id).offsetHeight;
}
function AltoVentana() {
	var myHeight = 0
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myHeight = window.innerHeight;
	} else if( document.documentElement && (document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myHeight = document.documentElement.clientHeight;
	} else if( document.body && (document.body.clientHeight ) ) {
		//IE 4 compatible
		myHeight = document.body.clientHeight;
}
	return myHeight;
}
