// ----------------------------------------------------------------------------
// ------------------ Librería de gestión del mapa ----------------------------
// --------------------------------------------------------- (c) 2004 IDOM(JRF)

// ----------------------------------------------------------------------------
// Constantes.
// ----------------------------------------------------------------------------

var SECTORES_HORIZONTALES = 10;
var SECTORES_VERTICALES = 16;

// Dimensiones de cada sector del mapa sectorial.
var SECTOR_ANCHO = 25;
var SECTOR_ALTO = 22;

// Posición del mapa sectorial.
var MAPA_SECTORIAL_VER_RUTAS_POSX = 18;
var MAPA_SECTORIAL_VER_RUTAS_POSY = 194;

var MAPA_SECTORIAL_BUSQUEDA_POSX = 18;
var MAPA_SECTORIAL_BUSQUEDA_POSY = 194;

var MAPA_SECTORIAL_GESTIONAR_PARADAS_POSX = 18;
var MAPA_SECTORIAL_GESTIONAR_PARADAS_POSY = 114;

var MAPA_SECTORIAL_GESTIONAR_NODOS_POSX = 18;
var MAPA_SECTORIAL_GESTIONAR_NODOS_POSY = 114;

var MAPA_SECTORIAL_GESTIONAR_RUTAS_POSX = 18;
var MAPA_SECTORIAL_GESTIONAR_RUTAS_POSY = 146;

// Dimensiones de cada sector grande.
var MAPA_ANCHO = 669;
var MAPA_ALTO = 462;

// ----------------------------------------------------------------------------
// Funciones.
// ----------------------------------------------------------------------------

// Cambia la imagen parcial del mapa presentado por pantalla según el sector elegido por el usuario.
function cambiaSector(nSector, nModuloActual)
{
	var nPosSector;

	// Establece el sector activo.
	mapa.src = "imagenes/mapas/sectores_160/sector" + nSector + ".gif";
	document.frm.txtSectorActivo.value = nSector;

	// Muestra la información apropiada según la operación a realizar.
	if (nModuloActual == VER_RUTAS || nModuloActual == BUSQUEDA)
	{
		// Si el sector que vamos a visualizar pertenece al discurrir de la ruta.
		nPosSector = estaElSector(objSectoresRuta, nSector);
		if (nPosSector != -1)
		{
			// Se actualizan los botones de navegación de la ruta.
			nIndice = nPosSector;
			habilitacionFlechas(nIndice);
		}
		
		// Si el sector a visualizar no entra en la ruta mostrada.
		else
		{
			// Se deshabilitan los botones de navegación de la ruta.
			document.btnAnterior.disabled = true;
			document.btnAnterior.src = src="imagenes/anterior_off.gif";
			document.btnSiguiente.disabled = true;
			document.btnSiguiente.src = src="imagenes/seguinte_off.gif";
		}

		// Visualiza la ruta correspondiente al sector activo.
		muestraRuta(nSector);
	}
	else
		muestraNodos(nSector);

	// Marca el sector activo en el mapa sectorial.
	muestraCapa("sector_activo", obtenCoordenadaMapaSectorialX(nSector, nModuloActual), obtenCoordenadaMapaSectorialY(nSector, nModuloActual));
}

// ----------------------------------------------------------------------------
// Crea el mapa sectorial asociado a la imagen del plano completo.
// ----------------------------------------------------------------------------
function creaMapaSectorial(nModuloActual)
{
	var nContX, nContY; // Contadores para recorrer los sectores del mapa.
	var nNumSector; // Número de sector que se está declarando.

	document.write("<map id='mapa_menu' name='mapa_menu'>");

	for(nContY = 0, nNumSector = 1; nContY < SECTORES_VERTICALES ; nContY++)
		for(nContX = 0; nContX < SECTORES_HORIZONTALES; nContX++, ++nNumSector)
			document.write("<area alt='' coords='" + (nContX * SECTOR_ANCHO) + ", " + (nContY * SECTOR_ALTO) + "," + ((nContX + 1) * SECTOR_ANCHO) + "," + ((nContY + 1)* SECTOR_ALTO) + "' onClick='cambiaSector(" + nNumSector + "," + nModuloActual + ");'>");

	document.write("</map>");

	// Capa que muestra el sector activo.
	document.write("<div id='cpsector_activo' style='visibility:hidden;position:absolute;border:none;left:0;top:0'>");
	document.write("	<img id='img_sector_activo' src='imagenes/mapas/sector_activo.gif' onMouseOver=cambiaPuntero('hand') onMouseOut=cambiaPuntero('default')>");
	document.write("</div>");
}

