//------------------------------------------------------------------------
// Generales
//------------------------------------------------------------------------
function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}

function checkBrowser(){
	this.ver=navigator.appVersion
	this.dom=document.getElementById?1:0
	
	this.ie4=(document.all && !this.dom)?1:0;
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom);
	if(this.ie6) this.ie5=1;
	
	this.ns4=(document.layers && !this.dom)?1:0;	
	this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0;
	this.ns6 =(window.innerWidth)? true:false;
	if(this.ns6) this.ns5=1;
	this.bw=(this.ie5 || this.ie4 || this.ns4 || this.ns5)
	return this
}

bw=new checkBrowser() 

function makeObj(divID)
{
	var obj = MM_findObj(divID);
	//if(bw.ns4) obj = document.layers[divID];
	if(bw.ie4) obj = obj.style; // document.all[divID].style;
	if(bw.ie5 || bw.ns5) obj = obj.style; //document.getElementById(divID).style;
	return obj;
}
//------------------------------------------------------------------------
// SCROLL
//------------------------------------------------------------------------

var speed=50     // velocidad de scroll
var timer;       // Temporizador de repeticiones
var initialised; // indica si se ha de mover hacia arriba, porque se ha movido hacia abajo.

function ConstructObject(obj,nest) { 
	nest=(!nest) ? '':'document.'+nest+'.' 
	//this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0; 
	this.el = MM_findObj(obj);
	this.objcss=bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+'document.'+obj):0; 
	this.scrollHeight=bw.ns4?this.objcss.document.height:this.el.offsetHeight 
	this.clipHeight=bw.ns4?this.objcss.clip.height:this.el.offsetHeight 
	this.up=MoveAreaUp;this.down=MoveAreaDown; 
	this.MoveArea=MoveArea; this.x; this.y; 
	this.obj = obj + "Object" 
	eval(this.obj + "=this") 
	return this 
} 
	
function MoveArea(x,y) { 
	this.x=x;this.y=y 
	this.objcss.left=this.x 
	this.objcss.top=this.y 
} 
	 
function MoveAreaDown(move) { 
	//alert(-recorrido_texto);
	//alert(this.y);
	if(this.y>= (-recorrido_texto)) { 
		this.MoveArea(0,this.y-move) 
		mueve_bola(move);
		timer=setTimeout(this.obj+".down("+move+")",speed) 
	} 
} 
	
function MoveAreaUp(move) { 
	if(this.y<0) { 
		this.MoveArea(0,this.y-move) 
		mueve_bola(move);
		timer=setTimeout(this.obj+".up("+move+")",speed) 
	} 
} 
	 
//esta funcion mueve la bolita del scroll arriba y abajo 
var restoTotal = 0;
var recorrido_bola;
var recorrido_texto;

function mueve_bola(vel) {
	var pelota,alto
	//sumar=(bw.ns4)? vel*34/3:(bw.ns5)? vel*17/3: vel*3/3 //esta operacion es la que hay que cambiar para ajustar la bola a las flechas

	if ((parseInt(recorrido_texto)==0) || (parseInt(recorrido_bola) == 0)) return;
	var sumarstr = new String((recorrido_bola*vel) / recorrido_texto);
	var sumar = parseInt(sumarstr);
	if (isNaN(sumar)) sumar = 0;

	resto = parseInt(sumarstr.substring(sumarstr.indexOf('.')+1,sumarstr.indexOf('.')+3));
	
	//alert(sumar); alert(recorrido_bola); alert(recorrido_texto); alert(sumarstr); alert(vel); alert(resto); 
	
		if (bw.ns4) arriba = MM_findObj("divSubeScroll"); else arriba = makeObj("divSubeScroll");
		if (bw.ns4) pelota = MM_findObj("divBola"); else pelota = makeObj("divBola");;
		if (bw.ns4) abajo = MM_findObj("divBajaScroll"); else abajo = makeObj("divBajaScroll");
	
	alto=parseInt(pelota.top);
	restoTotal += resto;
	
	if (restoTotal >= 100 ) { if (vel>0) sumar++; else sumar--; restoTotal -= 100; }
	
	var newalto = alto+sumar;
	if (vel>0) {
		if ((newalto+10) >= parseInt(abajo.top)) newalto=(parseInt(abajo.top)-10);
	}
	else {
		if (newalto <= (parseInt(arriba.top)+10)) newalto=(parseInt(arriba.top)+10);
	}
	pelota.top=newalto; 
	
} 

