var cAn, cAl, mAn, mAl, iAn, iAl;
var Puntos = new Array();
var nPuntos = 0;
var tPuntos = 0;
var aPunto = (-1);
var Observacions = new Array();
var nObservacions = 0;
var mXi=0, mYi=0, mANi=0, mALi=0;
var mXf=0, mYf=0, mANf=0, mALf=0;
var mXa=0, mYa=0, mANa=0, mALa=0;
var nPasos=0, aPaso=0;
var Reloxio=null;
var Movil=null;
var funcionS;
var Reducido=false;
var puntoSenEnlaces;

function moverAta(X,Y,AN,AL,numPasos,fS){
	mXi=Mapa.style.pixelLeft;
	mYi=Mapa.style.pixelTop;
	mANi=imgMapa.style.pixelWidth;
	mALi=imgMapa.style.pixelHeight;
	mXf=X; mYf=Y; mANf=AN; mALf=AL;
	mXa=mXi, mYa=mYi; mANa=mANi, mALa=mALi;
	nPasos=numPasos;
	aPaso=0;
	funcionS=fS;
	if(Reloxio==null && (mXi!=mXf||mYi!=mYf||mANi!=mANf||mALi!=mALf)){Animar();}
}

function Animar(){
	var DistanciaX=0, DistanciaY=0, DistanciaAN=0, DistanciaAL=0, i;

	if(mXi!=mXf||mYi!=mYf){
	 	if (aPaso!=nPasos){
 			DistanciaX=mXf-mXi;
			DistanciaY=mYf-mYi;
			DistanciaAN=mANf-mANi;
			DistanciaAL=mALf-mALi;
			i=(Math.PI/nPasos)*aPaso;
			mXa=parseInt(mXi+(DistanciaX*(1+Math.cos(i-Math.PI)))/2);
			mYa=parseInt(mYi+(DistanciaY*(1+Math.cos(i-Math.PI)))/2);
			mANa=parseInt(mANi+(DistanciaAN*(1+Math.cos(i-Math.PI)))/2);
			mALa=parseInt(mALi+(DistanciaAL*(1+Math.cos(i-Math.PI)))/2);
		}else{
			mXa=mXf;
			mYa=mYf;
			mANa=mANf;
			mALa=mALf;
		}
		Mapa.style.left=mXa;
		Mapa.style.top=mYa;
	}

	if(mANi!=mANf||mALi!=mALf){
	 	if (aPaso!=nPasos){
 			DistanciaX=mXf-mXi;
			DistanciaY=mYf-mYi;
			DistanciaAN=mANf-mANi;
			DistanciaAL=mALf-mALi;
			i=(Math.PI/nPasos)*aPaso;
			mXa=parseInt(mXi+(DistanciaX*(1+Math.cos(i-Math.PI)))/2);
			mYa=parseInt(mYi+(DistanciaY*(1+Math.cos(i-Math.PI)))/2);
			mANa=parseInt(mANi+(DistanciaAN*(1+Math.cos(i-Math.PI)))/2);
			mALa=parseInt(mALi+(DistanciaAL*(1+Math.cos(i-Math.PI)))/2);
		}else{
			mXa=mXf;
			mYa=mYf;
			mANa=mANf;
			mALa=mALf;
		}
		imgMapa.style.width=mANa;
		imgMapa.style.height=mALa;
	}

	window.clearTimeout(Reloxio); Reloxio=null;
	if (aPaso!=nPasos){
		Reloxio=window.setTimeout('Animar();',10);
		aPaso++;
	}else{
		aPaso=0;
		if(funcionS!=""){eval(funcionS);}
	}
}