// ------------------------------------------------------------------------------------
// Dada una coordenada horizontal relativa a un sector, obtiene la coordenada absoluta.
// ------------------------------------------------------------------------------------
function obtenCoordenadaAbsolutaX(nSector, nX)
{
	var nAbsX;

	switch(nSector % SECTORES_HORIZONTALES)
	{
		case 1:	nAbsX = nX;break;
		case 2:	nAbsX = (nX + MAPA_ANCHO);break;
		case 3:	nAbsX = (nX + (MAPA_ANCHO * 2));break;
		case 4:	nAbsX = (nX + (MAPA_ANCHO * 3));break;
		case 5:	nAbsX = (nX + (MAPA_ANCHO * 4));break;
		case 6:	nAbsX = (nX + (MAPA_ANCHO * 5));break;
		case 7:	nAbsX = (nX + (MAPA_ANCHO * 6));break;
		case 8:	nAbsX = (nX + (MAPA_ANCHO * 7));break;
		case 9:	nAbsX = (nX + (MAPA_ANCHO * 8));break;
		case 0: nAbsX = (nX + (MAPA_ANCHO * 9));
	}
	return(nAbsX);
}

// ------------------------------------------------------------------------------------
// Dado un sector, calcula su coordenada izquierda dentro del mapa sectorial.
// ------------------------------------------------------------------------------------
function obtenCoordenadaMapaSectorialX(nSector, nModuloActual)
{
	var nX;

	// Calculoa la posición horizontal según el sector pasado.
	switch(nSector % SECTORES_HORIZONTALES)
	{
		case 1:	nX = 0;break;
		case 2: nX = SECTOR_ANCHO;break;
		case 3: nX = (SECTOR_ANCHO * 2) - 1;break;
		case 4:	nX = (SECTOR_ANCHO * 3) - 1;break;
		case 5:	nX = (SECTOR_ANCHO * 4) - 1;break;
		case 6:	nX = (SECTOR_ANCHO * 5) - 1;break;
		case 7:	nX = (SECTOR_ANCHO * 6) - 1;break;
		case 8:	nX = (SECTOR_ANCHO * 7) - 1;break;
		case 9:	nX = (SECTOR_ANCHO * 8) - 2;break;
		case 0:	nX = (SECTOR_ANCHO * 9) - 2;
	}
	
	// Ajusta la coordenada según la posición del mapa sectorial.
	switch(nModuloActual)
	{
		case VER_RUTAS: nX += MAPA_SECTORIAL_VER_RUTAS_POSX;break;
		case BUSQUEDA: nX += MAPA_SECTORIAL_BUSQUEDA_POSX;break;
		case GESTIONAR_PARADAS: nX += MAPA_SECTORIAL_GESTIONAR_PARADAS_POSX;break;
		case GESTIONAR_NODOS: nX += MAPA_SECTORIAL_GESTIONAR_NODOS_POSX;break;
		case GESTIONAR_RUTAS: nX += MAPA_SECTORIAL_GESTIONAR_RUTAS_POSX;break;
	}
	return(nX);
}