//------------------------------------------------------------------------
// CENTRADO DE CAPAS
//------------------------------------------------------------------------
var anchominimo= 748 //748
var altominimo=526 //326
var alto,ancho,anchoanterior,altoanterior;

function centra_capas_ns4() {
	
/*	var objeto,capas;
	var tamx=window.screen.width;
	var tamy=window.screen.height;
	capas=document.layers;
	for(i=0;i<capas.length;i++) {
		objeto=capas[i];
		if(tamx==800) 
			reposiciona_capa(objeto,tamx,tamy+50,800,600);
			else if(tamx==1024) reposiciona_capa(objeto,tamx-110,tamy-110,800,553);
	}
*/
/*  var newancho=window.document.outerWidth;
  var newalto=window.document.outerHeight;

  anchoanterior=!(ancho)? 800:ancho ; 
  altoanterior= !(alto)?  ((anchoanterior>800)? 553 : 600):alto ; 
  ancho = newacho; 
  alto = newalto; 
  alto=(ancho<=800)? alto-100: alto-50;
	centra_capas(ancho,alto,anchoanterior,altoanterior,anchominimo,altominimo); 
*/

/*	var newancho=window.outerWidth;
	var newalto=window.outerHeight;
	anchoanterior=!(ancho)? newancho:ancho ;
	altoanterior= !(alto)? newalto:alto ;
	ancho = newancho;
	alto = newalto;

	centra_capas(ancho,alto,anchoanterior,altoanterior,anchominimo,altominimo);*/
	
}

// reposiciona una capa dandole el centro de la pantalla,el anterior y el actual
function reposiciona_capa(capa,actx,acty,antx,anty) {
	var xini=parseInt(capa.left);
	var yini=parseInt(capa.top);

	var coordx=antx-xini;
	var coordy=anty-yini;
	var posx=actx - coordx;
	var posy=acty - coordy;
	
	capa.left=Math.max(posx,0); // para que no se vaya de la pantalla
	capa.top=Math.max(posy,0); // para que no se vaya de la pantalla
}

function centra_capas (tamx,tamy,antx,anty,minx,miny) {
	var objeto,capas
	var ancho = Math.max(tamx,minx)
	var alto = Math.max(tamy,miny)
	
	var anchoant=Math.max(antx,minx)	
	var altoant=Math.max(anty,miny)
	
	if(bw.ie4) capas=document.all.tags("DIV");
	  else if(bw.ns4) capas=document.layers;
	  	 else capas=document.getElementsByTagName("DIV");
	
	for(i=0;i<capas.length;i++) {
		if(bw.ns4) objeto=capas[i]; else objeto=capas[i].style;
		reposiciona_capa(objeto,(ancho/2),(alto/2),(anchoant/2),(altoant/2));
	}
} 

function carga_ns4() {
	Inicia_AreaScroll();
	centra_capas_ns4();
}

function carga_no_ns4() {
	Inicia_AreaScroll();
	window.onresize();
}
	  