function Precarga(){
	if(imgMapa.readyState!='complete'){
		Reloxio=window.setTimeout("Precarga();",100);
	}else{
		window.clearTimeout(Reloxio); Reloxio=null;
		cMapa.style.height="300px";
		cMapa.style.visibility="visible";
		cPestanas.style.visibility="visible";
	    	cAn = cMapa.offsetWidth;    cAl = cMapa.offsetHeight-20;
	    	mAn = Mapa.offsetWidth;     mAl = Mapa.offsetHeight;
	    	iAn = imgMapa.offsetWidth;  iAl = imgMapa.offsetHeight;
	    	datosMapa();
	    	activaPestana(pAxuda);
		abrePestana(pAxuda);
		reduceMapa(true);
	}
}

function Punto(Punto,Nome,Bus,Tipo,Hora,Dias,Orixe,Destino,Observacions){
    this.Punto=Punto;
    if(Punto>tPuntos){tPuntos=Punto;}
    this.Nome=Nome;
    this.Bus=Bus;
    this.Tipo=Tipo;
    this.Hora=Hora;
    this.Dias=Dias;
    this.Orixe=Orixe;
    this.Destino=Destino;
    this.Observacions=Observacions;
}

function Observacion(Tipo,Texto){
    this.Tipo=Tipo;
    this.Texto=Texto;
    this.Mencionado=false;
}

function Inicializa(){
    Reloxio=window.setTimeout("Precarga();",10);
}

function puntoAtras(){
    if(aPunto > 0){infoPunto(eval("p"+(aPunto-1)));}
    //if(aPunto != (-1)){actualizaFlechas();}
}

function puntoAdelante(){
    if(aPunto < tPuntos){infoPunto(eval("p"+(aPunto+1)));}
    //actualizaFlechas();
}

function actualizaFlechas(){
    if(aPunto==0){
    	fE.innerHTML="<img src='../../imaxes/fei.gif'>";
    }else{
	fE.innerHTML="<img src='../../imaxes/fea.gif'>";
    }
    if(aPunto==tPuntos){
    	fD.innerHTML="<img src='../../imaxes/fdi.gif'>";
    }else{
	fD.innerHTML="<img src='../../imaxes/fda.gif'>";
    }
}

function primeiroPunto(){
    infoPunto(p0);
}

function ultimoPunto(){
    infoPunto(eval("p"+tPuntos));
}

function reduceMapa(Rapido){
	ocultaPuntos();
	var nH = 240;
	var nW = iAn*parseInt(nH)/iAl;
	var nX = -220 + (440-parseInt(nW)) / 2;
	var nY = -130;
	if(nW>400){
		nW = 400;
		nH = iAl*parseInt(nW)/iAn;
		nX = -200;
		nY = -130 + (240-parseInt(nH)) / 2;;
	}

	if(Rapido){
		Mapa.style.left=nX;
		Mapa.style.top=nY;
		imgMapa.style.width=nW;
		imgMapa.style.height=nH;		

	}else{
		moverAta(nX,nY,nW,nH,20,"");
	}
	Reducido=true;
}

function ocultaPuntos(){
	for(var t=0;t<=tPuntos;t++){
		var oPunto = eval("p"+t);
		oPunto.style.visibility="hidden";
	}
    	cursorA.style.visibility="hidden";
}

function mostraPuntos(){
	for(var t=0;t<=tPuntos;t++){
		var oPunto = eval("p"+t);
		oPunto.style.visibility="visible";
	}
    	colocaCursor();
}

function activaMapa(){
	if(Reducido){
		if(aPunto<0){aPunto=0;}
		infoPunto(eval("p"+aPunto));
		activaPestana(pLenda);
	}
}

function centraPunto(){
    var nX, nY;
    if(aPunto!=(-1)){
        var iPunto=eval("p"+aPunto);
    }else{
        var iPunto=eval("p0");
    }
    if(iPunto.style.pixelLeft<mAn/3){
	    nX = (cAn/3) - iPunto.style.pixelLeft;
    }else{
	    if(iPunto.style.pixelLeft>2*mAn/3){
		    nX = 2*(cAn/3) - iPunto.style.pixelLeft;
	    }else{
		    nX = (cAn/2) - iPunto.style.pixelLeft;
	    }
    }
    nY = ((cAl-20)/2) - iPunto.style.pixelTop;
    moverAta(nX,nY,iAn,iAl,20,"mostraPuntos();");
    Reducido=false;
}