// ----------------------------------------------------------------------------------
// Dada una coordenada vertical relativa a un sector, obtiene la coordenada absoluta.
// ----------------------------------------------------------------------------------
function obtenCoordenadaAbsolutaY(nSector, nY)
{
	var nAbsY;

	if (nSector >= 1 && nSector <= 10)
		nAbsY = nY;
	else if (nSector >= 11 && nSector <= 20)
		nAbsY = (nY + MAPA_ALTO);
	else if (nSector >= 21 && nSector <= 30)
		nAbsY = (nY + (MAPA_ALTO * 2));
	else if (nSector >= 31 && nSector <= 40)
		nAbsY = (nY + (MAPA_ALTO * 3));
	else if (nSector >= 41 && nSector <= 50)
		nAbsY = (nY + (MAPA_ALTO * 4));
	else if (nSector >= 51 && nSector <= 60)
		nAbsY = (nY + (MAPA_ALTO * 5));
	else if (nSector >= 61 && nSector <= 70)
		nAbsY = (nY + (MAPA_ALTO * 6));
	else if (nSector >= 71 && nSector <= 80)
		nAbsY = (nY + (MAPA_ALTO * 7));
	else if (nSector >= 81 && nSector <= 90)
		nAbsY = (nY + (MAPA_ALTO * 8));
	else if (nSector >= 91 && nSector <= 100)
		nAbsY = (nY + (MAPA_ALTO * 9));
	else if (nSector >= 101 && nSector <= 110)
		nAbsY = (nY + (MAPA_ALTO * 10));
	else if (nSector >= 111 && nSector <= 120)
		nAbsY = (nY + (MAPA_ALTO * 11));
	else if (nSector >= 121 && nSector <= 130)
		nAbsY = (nY + (MAPA_ALTO * 12));
	else if (nSector >= 131 && nSector <= 140)
		nAbsY = (nY + (MAPA_ALTO * 13));
	else if (nSector >= 141 && nSector <= 150)
		nAbsY = (nY + (MAPA_ALTO * 14));
	else if (nSector >= 151 && nSector <= 160)
		nAbsY = (nY + (MAPA_ALTO * 15));
	
	return(nAbsY);
}

// ----------------------------------------------------------------------------------
// Dado un sector, calcula su coordenada izquierda dentro del mapa sectorial.
// ----------------------------------------------------------------------------------
function obtenCoordenadaMapaSectorialY(nSector, nModuloActual)
{
	var nY;

	// Las correcciones que se hacen restando la coordenada devuelta son porque 
	// las divisones del mapa sectorial no están del todo ajustadas.
	if (nSector >= 1 && nSector <= 10)
		nY = 0;
	else if (nSector >= 11 && nSector <= 20)
		nY = SECTOR_ALTO;
	else if (nSector >= 21 && nSector <= 30)
		nY = (SECTOR_ALTO * 2);
	else if (nSector >= 31 && nSector <= 40)
		nY = (SECTOR_ALTO * 3) - 1;
	else if (nSector >= 41 && nSector <= 50)
		nY = (SECTOR_ALTO * 4) - 1;
	else if (nSector >= 51 && nSector <= 60)
		nY = (SECTOR_ALTO * 5) - 1;
	else if (nSector >= 61 && nSector <= 70)
		nY = (SECTOR_ALTO * 6) - 1;
	else if (nSector >= 71 && nSector <= 80)
		nY = (SECTOR_ALTO * 7) - 1;
	else if (nSector >= 81 && nSector <= 90)
		nY = (SECTOR_ALTO * 8) - 1;
	else if (nSector >= 91 && nSector <= 100)
		nY = (SECTOR_ALTO * 9) - 2;
	else if (nSector >= 101 && nSector <= 110)
		nY = (SECTOR_ALTO * 10) - 2;
	else if (nSector >= 111 && nSector <= 120)
		nY = (SECTOR_ALTO * 11) - 2;
	else if (nSector >= 121 && nSector <= 130)
		nY = (SECTOR_ALTO * 12) - 2;
	else if (nSector >= 131 && nSector <= 140)
		nY = (SECTOR_ALTO * 13) - 2;
	else if (nSector >= 141 && nSector <= 150)
		nY = (SECTOR_ALTO * 14) - 3;
	else if (nSector >= 151 && nSector <= 160)
		nY = (SECTOR_ALTO * 15) - 3;

	// Ajusta la coordenada según la posición del mapa sectorial.
	switch(nModuloActual)
	{
		case VER_RUTAS: nY += MAPA_SECTORIAL_VER_RUTAS_POSY;break;
		case BUSQUEDA: nY += MAPA_SECTORIAL_BUSQUEDA_POSY;break;
		case GESTIONAR_PARADAS: nY += MAPA_SECTORIAL_GESTIONAR_PARADAS_POSY;break;
		case GESTIONAR_NODOS: nY += MAPA_SECTORIAL_GESTIONAR_NODOS_POSY;break;
		case GESTIONAR_RUTAS: nY += MAPA_SECTORIAL_GESTIONAR_RUTAS_POSY;break;
	}
	return(nY);
}

