// ---------------------------------------------------- //
// Librerias dhtml base					//
// Intermark Multimedia 2001				//
// ---------------------------------------------------- //



// ---------------------------------------------------- //
// Comprueba navegador (ie4 - ns4 o superiores)		//
// y crea el objeto nav para comprobaciones posteriores	//
// Ejemplo: 	nav.ie4 (ie4 o superior)		//
// 		nav.ns4 (ns4)				//
// ---------------------------------------------------- //
function checknavegador() {
	n = navigator.appName;
	v = parseInt(navigator.appVersion);
	this.ie4 = (n=="Microsoft Internet Explorer" && v>=4);
	this.ns4 = (n=="Netscape" && v>=4);
}
nav = new checknavegador();
// ---------------------------------------------------- //

// ----------------------------------------------------- //
// Inicializa posicion puntero raton (x, y)		 //
// y funciones para controlar la posicion		 //
// Funcionamiento: Las variables globales xmouse, ymouse //
// nos daran la posicion del raton en todo momento	 //
// ----------------------------------------------------- //
var xmouse=0, ymouse=0;
var mousepulsado = 0;
document.onmousemove = mousemove;
document.onmouseup = mouseup;
document.onmousedown = mousedown;
if (nav.ns4) document.captureEvents(Event.MOUSEMOVE);

function mousemove(e){
	if (nav.ns4) {
		xmouse = e.pageX;
		ymouse = e.pageY;
	} else if (nav.ie4) {
		xmouse = window.event.x;
		ymouse = window.event.y;
	}
	drag();
	if (nav.ie4) { return false; }
}
function mousedown(e) {
	mousepulsado = 1;
	startdrag();
	return false;
}
function mouseup(e) {
	mousepulsado = 0;
	stopdrag();
	return false;
}

function startdrag() { }
function drag() { }
function stopdrag() { }