function redim_no_ns4()
{
/*  var newancho=(bw.ns6)? window.innerWidth-16 : document.body.offsetWidth-20;
  var newalto=(bw.ns6)? window.innerHeight : document.body.offsetHeight;
  anchoanterior=!(ancho)? newancho:ancho ;
  altoanterior= !(alto)? newalto:alto ;
  ancho = newancho;
  alto = newalto;
  
  centra_capas(ancho,alto,anchoanterior,altoanterior,anchominimo,altominimo);
*/
  
  anchoanterior=!(ancho)? ((bw.ns6)? 766: 780):ancho ; 
  altoanterior= !(alto)?  ((bw.ns6)? 438 : 442):alto ; 
  ancho=(bw.ns6)? window.innerWidth-16 : document.body.offsetWidth-20 ; 
  alto=(bw.ns6)? window.innerHeight : document.body.offsetHeight ; 
  centra_capas(ancho,alto,anchoanterior,altoanterior,anchominimo,altominimo);

if (initialised) {
  	objScroller.MoveArea(0,0);
	if (bw.ns4) arriba = MM_findObj("divSubeScroll"); else arriba = makeObj("divSubeScroll");
	if (bw.ns4) pelota = MM_findObj("divBola"); else pelota = makeObj("divBola");;
  	pelota.top = parseInt(arriba.top) + parseInt(arriba.height);
  	}

}	

function Inicia_AreaScroll() {

	if (MM_findObj('divMarco')) {
		objContainer=new ConstructObject('divMarco');
		objScroller=new ConstructObject('divContenido','divMarco');
		objContainer.objcss.visibility='visible';
		objScroller.MoveArea(0,0);
		initialised=true;

		//altominimo = parseInt(objContainer.clipHeight);
		//anchominimo = parseInt(objContainer.objcss.width);
	
		if (bw.ns4) arriba = MM_findObj("divSubeScroll"); else arriba = makeObj("divSubeScroll");
		if (bw.ns4) pelota = MM_findObj("divBola"); else pelota = makeObj("divBola");
		if (bw.ns4) abajo = MM_findObj("divBajaScroll"); else abajo = makeObj("divBajaScroll");
		
		if (arriba && abajo && pelota) {
			pelota.top = parseInt(arriba.top) + 20;
			recorrido_bola = parseFloat(abajo.top) - parseInt(arriba.top);
			recorrido_texto = parseFloat(objScroller.scrollHeight - objContainer.clipHeight);
			var num_scrolls = parseInt(objScroller.scrollHeight / objContainer.clipHeight);
			
			switch (num_scrolls) {
				case 0:
				case 1:
				case 2: speed = 50; break;
				case 3:
				case 4:
				case 5: speed = 30; break;
				default: speed = 10;
			}
		}
		else MM_showHideLayers('divBola','','hide');

		if ((parseInt(recorrido_texto)==0) || (parseInt(recorrido_bola) == 0)) MM_showHideLayers('divBola','','hide');
	}
}


//------------------------------------------------------------------------
// API EXTERNO
//------------------------------------------------------------------------

function Redim() {
	(bw.ns4)?location.reload():redim_no_ns4();
}

function Carga_Inicial () {
	(bw.ns4)?carga_ns4():carga_no_ns4();
}

function SubeScroll (vel) {
	if (initialised)
		if(vel!=0) objScroller.up(-vel);
}

function BajaScroll (vel) {
	if (initialised)
		if(vel!=0) objScroller.down(vel);
}

function FinScroll () {
	clearTimeout(timer);
}

function InicioScroll () {
	objScroller.MoveArea(0,0);
	if (bw.ns4) pelota = MM_findObj("divBola"); else pelota = makeObj("divBola");
	if (bw.ns4) arriba = MM_findObj("divSubeScroll"); else arriba = makeObj("divSubeScroll");
	pelota.top = parseInt(arriba.top)+10;	

}

function FinalScroll () {
	if(objContainer.clipHeight < objScroller.scrollHeight) { 
		objScroller.MoveArea(0,-recorrido_texto);
		if (bw.ns4) pelota = MM_findObj("divBola"); else pelota = makeObj("divBola");
		if (bw.ns4) abajo = MM_findObj("divBajaScroll"); else abajo = makeObj("divBajaScroll");

		pelota.top = parseInt(abajo.top)-10;	
	}
}

function dragLayer() {};
//------------------------------------------------------------------------