// ----------------------------------------------------------------------------------
// Dado un punto, devuelve si está dentro de los límites del sector presentado o no.
// ----------------------------------------------------------------------------------
function bEstaEnLosLimitesDelMapa(nCoordX, nCoordY)
{
	return (nCoordX >= SECTOR_POSX && nCoordY >= SECTOR_POSY && nCoordX <= (SECTOR_POSX + MAPA_ANCHO - 5) && nCoordY <= (SECTOR_POSY + MAPA_ALTO - 5));
}

// ----------------------------------------------------------------------------
// Crea el mapa sectorial asociado a la imagen del plano completo.
// ----------------------------------------------------------------------------
function creaMapaSectorial2(nRutaId)
{
	var nContX, nContY; // Contadores para recorrer los sectores del mapa.
	var nNumSector; // Número de sector que se está declarando.

	document.write("<map id='mapa_menu' name='mapa_menu'>");

	for(nContY = 0, nNumSector = 1; nContY < 8 ; nContY++)
		for(nContX = 0; nContX < 5; nContX++, ++nNumSector)
			document.write("<area alt='' coords='" + (nContX * 50) + ", " + (nContY * 44) + "," + ((nContX + 1) * 50) + "," + ((nContY + 1)* 44) + "' onClick='cambiaSector2(" + nNumSector + "," + nRutaId + ");'>");

	document.write("</map>");
}

// ----------------------------------------------------------------------------
// Crea el mapa sectorial asociado a la imagen del plano completo (PARA RUTAS DESDE/HACIA PARKINGS).
// ----------------------------------------------------------------------------
function creaMapaSectorial4(nParkingId, nCarreteraId)
{
	var nContX, nContY; // Contadores para recorrer los sectores del mapa.
	var nNumSector; // Número de sector que se está declarando.

	document.write("<map id='mapa_menu' name='mapa_menu'>");

	for(nContY = 0, nNumSector = 1; nContY < 8 ; nContY++)
		for(nContX = 0; nContX < 5; nContX++, ++nNumSector)
			document.write("<area alt='' coords='" + (nContX * 50) + ", " + (nContY * 44) + "," + ((nContX + 1) * 50) + "," + ((nContY + 1)* 44) + "' onClick='cambiaSector3(" + nNumSector + "," + nParkingId + "," + nCarreteraId + ");'>");

	document.write("</map>");
}