// ----------------------------------------------------------------------------	//
// Funcion para crear un objeto de cada capa					//
//										//
// Ejemplo : capaObj = new objetoCapa("capa")					//
//										//
// - Si se necesitan definir capas relativas hay que				//
// especificar el parametro capaparent... 					//
// capapadreObj = new objetoCapa("capapadre")					//
// capahijaObj = new objetoCapa("capahija","capapadre")				//
//										//
// - En caso de tener mas de un subnivel relativo				//
// habria que especificarlo de la siguiente forma:				//
// capapadre1Obj = new objetoCapa("capapadre1")					//
// capapadre2Obj = new objetoCapa("capapadre2","capapadre1")			//
// capahijaObj = new objetoCapa("capahija","capapadre1.document.capapadre2")	//
// ----------------------------------------------------------------------------	//
function objetoCapa(capaid,capaparent) {
	if (nav.ns4) {
		this.propiedad = (capaparent)? eval("document."+capaparent+".document."+capaid) : document.layers[capaid];
		this.x = parseInt(this.propiedad.left);
		this.y = parseInt(this.propiedad.top);
		//this.w = parseInt(this.propiedad.clip.width);
		//this.h = parseInt(this.propiedad.clip.height);
		this.w = parseInt(this.propiedad.document.width);
		this.h = parseInt(this.propiedad.document.height);
	} else if (nav.ie4) {
		this.propiedad = document.all[capaid].style;
		this.elm = document.all[capaid];
		this.x = parseInt(this.propiedad.left);
		this.y = parseInt(this.propiedad.top);
		//this.w = parseInt(this.propiedad.width);
		//this.h = parseInt(this.propiedad.height);
		this.w = parseInt(document.all[capaid].offsetWidth);
		this.h = parseInt(document.all[capaid].offsetHeight);
	}
	this.obj = capaid + "objeto";
	eval(this.obj + "=this");

	this.actualiza = actualizavalorescapa;
	this.tamano = tamanocapa;
	this.mover_a = movercapa;
	this.mostrar = mostrarcapa;
	this.ocultar = ocultarcapa;
	this.visible = visibilidadcapa;
	this.clipping = clippingcapa;
	this.valorclipping = valoresdelclipping;
	this.escribecapa = escribec;

	this.scrollaba = scrollabajo;
	this.scrollarr = scrollarriba;
	this.scrollder = scrollderecha;
	this.scrollizq = scrollizquierda;
	this.scrollini = scrollinicializa;
	this.scrollactiva = scrollactivar;
	this.scrollpara = scrollparar;
	this.scrollposini = scrollposicioninicial;

	this.scrollnews = iniscrollnews;
	this.scrollnewsp = scrollnewsprincipal;
	this.scrollnewsh = iniscrollnewsh;
	this.scrollnewsph = scrollnewsprincipalh;

	this.scrollrat = iniscrollraton;
	this.muevescrollrat = muevescrollraton;

	this.desplaza = desplazamiento;
}
// ---------------------------------------------------- //
// Metodo que actualiza valores de la capa		//
// alto, ancho, etc... los cuales permanecen estaticos	//
// desde la inicializacion de la capa			//
//							//
// Puede ser util para actualizar estos valores		//
// en caso de rellenar la capa sin recargar el html	//
// Ejemplo: nombreobjeto.actualiza()		//
// ---------------------------------------------------- //
function actualizavalorescapa() {
	if (nav.ns4) {
		this.x = parseInt(this.propiedad.left);
		this.y = parseInt(this.propiedad.top);
		this.w = parseInt(this.propiedad.document.width);
		this.h = parseInt(this.propiedad.document.height);
	} else if (nav.ie4) {
		this.x = parseInt(this.propiedad.left);
		this.y = parseInt(this.propiedad.top);
		this.w = parseInt(this.elm.offsetWidth);
		this.h = parseInt(this.elm.offsetHeight);
	}
}
// ---------------------------------------------------- //
// Metodo que permite cambiar el tamaņo (ancho/ alto)	//
// de una capa determinada				//
// Funcionamiento:					//
// Llamada al metodo .tamano(ancho, alto)		//
// Ejemplo: nombreobjeto.tamano(200, 150)		//
// ---------------------------------------------------- //
function tamanocapa(w, h) {
	if (nav.ns4) {
		this.propiedad.document.width = w;
		this.propiedad.document.height = h;
	} else if (nav.ie4) {
		this.propiedad.width = w;
		this.propiedad.height = h;
	}
}
// ---------------------------------------------------- //
// Metodo que permite mover				//
// una capa a una posicion x,y determinada		//
// Funcionamiento: 					//
// LLamada al metodo .mover_a(x, y)			//
// Ejemplo: nombreobjeto.mover_a(10, 10)		//
// ---------------------------------------------------- //
function movercapa(x, y) {
	this.x = x;
	this.y = y;
	this.propiedad.left = x;
	this.propiedad.top = y;
}
// ---------------------------------------------------- //
// Metodos que permiten 				//
// mostrar / ocultar capas				//
// Funcionamiento:					//
// nombreobjeto.mostrar()				//
// nombreobjeto.ocultar()				//
// ---------------------------------------------------- //
function mostrarcapa() {
	this.propiedad.visibility = (nav.ns4) ? "show" : "visible";
}
function ocultarcapa() {
	this.propiedad.visibility = (nav.ns4) ? "hide" : "hidden";
}
// ---------------------------------------------------- //
// Metodo que devuelve si una capa es visible o no	//
// (True o False / 1 o 0)				//
// Funcionamiento:					//
// nombreobjeto.visible					//
// ---------------------------------------------------- //
function visibilidadcapa() {
	v = this.propiedad.visibility;
	if (v == 'show' || v == 'visible') {
		return 1;
	} else if (v == 'hide' || v == 'hidden') {
		return 0;
	} else {
		return 1;
	}
}
// ---------------------------------------------------- //
// Metodos que permiten 				//
// modificar y obtener los valores del clipping		//
// de una capa determinada				//
//							//
// Funcionamiento y ejemplo:				//
// nombreobjeto.clipping(0,150,200,0)			//
// Esto colocaria el clipping en la posicion...		//
// ... 0-arriba, 150-derecha, 200-abajo, 0-izquierda	//
//							//
// nombreobjeto.valorclipping('t')			//
// nos devuelve el valor del clipping superior (top)	//
//							//
// Los valores son: t=top, r=right, b=bottom, l=left	//
// ---------------------------------------------------- //
function clippingcapa(t,r,b,l) {
	if (nav.ns4) {
		this.propiedad.clip.top = t;
		this.propiedad.clip.right = r;
		this.propiedad.clip.bottom = b;
		this.propiedad.clip.left = l;
	} else if (nav.ie4) {
		this.propiedad.clip = "rect(" +t+ "px " +r+ "px " +b+ "px " +l+ "px)";
	}
}
function valoresdelclipping(quevalor) {
	if (this.propiedad.clip == '') return;
	if (nav.ie4) var clipv = this.propiedad.clip.split("rect(")[1].split(")")[0].split("px");
	if (quevalor=="t") return (nav.ns4)? this.propiedad.clip.top : Number(clipv[0]);
	if (quevalor=="r") return (nav.ns4)? this.propiedad.clip.right : Number(clipv[1]);
	if (quevalor=="b") return (nav.ns4)? this.propiedad.clip.bottom : Number(clipv[2]);
	if (quevalor=="l") return (nav.ns4)? this.propiedad.clip.left : Number(clipv[3]);
}
// ---------------------------------------------------- //
// Metodo que permite escribir html en una capa		//
//							//
// Funcionamiento y ejemplos:				//
// nombreobjeto.escribecapa('texto a escribir')		//
// ---------------------------------------------------- //
function escribec(txt) {
	if (nav.ie4) {
		this.elm.innerHTML = txt;
	} else if (nav.ns4) {
		this.propiedad.document.open();
		this.propiedad.document.write(txt);
		this.propiedad.document.close();
	}
}
// ---------------------------------------------------- //
// Metodos que permiten el control 			//
// de scroll de una capa con botones			//
// (con clipping)					//
//							//
// Funcionamiento y ejemplos:				//
// Hay que utilizarlo en un boton con eventos de raton	//
// que pueden ser: onMouseDown(), onMouseUp, onMouseOut //
// Por ejemplo, nombreobjeto.scrollactiva('abajo',2)	//
// activaria un scroll hacia abajo			//
// moviendose 2 pixels de cada vez...			//
//							//
// El parametro direccion puede ser			//
// 'arriba', 'abajo', 'izquierda', 'derecha'		//
// El parametro "aumento" es opcional			//
// si no se especifica saltara 8 pixels de cada vez	//
//							//
// Existe una funcionalidad para hacer que 		//
// el scroll (capa) vuelva a su posicion y		//
// parametros iniciales, lo cual puede ser util		//
// en determinados casos... 				//
// P.e... cuando haya varias capas con scroll		//
// en el mismo html					//
// Ejemplo de uso: nombreobjeto.scrollposini()		//
// ---------------------------------------------------- //
function scrollinicializa() {
if (this.h > this.valorclipping('b')) {
	this.activoV = 1;
}else {
	this.activoV = 0;
}
this.topearriba = this.y - (this.h - this.valorclipping('b'));
this.topeabajo = this.y;
this.topearribaclipt = 0;
this.topearribaclipb = this.valorclipping('b');
this.topeabajoclipt = this.valorclipping('t') + (this.h - this.valorclipping('b'));
this.topeabajoclipb = this.valorclipping('b') + (this.h - this.valorclipping('b'));

if (this.w > this.valorclipping('r')) {
	this.activoH = 1;
}else {
	this.activoH = 0;
}
this.topeizquierda = this.x - (this.w - this.valorclipping('r'));
this.topederecha = this.x;
this.topeizquierdaclipl = 0;
this.topeizquierdaclipr = this.valorclipping('r');
this.topederechaclipl = this.valorclipping('l') + (this.w - this.valorclipping('r'));
this.topederechaclipr = this.valorclipping('r') + (this.w - this.valorclipping('r'));

this.primeravez = 1;
}
function scrollactivar(direccion, aumento) {
	if (direccion == 'abajo') func = 'scrollaba';
	if (direccion == 'arriba') func = 'scrollarr';
	if (direccion == 'derecha') func = 'scrollder';
	if (direccion == 'izquierda') func = 'scrollizq';

	if (aumento == null) aumento = 8;

	if (this.primeravez==null) {
		this.scrollini();
	}

	this.activo = 1;

	if (direccion == 'abajo' || direccion == 'arriba') {
		if (this.activoV) eval("this."+func+"(this.valorclipping('t'),this.valorclipping('r'),this.valorclipping('b'),this.valorclipping('l'),this.x, this.y,"+aumento+")");
	}
	if (direccion == 'izquierda' || direccion == 'derecha') {
		if (this.activoH) eval("this."+func+"(this.valorclipping('t'),this.valorclipping('r'),this.valorclipping('b'),this.valorclipping('l'),this.x, this.y,"+aumento+")");
	}
}
// Inicializa un scroll a su posicion inicial //
function scrollposicioninicial() {
	if (this.primeravez==null) {
		this.scrollini();
	}
	// Vuelve a la posicion inicial un scroll vertical
	this.posiy = this.topeabajo;
	this.clipt = this.topearribaclipt;
	this.clipb = this.topearribaclipb;
	this.mover_a(this.x, this.posiy);
	this.clipping(this.clipt, this.valorclipping('r'), this.clipb, this.valorclipping('l'));

	// Vuelve a la posicion inicial un scroll horizontal
	this.posix = this.topederecha;
	this.clipl = this.topeizquierdaclipl;
	this.clipr = this.topeizquierdaclipr;
	this.mover_a(this.posix, this.y);
	this.clipping(this.valorclipping('t'), this.clipr, this.valorclipping('b'), this.clipl);
}
function scrollabajo(clipt, clipr, clipb, clipl, x, y, aumento) {

if (this.activo) {

	this.posiy = y - aumento;
	this.clipt = clipt + aumento;
	this.clipb = clipb + aumento;

	if (this.posiy > this.topearriba) {
		this.mover_a(this.x, this.posiy);
		this.clipping(this.clipt, clipr, this.clipb, clipl);
		setTimeout(this.obj+".scrollaba("+this.clipt+", "+clipr+", "+this.clipb+", "+clipl+", "+this.x+", "+this.posiy+", "+aumento+")",10);
	}else {
		this.posiy = this.topearriba;
		this.clipt = this.topeabajoclipt;
		this.clipb = this.topeabajoclipb;
		this.mover_a(this.x, this.posiy);
		this.clipping(this.clipt, clipr, this.clipb, clipl);
	}
}
}
function scrollarriba(clipt, clipr, clipb, clipl, x, y, aumento) {

if (this.activo) {

	this.posiy = y + aumento;
	this.clipt = clipt - aumento;
	this.clipb = clipb - aumento;

	if (this.posiy < this.topeabajo) {
		this.mover_a(this.x, this.posiy);
		this.clipping(this.clipt, clipr, this.clipb, clipl);
		setTimeout(this.obj+".scrollarr("+this.clipt+", "+clipr+", "+this.clipb+", "+clipl+", "+this.x+", "+this.posiy+", "+aumento+")",10);
	}else {
		this.posiy = this.topeabajo;
		this.clipt = this.topearribaclipt;
		this.clipb = this.topearribaclipb;
		this.mover_a(this.x, this.posiy);
		this.clipping(this.clipt, clipr, this.clipb, clipl);
	}
}
}
function scrollderecha(clipt, clipr, clipb, clipl, x, y, aumento) {

if (this.activo) {

	this.posix = x - aumento;
	this.clipl = clipl + aumento;
	this.clipr = clipr + aumento;

	if (this.posix > this.topeizquierda) {
		this.mover_a(this.posix, this.y);
		this.clipping(clipt, this.clipr, clipb, this.clipl);
		setTimeout(this.obj+".scrollder("+clipt+", "+this.clipr+", "+clipb+", "+this.clipl+", "+this.posix+", "+this.y+", "+aumento+")",10);
	}else {
		this.posix = this.topeizquierda;
		this.clipl = this.topederechaclipl;
		this.clipr = this.topederechaclipr;
		this.mover_a(this.posix, this.y);
		this.clipping(clipt, this.clipr, clipb, this.clipl);
	}
}
}
function scrollizquierda(clipt, clipr, clipb, clipl, x, y, aumento) {

if (this.activo) {

	this.posix = x + aumento;
	this.clipl = clipl - aumento;
	this.clipr = clipr - aumento;

	if (this.posix < this.topederecha) {
		this.mover_a(this.posix, this.y);
		this.clipping(clipt, this.clipr, clipb, this.clipl);
		setTimeout(this.obj+".scrollizq("+clipt+", "+this.clipr+", "+clipb+", "+this.clipl+", "+this.posix+", "+this.y+", "+aumento+")",10);
	}else {
		this.posix = this.topederecha;
		this.clipl = this.topeizquierdaclipl;
		this.clipr = this.topeizquierdaclipr;
		this.mover_a(this.posix, this.y);
		this.clipping(clipt, this.clipr, clipb, this.clipl);
	}
}
}
function scrollparar() {
	this.activo = 0;
}