function foraPestana(Pestana){
    if(Pestana.className=='pestanaNormal'){
        Pestana.style.backgroundColor='#E0E0E0';
    }
}

function dentroPestana(Pestana){
    if(Pestana.className=="pestanaNormal"){
        Pestana.style.backgroundColor='white';
    }
}

function activaPestana(Pestana){
    Pestana.className="pestanaNormal";
    Pestana.style.backgroundColor='#E0E0E0';
}

function desactivaPestana(Pestana){
    Pestana.className="pestanaInactiva";
    Pestana.style.backgroundColor='white';
}

function pechaPestana(Pestana){
    if(Pestana.className=="pestanaAberta"){
        Pestana.className="pestanaNormal";
        foraPestana(Pestana);
        if(Pestana.id=='pRuta'){desactivaPestana(Pestana);}
    }
}

function infoPunto(que){
    puntoSenEnlaces=(que.className=='se');
    aPunto=parseInt(que.id.replace("p",""));
    if(Reducido){activaPestana(pLenda);}
    activaPestana(pSaidas);
    activaPestana(pChegadas);
    abrePestana(pSaidas);
    actualizaFlechas();
    centraPunto();
}

function colocaCursor(){
    var que=eval("p"+aPunto);
    cursorA.style.pixelLeft = que.style.pixelLeft;
    cursorA.style.pixelTop = que.style.pixelTop;
    cursorA.style.visibility="visible";
}

function abreRuta(Ruta){
    activaPestana(pRuta);
    abrePestana(pRuta,Ruta);
}


function reseteaObservacions(){
    for(var t=0;t<nObservacions;t++){
        Observacions[t].Mencionado=false;
    }
}

