var map;
var untiled;
var tiled;
var format = new OpenLayers.Format.SLD();


/* Funciones para la carga de estilos*/

function initStyles(){
	OpenLayers.loadURL("./resources/sld/sld-recorridos.xml", null, null, complete);
}

function complete(req) {
	sld = format.read(req.responseXML || req.responseText);
}

OpenLayers.IMAGE_RELOAD_ATTEMPTS = 5;
OpenLayers.DOTS_PER_INCH = 25.4 / 0.28;

function initCalleMarcada(){

	calle_marcada = new OpenLayers.Layer.WMS(
			LAYER_CALLE_MARCADA, wmsServerURL,
			{
				width: MAP_WIDTH,
				srs: 'EPSG:32721',
				layers: 'stm_via_sitio',
				height: MAP_HEIGHT,
				styles: '',
				format: 'image/jpeg',
				tiled: 'true',
				transparent:'true',
				tilesOrigin : '' + MAP_LLX + ',' + MAP_LLY
			},
			{buffer: 0} 
	);        	
}

function initCalleDestino(){

	calle_destino = new OpenLayers.Layer.WMS(
			LAYER_CALLE_DESTINO, wmsServerURL,
			{
				width: MAP_WIDTH,
				srs: 'EPSG:32721',
				layers: 'stm_via_destino',
				height: MAP_HEIGHT,
				styles: '',
				format: 'image/jpeg',
				tiled: 'true',
				transparent:'true',
				tilesOrigin : '' + MAP_LLX + ',' + MAP_LLY
			},
			{buffer: 0} 
	);        	
}

function initRecorridoMarcado(){
	recorrido_marcado = new OpenLayers.Layer.WMS(
			LAYER_RECORRIDO_MARCADO, wmsServerURL,
			{
				width: MAP_WIDTH,
				srs: 'EPSG:32721',
				layers: 'stm_variante_sitio',
				height: MAP_HEIGHT,
				styles: '',
				format: 'image/jpeg',
				tiled: 'true',
				transparent:'true',
				tilesOrigin : '' + MAP_LLX + ',' + MAP_LLY
			},
			{buffer: 0} 
	);
}

function initRecorridoDestino(){

	recorrido_destino = new OpenLayers.Layer.WMS(
			LAYER_RECORRIDO_DESTINO, wmsServerURL,
			{
				width: MAP_WIDTH,
				srs: 'EPSG:32721',
				layers: 'stm_variante_destino',
				height: MAP_HEIGHT,
				styles: '',
				format: 'image/jpeg',
				tiled: 'true',
				transparent:'true',
				tilesOrigin : '' + MAP_LLX + ',' + MAP_LLY
			},
			{buffer: 0} 
	);
}

function initParadasRuta(){
	// paradas_ruta
	paradas_ruta = new OpenLayers.Layer.WMS(
			LAYER_PARADAS_RUTA, wmsServerURL,
			{
				width: MAP_WIDTH,
				srs: 'EPSG:32721',
				layers: 'v_uptu_paradas',
				height: MAP_HEIGHT,
				styles: '',
				format: 'image/jpeg',
				tiled: 'true',
				transparent:'true',
				tilesOrigin : '' + MAP_LLX + ',' + MAP_LLY
			},
			{buffer: 0} 
	);
}

function initParadasRecorridoMarcado(){
	// paradas_recorrido_marcado
	paradas_recorrido_marcado = new OpenLayers.Layer.WMS(
			LAYER_PARADAS_RECORRIDO_MARCADO, wmsServerURL,
			{
				width: MAP_WIDTH,
				srs: 'EPSG:32721',
				layers: 'v_uptu_paradas',
				height: MAP_HEIGHT,
				styles: '',
				format: 'image/jpeg',
				tiled: 'true',
				transparent:'true',
				tilesOrigin : '' + MAP_LLX + ',' + MAP_LLY
			},
			{buffer: 0} 
	);
}

function initParadasRecorridoDestino(){
	// paradas_recorrido_destino
	paradas_recorrido_destino = new OpenLayers.Layer.WMS(
			LAYER_PARADAS_RECORRIDO_DESTINO, wmsServerURL,
			{
				width: MAP_WIDTH,
				srs: 'EPSG:32721',
				layers: 'v_uptu_paradas',
				height: MAP_HEIGHT,
				styles: '',
				format: 'image/jpeg',
				tiled: 'true',
				transparent:'true',
				tilesOrigin : '' + MAP_LLX + ',' + MAP_LLY
			},
			{buffer: 0} 
	);
}

function init(){
	
	var IMM_bounds = new OpenLayers.Bounds(
			573943, 6136727, 
			574921, 6137303
	);
	var bounds = new OpenLayers.Bounds(
			MAP_LLX, MAP_LLY,
			MAP_URX, MAP_URY
	);
	var overview_bounds = new OpenLayers.Bounds(
			550000, 6133000,
			590000, 6161000
	);
	var options = {
			controls: [new OpenLayers.Control.ScaleLine()],
			maxExtent: bounds,
			maxResolution: MAP_MAX_RESOLUTION,//161.60577855770543,
			numZoomLevels: ZOOM_LEVELS,
			projection: "EPSG:32721",
			units: 'm'
	};
	map = new OpenLayers.Map('map', options);



	carto_basica_tiled_geoserver_cache = new OpenLayers.Layer.WMS(
			"Cartografia basica - GeoServer", geoWebCacheWMSURL,
			{
				width: MAP_WIDTH,
				srs: 'EPSG:32721',
				layers:'stm_carto_basica',
				height: MAP_HEIGHT,
				styles: '',
				format: 'image/png'//,
				//tiled: 'true'
			},{transitionEffect:'resize'},
			{buffer: 0} 
	);

	carto_basica_tiled_geoserver = new OpenLayers.Layer.WMS(
			"Cartografia basica - GeoServer", wmsServerURL,
			{
				width: MAP_WIDTH,
				srs: 'EPSG:32721',
				layers:'stm_carto_basica_overview',
				height: MAP_HEIGHT,
				styles: '',
				format: 'image/png'//,
				//tiled: 'true'
			},{transitionEffect:'resize'},
			{buffer: 0} 
	);


	initCalleMarcada();
	initCalleDestino();
	initRecorridoMarcado();
	initRecorridoDestino();
	initParadasRuta();
	initParadasRecorridoMarcado();
	initParadasRecorridoDestino();
		

	map.addLayers([carto_basica_tiled_geoserver_cache]);

	// setup controls and initial zooms
	map.addControl(new OpenLayers.Control.PanZoomBar({zoomWorldIcon:true}));
	map.addControl(new OpenLayers.Control.Navigation({zoomWheelEnabled:false}));
	//map.addControl(new OpenLayers.Control.Scale($('scale')));
	//map.addControl(new OpenLayers.Control.MousePosition({element: $('location')}));
	//map.addControl(new OpenLayers.Control.LayerSwitcher());
	  // create an overview map control with the default options
    var overviewOptions = {
            mapOptions: {maxExtent: bounds,
        				 maxResolution: 'auto',		
        				 numZoomLevels: 1,
        				 projection: "EPSG:32721"},
    		layers: [carto_basica_tiled_geoserver]
        }

	var overview = new OpenLayers.Control.OverviewMap(overviewOptions);
    map.addControl(overview);

	map.zoomToExtent(IMM_bounds);
	initStyles(); 
	/*
	var compId =extractParameter('idc');
	if(compId != ""){
		fireOnClick('sitio');
	}
	*/
}


function extractParameter( name ){
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec( window.location.href );
	if( results == null )
		return "";
	else
		return unescape(results[1]);
}