// ---------------------------------------------------- //
// Metodo para mover un scroll de news vertical		//
// Funcionamiento y ejemplos:				//
// nombreobjeto.scrollnews()				//
// empezaria a mover un scroll vertical tipo "noticias"	//
//							//
// El parametro aumento indica el numero de pixels 	//
// que salta de cada vez... Si no se especifica		//
// toma por defecto el valor de 1			//
// ---------------------------------------------------- //
function iniscrollnews(aumento) {

	if (aumento == null) aumento = 1;

	if (this.primeravez == null) {
		this.posiyini = this.y;
		this.topey = this.y - (this.h);
		this.topetini = this.valorclipping('t');
		this.topebini = this.valorclipping('b');
		this.primeravez = 1;
	}

	this.activo = 1;
	eval("this.scrollnewsp(this.valorclipping('t'),this.valorclipping('r'),this.valorclipping('b'),this.valorclipping('l'),this.x, this.y,"+aumento+")");
}
function scrollnewsprincipal(clipt, clipr, clipb, clipl, x, y, aumento) {

if (this.activo) {

	this.posiy = y - aumento;
	this.clipt = clipt + aumento;
	this.clipb = clipb + aumento;

	if (this.posiy > this.topey) {
		this.mover_a(this.x, this.posiy);
		this.clipping(this.clipt, clipr, this.clipb, clipl);
	}else {
		this.posiy = this.posiyini;
		this.clipt = this.topetini;
		this.clipb = this.topebini;
		this.mover_a(this.x, this.posiy);
		this.clipping(this.clipt, clipr, this.clipb, clipl);
	}
	setTimeout(this.obj+".scrollnewsp("+this.clipt+", "+clipr+", "+this.clipb+", "+clipl+", "+this.x+", "+this.posiy+", "+aumento+")",30);
}
}
// ---------------------------------------------------- //
// Metodo para mover un scroll de news horizontal	//
// Funcionamiento y ejemplos:				//
// nombreobjeto.scrollnewsh()				//
// empezaria a mover un scroll horizontal  "noticias"	//
//							//
// El parametro aumento indica el numero de pixels 	//
// que salta de cada vez... Si no se especifica		//
// toma por defecto el valor de 1			//
// ---------------------------------------------------- //
function iniscrollnewsh(aumento) {

	if (aumento == null) aumento = 1;
	this.posixini = this.x;
	this.topex = this.x - (this.w);
	//alert(this.topey);
	this.topelini = this.valorclipping('l');
	this.toperini = this.valorclipping('r');
	this.activo = 1;
	eval("this.scrollnewsph(this.valorclipping('t'),this.valorclipping('r'),this.valorclipping('b'),this.valorclipping('l'),this.x, this.y,"+aumento+")");
}
function scrollnewsprincipalh(clipt, clipr, clipb, clipl, x, y, aumento) {

if (this.activo) {

	this.posix = x - aumento;
	this.clipl = clipl + aumento;
	this.clipr = clipr + aumento;

	if (this.posix > this.topex) {
		this.mover_a(this.posix, this.y);
		this.clipping(clipt, this.clipr, clipb, this.clipl);
	}else {
		this.posix = this.posixini;
		this.clipl = this.topelini;
		this.clipr = this.toperini;
		this.mover_a(this.posix, this.y);
		this.clipping(clipt, this.clipr, clipb, this.clipl);
	}
	setTimeout(this.obj+".scrollnewsph("+clipt+", "+this.clipr+", "+clipb+", "+this.clipl+", "+this.posix+", "+this.y+", "+aumento+")",30);
}
}