function abrePestana(Pestana,Ruta){
    var cad="", cad2="", cad3="", cad4="", saida="", obsHora, obsDias, estesNo;
    if(Pestana.className=="pestanaNormal"){
        pechaPestana(pSaidas);
        pechaPestana(pChegadas);
        pechaPestana(pRuta);
        pechaPestana(pLenda);
        pechaPestana(pAxuda);
        Pestana.className="pestanaAberta";
        Pestana.style.backgroundColor='white';
        switch(Pestana.id){
            case "pSaidas":
		centraPunto();
                reseteaObservacions(); cad4=""; cad3="";
                for(var t=0;t<nPuntos;t++){
                    if(Puntos[t].Punto==aPunto){
                        if(saida==""){
                            cad=cTitulo.innerHTML;
			    if(Idioma=="EN"){
				cad = cad.replace("mks_titulo", "Departures from " + Puntos[t].Nome);
			    }else{
				cad = cad.replace("mks_titulo", "Salidas desde " + Puntos[t].Nome);
			    }
                            saida = saida + cad + "\n" + cSaidasC.innerHTML + "\n";
                        }
                        if(Puntos[t].Tipo==0||Puntos[t].Tipo==1){
                            obsHora=""; obsDias="";
                            if(Puntos[t].Observacions!=""){
                                var obs = Puntos[t].Observacions.split(":");
                                for(var i=0;i<obs.length;i++){
                                    var iObs=parseInt(obs[i]);
                                    Observacions[iObs].Mencionado=true;
                                    switch(Observacions[iObs].Tipo){
                                        case 0:
                                            if(obsHora!=""){obsHora = obsHora + ", "}
                                            obsHora = obsHora + (iObs+1);
                                            break;
                                        case 1:
                                            if(obsDias!=""){obsDias = obsDias + ", "}
                                            obsDias = obsDias + (iObs+1);
                                            break;
                                    }
                                }
                            }
			    if(Puntos[t].Orixe != cad4 && cad4!="" && Puntos[t].Destino != cad3 && cad3!=""){
				if(puntoSenEnlaces){
					break;
				}else{
					saida = saida + cSeparadorM.innerHTML; + "\n";
				}
			    }
			    cad4 = Puntos[t].Orixe; cad3 = Puntos[t].Destino;
       	                    cad=cSaidasE.innerHTML;
               	            cad = cad.replace("mks_ruta", Puntos[t].Bus);
                            cad = cad.replace("mks_hora", Puntos[t].Hora);
       	                    cad = cad.replace("mks_obshora", obsHora);
               	            cad = cad.replace("mks_dias", Puntos[t].Dias);
                            cad = cad.replace("mks_obsdias", obsDias);
       	                    cad = cad.replace("mks_destino", Puntos[t].Destino);
               	            saida = saida + cad + "\n";
                        }
                    }
                }
                for(var t=0;t<nObservacions;t++){
                    if(Observacions[t].Mencionado){
                        cad = cObservacion.innerHTML;
                        cad = cad.replace("mks_indiceo", (t+1));
                        cad = cad.replace("mks_textoo", Observacions[t].Texto);
                        if(cad2!=""){cad2 = cad2 + "\n"}
                        cad2 = cad2 + cad;
                    }
                }
                cad = cObservacions.innerHTML;
                cad = cad.replace("mks_observacions", cad2);
                saida = saida + cad + "\n";
                break;
            case "pChegadas":
		centraPunto();
                reseteaObservacions(); cad4=""; cad3="";
		if(puntoSenEnlaces){estesNo=true;}
                for(var t=0;t<nPuntos;t++){
                    if(Puntos[t].Punto==aPunto){
                        if(saida==""){
                            cad=cTitulo.innerHTML;
			    if(Idioma=="EN"){
				cad = cad.replace("mks_titulo", "Arrivals to " + Puntos[t].Nome);
			    }else{
                            	cad = cad.replace("mks_titulo", "Llegadas a " + Puntos[t].Nome);
			    }
                            saida = saida + cad + "\n" + cChegadasC.innerHTML + "\n";
                        }
                        if(Puntos[t].Tipo==2||Puntos[t].Tipo==1){
                            obsHora=""; obsDias="";
                            if(Puntos[t].Observacions!=""){
                                var obs = Puntos[t].Observacions.split(":");
                                for(var i=0;i<obs.length;i++){
                                    var iObs=parseInt(obs[i]);
                                    Observacions[iObs].Mencionado=true;
                                    switch(Observacions[iObs].Tipo){
                                        case 0:
                                            if(obsHora!=""){obsHora = obsHora + ", "}
                                            obsHora = obsHora + (iObs+1);
                                            break;
                                        case 1:
                                            if(obsDias!=""){obsDias = obsDias + ", "}
                                            obsDias = obsDias + (iObs+1);
                                            break;
                                    }
                                }
                            }
			    if(Puntos[t].Orixe != cad4 && cad4!="" && Puntos[t].Destino != cad3 && cad3!=""){
				if(puntoSenEnlaces){
					estesNo=false;
				}else{
					saida = saida + cSeparadorM.innerHTML; + "\n";
				}
			    }
			    cad4 = Puntos[t].Orixe; cad3 = Puntos[t].Destino;
                            cad=cChegadasE.innerHTML;
                            cad = cad.replace("mks_ruta", Puntos[t].Bus);
                            cad = cad.replace("mks_hora", Puntos[t].Hora);
                            cad = cad.replace("mks_obshora", obsHora);
                            cad = cad.replace("mks_dias", Puntos[t].Dias);
                            cad = cad.replace("mks_obsdias", obsDias);
                            cad = cad.replace("mks_orixe", Puntos[t].Orixe);
			    if(!estesNo){saida = saida + cad + "\n";}
                        }
                    }
                }
                for(var t=0;t<nObservacions;t++){
                    if(Observacions[t].Mencionado){
                        cad = cObservacion.innerHTML;
                        cad = cad.replace("mks_indiceo", (t+1));
                        cad = cad.replace("mks_textoo", Observacions[t].Texto);
                        if(cad2!=""){cad2 = cad2 + "\n"}
                        cad2 = cad2 + cad;
                    }
                }
                cad = cObservacions.innerHTML;
                cad = cad.replace("mks_observacions", cad2);
                saida = saida + cad + "\n";
                break;
            case "pRuta":
		reduceMapa();
                reseteaObservacions();
		var Invertido=false;
                for(var t=0;t<nPuntos;t++){
                    if(Puntos[t].Bus==Ruta.id){
			if(Puntos[t].Tipo==2){Invertido=true;}
			break;
		    }
		}
                for(var t=0;t<nPuntos;t++){
                    if(Puntos[t].Bus==Ruta.id){
                        if(saida==""){
			    if(Idioma=="EN"){
				cad4 = "Route ";
			    }else{
                            	cad4 = "Ruta ";
			    }
                            cad4=cad4 + Puntos[t].Bus + ", " + Puntos[t].Orixe + " - " + Puntos[t].Destino;
                        }
                        obsHora="";
                        if(Puntos[t].Observacions!=""){
                            var obs = Puntos[t].Observacions.split(":");
                            for(var i=0;i<obs.length;i++){
                                var iObs=parseInt(obs[i]);
                                Observacions[iObs].Mencionado=true;
                                if(Observacions[iObs].Tipo==0){
                                    if(obsHora!=""){obsHora = obsHora + ", "}
                                    obsHora = obsHora + (iObs+1);
                                    break;
                                }
                            }
                        }
			if(Idioma=="EN"){
	                        switch(Puntos[t].Tipo){
        	                    case 0:
                	                cad2 = "Departure from "; break;
                        	    case 1:
	                                cad2 = "Stop in "; break;
        	                    case 2:
                	                cad2 = "Arrival to "; break;
	                        }
			}else{
	                        switch(Puntos[t].Tipo){
        	                    case 0:
                	                cad2 = "Salida de "; break;
                        	    case 1:
	                                cad2 = "Parada en "; break;
        	                    case 2:
                	                cad2 = "Llegada a "; break;
	                        }
			}
			cad2 = cad2 + Puntos[t].Nome;
                        cad=cRutaE.innerHTML;
                        cad = cad.replace("mks_horar", Puntos[t].Hora);
                        cad = cad.replace("mks_obshorar", obsHora);
                        cad = cad.replace("mks_textor", cad2);
			if(Invertido){
	                        saida = cad + "\n" + saida;
			}else{
	                        saida = saida + cad + "\n";
			}
                    }
                }
                cad2=""; cad3="";
                for(var t=0;t<nObservacions;t++){
                    if(Observacions[t].Mencionado){
                        switch(Observacions[t].Tipo){
                            case 0:
                                cad = cObservacion.innerHTML;
                                cad = cad.replace("mks_indiceo", (t+1));
                                cad = cad.replace("mks_textoo", Observacions[t].Texto);
                                if(cad2!=""){cad2 = cad2 + "\n"}
                                cad2 = cad2 + cad;
                                break;
                            case 1:
                                if(cad3!=""){cad3 = cad3 + "<br>\n"}
                                cad3 = cad3 + Observacions[t].Texto;
                                break;
                        }
                    }
                }
                if(cad3!=""){
                    cad = cObservacion.innerHTML;
                    cad = cad.replace("mks_indiceo", "*");
                    cad = cad.replace("mks_textoo", cad3);
                    cad2 = cad2 + "\n" + cad;
                    cad4 = cad4 + "<sup>*</sup>"
                }
                cad = cObservacions.innerHTML;
                cad = cad.replace("mks_observacions", cad2);
                saida = saida + cad + "\n";
                cad=cTitulo.innerHTML;
                cad = cad.replace("mks_titulo", cad4);
                saida = cad + "\n" + cRutaC.innerHTML + "\n" + saida;
                break;
            case "pLenda":
                saida = cLenda.innerHTML;
                break;
            case "pAxuda":
                saida = cAxuda.innerHTML;
                break;
        }
        cInfo.innerHTML=saida;
    }
}