// Cambia la imagen parcial del mapa presentado por pantalla según el sector elegido por el usuario.
// SI SE INSERTA UNA NUEVA LINEA HAY QUE MODIFICAR ESTA FUNCION.
function cambiaSector2(nSector, nRutaId)
{
	var sPathImagenes = "imagenes/lineas/linea";

	// Establece el sector activo.
	mapa.src = "imagenes/mapas/sectores_40/zoom" + nSector + ".gif";

	// Establece la imagen con la línea a mostrar.
	with(document.patron)
	{
		switch(nRutaId)
		{
			case 218: src = sPathImagenes + "1/zoom" + nSector + "_1.gif";break;
			case 219: src = sPathImagenes + "1/zoom" + nSector + "_1v.gif";break;
			case 220: src = sPathImagenes + "2/zoom" + nSector + "_2.gif";break;
			case 221: src = sPathImagenes + "2/zoom" + nSector + "_2v.gif";break;
			case 222: src = sPathImagenes + "4/zoom" + nSector + "_4.gif";break;
			case 224: src = sPathImagenes + "4/zoom" + nSector + "_4v.gif";break;
			case 225: src = sPathImagenes + "5/zoom" + nSector + "_5.gif";break;
			case 227: src = sPathImagenes + "5/zoom" + nSector + "_5v.gif";break;
			case 228: src = sPathImagenes + "6/zoom" + nSector + "_6.gif";break;
			case 229: src = sPathImagenes + "6/zoom" + nSector + "_6v.gif";break;
			case 230: src = sPathImagenes + "7/zoom" + nSector + "_7.gif";break;
			case 231: src = sPathImagenes + "7/zoom" + nSector + "_7v.gif";break;
			case 232: src = sPathImagenes + "8/zoom" + nSector + "_8.gif";break;
			case 233: src = sPathImagenes + "8/zoom" + nSector + "_8v.gif";break;
			case 234: src = sPathImagenes + "9/zoom" + nSector + "_9.gif";break;
			case 235: src = sPathImagenes + "9/zoom" + nSector + "_9v.gif";break;
			case 236: src = sPathImagenes + "11/zoom" + nSector + "_11.gif";break;
			case 237: src = sPathImagenes + "12/zoom" + nSector + "_12.gif";break;
			case 238: src = sPathImagenes + "12/zoom" + nSector + "_12v.gif";break;
			case 239: src = sPathImagenes + "13/zoom" + nSector + "_13.gif";break;
			case 240: src = sPathImagenes + "13/zoom" + nSector + "_13v.gif";break;
			case 243: src = sPathImagenes + "15/zoom" + nSector + "_15.gif";break;
			case 244: src = sPathImagenes + "15/zoom" + nSector + "_15v.gif";break;
			case 247: src = sPathImagenes + "C1/zoom" + nSector + "_c1.gif";break;
			case 248: src = sPathImagenes + "C2/zoom" + nSector + "_c2.gif";break;
			case 249: src = sPathImagenes + "C3/zoom" + nSector + "_C3.gif";break;
			case 252: src = sPathImagenes + "C4/zoom" + nSector + "_C4.gif";break;
			case 253: src = sPathImagenes + "C5/zoom" + nSector + "_C5.gif";break;
			case 256: src = sPathImagenes + "C6/zoom" + nSector + "_C6.gif";
		}
	}
	
	// Actualiza el sector activo.
	document.frm.txtSectorActivo.value = nSector;
}