// ---------------------------------------------------- //
// Metodo para mover un scroll de izquierda a derecha	//
// segun la posicion del raton				//
//							//
// Funcionamiento y ejemplos:				//
// nombreobjeto.scrollrat()				//
// Activaria un scroll en el que una capa se mueve	//
// en horizontal y segun la posicion del raton		//
// respecto al punto de la ventana se mueve 		//
// con mas o menos velocidad y en una u otra direccion	//
//							//
// Los parametros (topeizq, topeder), controlan		//
// los "topes" en los que el scroll se para por 	//
// la izquierda y la derecha				//
// Si no se especifican, automaticamente se calculan	//
// el tope izquierdo segun la parte izquierda de la	//
// ventana, y el tope derecho segun la parte derecha	//
//							//
// El parametro (medio), indica una posicion que 	//
// respecto a la del raton, determinara la direccion	//
// y velocidad del scroll				//
// Si no se especifica, calcula la posicion del medio	//
// de la ventana actual					//
// ---------------------------------------------------- //
function iniscrollraton(topeizq, topeder, medio){

	if (nav.ns4) {
		totalventana = window.innerWidth;
	}
	else if (nav.ie4) {
		totalventana = document.body.clientWidth;
	}

	if (medio == null) this.medio = totalventana / 2;
	else this.medio = medio;

	this.ancho = this.w;
	this.xactual = this.x;
	if (topeizq == null) this.topeizq = 0;
	else this.topeizq = topeizq;

	if (topeder == null) this.topeder = -(this.ancho-totalventana);
	else this.topeder = topeder;

	this.mover_a(this.xactual,this.y);

	this.muevescrollrat();
}
function muevescrollraton(){
	xm = xmouse;

	if (xm <= this.medio) {
		this.xactual = this.xactual + ((this.medio-xm) / 40);
		if (this.xactual >= this.topeizq) {
			this.xactual = this.topeizq;
		}
	} else 	{
		this.xactual = this.xactual - ((xm-this.medio) / 40);
		if (this.xactual <= this.topeder) {
			this.xactual = this.topeder;
		}
	}

	this.mover_a(this.xactual,this.y);

	setTimeout(this.obj+".muevescrollrat()",5);
}