// Cambia la imagen parcial del mapa presentado por pantalla según el sector elegido por el usuario.
// PARA RUTAS DE PARKINGS.
function cambiaSector3(nSector, nParkingId, nCarreteraId)
{
	var sCadParking, sCadCarretera;

	// Establece el sector activo.
	mapa.src = "imagenes/mapas/sectores_40_parking/zoom" + nSector + ".gif";

	// Obtiene el directorio donde se encuentran las imágenes correspondientes al parking en cuestión.
	with(document.patron)
	{
		switch(nParkingId)
		{
			// Belvís.
			case 1:
			{
				sPathImagenes = "imagenes/rutas_parkings/belvis/zoom";
				sCadParking = "BE";
			}break;

			// Xoan XXIII.
			case 2: 
			{
				sPathImagenes = "imagenes/rutas_parkings/xoan23/zoom";
				sCadParking = "XO";
			}break;

			// Salgueiriños.
			case 3:
			{
				sPathImagenes = "imagenes/rutas_parkings/salgueirinos/zoom"
				sCadParking = "SA"
			}

			// Dársena Xoan XXIII (Las formas de llegar y salir son las mismas que para el parking).
			case 5: 
			{
				sPathImagenes = "imagenes/rutas_parkings/xoan23/zoom";
				sCadParking = "XO";
			}break;

			// Estación de autobuses
			case 6: 
			{
				sPathImagenes = "imagenes/rutas_parkings/estacion/zoom";
				sCadParking = "ES";
			}break;

		}

		sPathImagenes = sPathImagenes + nSector + "_";
		
		// Obtiene el mapa sectorial correspondiente.
		switch(nCarreteraId)
		{
			case 1: src = sPathImagenes + "SC_" + sCadParking + ".gif";break;
			case 2: src = sPathImagenes + "NO_" + sCadParking + ".gif";break;
			case 3: src = sPathImagenes + "PO_" + sCadParking + ".gif";break;
			case 4: src = sPathImagenes + "OU_" + sCadParking + ".gif";break;
			case 5: src = sPathImagenes + "AC_" + sCadParking + ".gif";break;
			case 6: src = sPathImagenes + "AU_" + sCadParking + ".gif";break;
			case 7: src = sPathImagenes + "LU_" + sCadParking + ".gif";break;
			case 8: src = sPathImagenes + sCadParking + "_SC" + ".gif";break;
			case 9: src = sPathImagenes + sCadParking + "_NO" + ".gif";break;
			case 10: src = sPathImagenes + sCadParking + "_PO" + ".gif";break;
			case 11: src = sPathImagenes + sCadParking + "_OU" + ".gif";break;
			case 12: src = sPathImagenes + sCadParking + "_AC" + ".gif";break;
			case 13: src = sPathImagenes + sCadParking + "_AU" + ".gif";break;
			case 14: src = sPathImagenes + sCadParking + "_LU" + ".gif";
		}
	}

	// Actualiza el sector activo.
	document.frm.txtSectorActivo.value = nSector;

}

// -------------------------------------------------------------------------------------------
// Crea el mapa sectorial asociado a la imagen del plano completo para hacer zooms de la ruta.
// -------------------------------------------------------------------------------------------
function creaMapaSectorial3(nRutaId)
{
	document.write("<map id='mapa_zoom' name='mapa_zoom'>");
	document.write("	<area alt='' coords='0, 0, 324, 231' onClick='redirecciona(" + nRutaId + ", 1)'>");
	document.write("	<area alt='' coords='324, 0, 669, 231' onClick='redirecciona(" + nRutaId + ", 2)'>");
	document.write("	<area alt='' coords='0, 231, 324, 462' onClick='redirecciona(" + nRutaId + ", 3)'>");
	document.write("	<area alt='' coords='324, 231, 669, 462' onClick='redirecciona(" + nRutaId + ", 4)'>");
	document.write("</map>");
}