// ---------------------------------------------------- //
// Metodos para desplazar una capa desde		//
// un punto hasta otro, con aceleracion /deceleracion	//
// o movimiento continuo (unif. acelerado)		//
//							//
// Funcionamiento y ejemplos:				//
// nombreobjeto.desplaza(10,10,100,100,20)		//
// Iniciaria un desplazamiento desde el punto 10,10	//
// hasta el 100,100 sin aceleracion,			//
// y en 20 pasos (frames)				//
//							//
// nombreobjeto.desplaza(10,10,100,100,20,1)		//
// Iniciaria un desplazamiento desde la 10,10		//
// hasta la 100,100 con aceleracion/decel.		//
// 							//
// Los parametros (pxini, pyini, pxfin, pyfin)		//
// determinan las coordenadas origen (pxini, pyini)	//
// y destino (pxfin, pyfin)				//
// 							//
// El parametro (pasostotal) es el numero de pasos que	//
// realizara el desplazamiento hasta llegar a su 	//
// punto de destino					//
// Unicamente sirve para el movimiento sin aceleracion	//
// 							//
// El parametro (acel) indicara si el movimiento	//
// tendra o no aceleracion/deceleracion... 		//
// Si no se especifica o se pone un 0, 			//
// el movimiento carecera de aceleracion/decel...	//
// En resumen: 						//
// acel = 0 Movimiento uniforme				//
// acel = 1 Movimento con acel y decel			//
//							//
// acel > 1 (1.5,2,6,etc) Este caso es especial...	//
// ...es para movimiento con deceleracion...		//
// ...el parametro es el "peso", es decir...		//
// ...cuanto mayor sea, mas lento sera el movimiento	//
// ---------------------------------------------------- //
function desplazamiento(pxini,pyini,pxfin,pyfin,pasostotal,acel) {

if (acel == null) acel = 0;
if (pasostotal == null) pasostotal = 0;

if (this.primeravez==null) {
	this.posix = pxini;
	this.posiy = pyini;
	distx = pxini - pxfin;
	disty = pyini - pyfin;
	this.dist = Math.sqrt(Math.pow(distx,2) + Math.pow(disty,2));
	this.distactual = 0.5;
	this.seno = disty/this.dist;
	this.angulo = 180-(180*(Math.asin(this.seno)) / Math.PI);
	if (pxfin > pxini && pyfin <= pyini) this.angulo = (180*(Math.asin(this.seno)) / Math.PI);
	if (pxfin > pxini && pyfin > pyini) this.angulo = 270 + (270 - this.angulo);
	this.aumx = Math.cos(Math.PI*this.angulo/180);
	this.aumy = -Math.sin(Math.PI*this.angulo/180);
	this.acel = 0.3;
	this.maxacel = this.acel;
	this.primeravez = 1;
	this.paso = 1;
	this.swsecuencia = 1;
}

if (this.swsecuencia) {
if (!acel) {
	if (this.paso <= pasostotal) {

		this.posix = pxini+((pxfin-pxini) * this.paso) / pasostotal;
		this.posiy = pyini+((pyfin-pyini) * this.paso) / pasostotal;
		this.mover_a(this.posix, this.posiy);
		setTimeout(this.obj+".desplaza("+pxini+", "+pyini+", "+pxfin+", "+pyfin+", "+pasostotal+", "+acel+")",0);
		this.paso ++;

	}else {
		this.primeravez = null;
		this.swsecuencia = 0;
		return;
	}
} else if (acel==1) {

	if (this.distactual < (this.dist/2)) {
		this.acel = this.acel + 1;
		this.maxacel = this.acel;
	} else {
		this.acel = (this.dist-this.distactual)/3;
		if (this.acel > this.maxacel) this.acel = this.maxacel;
	}

	this.posix = this.posix + (this.aumx *this.acel);
	this.posiy = this.posiy + (this.aumy *this.acel);
	dx = this.posix - pxini;
	dy = this.posiy - pyini;
	this.distactual = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2));

	if ((this.dist-this.distactual) > 1 && this.acel > 0) {
		this.mover_a(this.posix, this.posiy);
		setTimeout(this.obj+".desplaza("+pxini+", "+pyini+", "+pxfin+", "+pyfin+", "+pasostotal+", "+acel+")",0);
	} else {
		this.posix = pxfin;
		this.posiy = pyfin;
		this.mover_a(this.posix, this.posiy);
		this.primeravez = null;
		this.swsecuencia = 0;
		return;
	}
} else if (acel>1) {

	dx = this.posix - pxini;
	dy = this.posiy - pyini;
	this.distactual = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2));

	this.posix = this.posix + (pxfin - this.posix)/acel;
	this.posiy = this.posiy + (pyfin - this.posiy)/acel;


	if ((this.dist-this.distactual) > 0.7) {
		this.mover_a(this.posix, this.posiy);
		setTimeout(this.obj+".desplaza("+pxini+", "+pyini+", "+pxfin+", "+pyfin+", "+pasostotal+", "+acel+")",0);
	} else {
		this.posix = pxfin;
		this.posiy = pyfin;
		this.mover_a(this.posix, this.posiy);
		this.primeravez = null;
		this.swsecuencia = 0;
		return;
	}
}
}

}