function redirecciona(nRutaId, nArea)
{
	var nSectorActivo;

	with(document.frm)
	{
		// HAY QUE REDUCIR TODA ESTA BASURA COMO SEA.
		if (txtSectorActivo.value == "1")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 1;break;
				case 2:nSectorActivo = 2;break;
				case 3:nSectorActivo = 11;break;
				case 4:nSectorActivo = 12;break;
			}
		}

		else if (txtSectorActivo.value == "2")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 3;break;
				case 2:nSectorActivo = 4;break;
				case 3:nSectorActivo = 13;break;
				case 4:nSectorActivo = 14;break;
			}
		}

		else if (txtSectorActivo.value == "3")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 5;break;
				case 2:nSectorActivo = 6;break;
				case 3:nSectorActivo = 15;break;
				case 4:nSectorActivo = 16;break;
			}
		}

		else if (txtSectorActivo.value == "4")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 7;break;
				case 2:nSectorActivo = 8;break;
				case 3:nSectorActivo = 17;break;
				case 4:nSectorActivo = 18;break;
			}
		}
		
		else if (txtSectorActivo.value == "5")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 9;break;
				case 2:nSectorActivo = 10;break;
				case 3:nSectorActivo = 19;break;
				case 4:nSectorActivo = 20;break;
			}
		}
		
		else if (txtSectorActivo.value == "6")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 21;break;
				case 2:nSectorActivo = 22;break;
				case 3:nSectorActivo = 31;break;
				case 4:nSectorActivo = 32;break;
			}
		}
		
		else if (txtSectorActivo.value == "7")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 23;break;
				case 2:nSectorActivo = 24;break;
				case 3:nSectorActivo = 33;break;
				case 4:nSectorActivo = 34;break;
			}
		}
		
		else if (txtSectorActivo.value == "8")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 25;break;
				case 2:nSectorActivo = 26;break;
				case 3:nSectorActivo = 35;break;
				case 4:nSectorActivo = 36;break;
			}
		}
		
		else if (txtSectorActivo.value == "9")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 27;break;
				case 2:nSectorActivo = 28;break;
				case 3:nSectorActivo = 37;break;
				case 4:nSectorActivo = 38;break;
			}
		}
	
		else if (txtSectorActivo.value == "10")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 29;break;
				case 2:nSectorActivo = 30;break;
				case 3:nSectorActivo = 39;break;
				case 4:nSectorActivo = 40;break;
			}
		}
	
		else if (txtSectorActivo.value == "11")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 41;break;
				case 2:nSectorActivo = 42;break;
				case 3:nSectorActivo = 51;break;
				case 4:nSectorActivo = 52;break;
			}
		}
			
		else if (txtSectorActivo.value == "12")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 43;break;
				case 2:nSectorActivo = 44;break;
				case 3:nSectorActivo = 53;break;
				case 4:nSectorActivo = 54;break;
			}
		}
		
		else if (txtSectorActivo.value == "13")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 45;break;
				case 2:nSectorActivo = 46;break;
				case 3:nSectorActivo = 55;break;
				case 4:nSectorActivo = 56;break;
			}
		}
			
		else if (txtSectorActivo.value == "14")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 47;break;
				case 2:nSectorActivo = 48;break;
				case 3:nSectorActivo = 57;break;
				case 4:nSectorActivo = 58;break;
			}
		}
		
		else if (txtSectorActivo.value == "15")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 49;break;
				case 2:nSectorActivo = 50;break;
				case 3:nSectorActivo = 59;break;
				case 4:nSectorActivo = 60;break;
			}
		}
		
		else if (txtSectorActivo.value == "16")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 61;break;
				case 2:nSectorActivo = 62;break;
				case 3:nSectorActivo = 71;break;
				case 4:nSectorActivo = 72;break;
			}
		}
			
		else if (txtSectorActivo.value == "17")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 63;break;
				case 2:nSectorActivo = 64;break;
				case 3:nSectorActivo = 73;break;
				case 4:nSectorActivo = 74;break;
			}
		}
		
		else if (txtSectorActivo.value == "18")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 65;break;
				case 2:nSectorActivo = 66;break;
				case 3:nSectorActivo = 75;break;
				case 4:nSectorActivo = 76;break;
			}
		}
		
		else if (txtSectorActivo.value == "19")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 67;break;
				case 2:nSectorActivo = 68;break;
				case 3:nSectorActivo = 77;break;
				case 4:nSectorActivo = 78;break;
			}
		}
		
		else if (txtSectorActivo.value == "20")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 69;break;
				case 2:nSectorActivo = 70;break;
				case 3:nSectorActivo = 79;break;
				case 4:nSectorActivo = 80;break;
			}
		}
		
		else if (txtSectorActivo.value == "21")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 81;break;
				case 2:nSectorActivo = 82;break;
				case 3:nSectorActivo = 91;break;
				case 4:nSectorActivo = 92;break;
			}
		}
		
		else if (txtSectorActivo.value == "22")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 83;break;
				case 2:nSectorActivo = 84;break;
				case 3:nSectorActivo = 93;break;
				case 4:nSectorActivo = 94;break;
			}
		}
			
		else if (txtSectorActivo.value == "23")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 85;break;
				case 2:nSectorActivo = 86;break;
				case 3:nSectorActivo = 95;break;
				case 4:nSectorActivo = 96;break;
			}
		}
			
		else if (txtSectorActivo.value == "24")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 87;break;
				case 2:nSectorActivo = 88;break;
				case 3:nSectorActivo = 97;break;
				case 4:nSectorActivo = 98;break;
			}
		}
		
		else if (txtSectorActivo.value == "25")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 89;break;
				case 2:nSectorActivo = 90;break;
				case 3:nSectorActivo = 99;break;
				case 4:nSectorActivo = 100;break;
			}
		}
		
		else if (txtSectorActivo.value == "26")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 101;break;
				case 2:nSectorActivo = 102;break;
				case 3:nSectorActivo = 111;break;
				case 4:nSectorActivo = 112;break;
			}
		}
		
		else if (txtSectorActivo.value == "27")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 103;break;
				case 2:nSectorActivo = 104;break;
				case 3:nSectorActivo = 113;break;
				case 4:nSectorActivo = 114;break;
			}
		}
			
		else if (txtSectorActivo.value == "28")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 105;break;
				case 2:nSectorActivo = 106;break;
				case 3:nSectorActivo = 115;break;
				case 4:nSectorActivo = 116;break;
			}
		}
		
		else if (txtSectorActivo.value == "29")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 107;break;
				case 2:nSectorActivo = 108;break;
				case 3:nSectorActivo = 117;break;
				case 4:nSectorActivo = 118;break;
			}
		}
		
		else if (txtSectorActivo.value == "30")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 109;break;
				case 2:nSectorActivo = 110;break;
				case 3:nSectorActivo = 119;break;
				case 4:nSectorActivo = 120;break;
			}
		}
			
		else if (txtSectorActivo.value == "31")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 121;break;
				case 2:nSectorActivo = 122;break;
				case 3:nSectorActivo = 131;break;
				case 4:nSectorActivo = 132;break;
			}
		}
			
		else if (txtSectorActivo.value == "32")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 123;break;
				case 2:nSectorActivo = 124;break;
				case 3:nSectorActivo = 133;break;
				case 4:nSectorActivo = 134;break;
			}
		}
			
		else if (txtSectorActivo.value == "33")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 125;break;
				case 2:nSectorActivo = 126;break;
				case 3:nSectorActivo = 135;break;
				case 4:nSectorActivo = 136;break;
			}
		}
		
		else if (txtSectorActivo.value == "34")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 127;break;
				case 2:nSectorActivo = 128;break;
				case 3:nSectorActivo = 137;break;
				case 4:nSectorActivo = 138;break;
			}
		}
		
		else if (txtSectorActivo.value == "35")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 129;break;
				case 2:nSectorActivo = 130;break;
				case 3:nSectorActivo = 139;break;
				case 4:nSectorActivo = 140;break;
			}
		}
		
		else if (txtSectorActivo.value == "36")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 141;break;
				case 2:nSectorActivo = 142;break;
				case 3:nSectorActivo = 151;break;
				case 4:nSectorActivo = 152;break;
			}
		}
		
		else if (txtSectorActivo.value == "37")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 143;break;
				case 2:nSectorActivo = 144;break;
				case 3:nSectorActivo = 153;break;
				case 4:nSectorActivo = 154;break;
			}
		}
		
		else if (txtSectorActivo.value == "38")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 145;break;
				case 2:nSectorActivo = 146;break;
				case 3:nSectorActivo = 155;break;
				case 4:nSectorActivo = 156;break;
			}
		}
			
		else if (txtSectorActivo.value == "39")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 147;break;
				case 2:nSectorActivo = 148;break;
				case 3:nSectorActivo = 157;break;
				case 4:nSectorActivo = 158;break;
			}
		}
		
		else if (txtSectorActivo.value == "40")
		{
			switch(nArea)
			{
				case 1:nSectorActivo = 149;break;
				case 2:nSectorActivo = 150;break;
				case 3:nSectorActivo = 159;break;
				case 4:nSectorActivo = 160;break;
			}
		}
		location.href="transporte_urbano_160.asp?nRutaId=" + nRutaId + "&nSectorActivo=" + nSectorActivo + "&nSectorAVolver=" + document.frm.txtSectorActivo.value
	}// with.
}