/*
//************************************************************************
//
// Catálogo de biodiversidad del País Vasco - Urdaibai
// ============================================
// Adrià Mercader & Arturo Bandini
// Copyright (c) 2007 by Geodata Sistemas S.L.
// http://www.geodata.es
//
// Funcions javascript de control del mapa
//
//************************************************************************
*/
	var maxScaleLevels = 3; 
	var curScaleLevel = 1;

	
	function doMapAction(code){
		switch(code){
			case "1":
			case "2":
			case "3":
			case "4":
			case "5":
				mapActionExtent(code);
			break;
			case "6":
			case "7":
				mapActionZoom((code == "6"));
			break;
			case "8":
				clearTiles();
			break;
		}		
		return false;
	}
	
	function mapActionZoom(zoomin){
		if (
				(zoomin && (curScaleLevel <= maxScaleLevels)) ||
				(!zoomin && (curScaleLevel >= 1))
				)
		{
			var map = getMapObject();
			
			var scaleFactor = (zoomin) ? 0.50 : 1.50;
			var curScale = map.getscale();
			var correction = curScale * scaleFactor;
			(zoomin) ? curScaleLevel++ : curScaleLevel--;
			
			
			
			var newScale = (zoomin) ? curScale - correction : curScale + correction;
			
			//getIframeElementById("divSelectionMapTitle").innerHTML = "escala:"+newScale;
			
			map.setscale(newScale);
		}
		return false;
		
	}

	function mapActionExtent(direction){
		var doSetExtent = false;
		var map = getMapObject();
		
		var panFactor = 0.20;
		var curExtent = map.extent;
		var fullExtent = map.fullextent;

 		var newExtent = curExtent;
 		switch(direction){
 			case "1":	//Nord
 				if (parseInt(curExtent.top) < parseInt(fullExtent.top)){
 					newExtent.top = curExtent.top + (curExtent.height * panFactor);
 					newExtent.bottom = curExtent.bottom + (curExtent.height * panFactor);
 					doSetExtent = true;
 				}
 			break;
 			case "2":	//Oest
 				if (parseInt(curExtent.left) > parseInt(fullExtent.left)) {
 				
 					newExtent.right = curExtent.right - (curExtent.width * panFactor);
 					newExtent.left = curExtent.left - (curExtent.width * panFactor);
 					doSetExtent = true;
 				}
 			break;
 			case "3":	//Est
 				if (parseInt(curExtent.right) < parseInt(fullExtent.right)) {
 					newExtent.right = curExtent.right + (curExtent.width * panFactor);
 					newExtent.left = curExtent.left + (curExtent.width * panFactor);
 					doSetExtent = true;
 				}
 			break;
 			case "4":	//Sud
 				if (parseInt(curExtent.bottom) > parseInt(fullExtent.bottom)) {
 					newExtent.top = curExtent.top - (curExtent.height * panFactor);
 					newExtent.bottom = curExtent.bottom - (curExtent.height * panFactor);
 					doSetExtent = true;
 				}
 			break;
 			case "5":	//Complet
				newExtent.left = map.fullextent.left;
				newExtent.top = map.fullextent.top;
				newExtent.right = map.fullextent.right;
				newExtent.bottom = map.fullextent.bottom;
				doSetExtent = true;
				curScaleLevel = 1;
 			break;
 		}
		if (doSetExtent) map.setextent(
																		newExtent.left,
																		newExtent.top,
																		newExtent.right,
																		newExtent.bottom,
																		true
																		);
		return false;
	}
	
	function selectTile(x,y){

		if (grid){
			var map = getMapObject();
			var record = false;
			for (i=0; i< grid.length; i++) {
				if ((x > grid[i]["GRD_XMIN"]) && (x < grid[i]["GRD_XMAX"]) && (y > grid[i]["GRD_YMIN"]) && (y < grid[i]["GRD_YMAX"])) {
					record = grid[i];
					break;
				}
			}
			if (record){
				if (!checkTileExists(record["GRD_CODE"])){
					var coords = record["GRD_XMIN"]+","+record["GRD_YMAX"]+","+record["GRD_XMAX"]+","+record["GRD_YMAX"]+","+record["GRD_XMAX"]+","+record["GRD_YMIN"]+","+record["GRD_XMIN"]+","+record["GRD_YMIN"];
					map.addelement(record["GRD_CODE"], "polygon", coords, null);
				} else {
					map.removeelement(record["GRD_CODE"]);
				}
				map.showelements(false);
				if (adminSelMap) refreshTxtGridCodes();
			}
		}
		return false;				
	}

	function setTiles(speciesGridCodes){
		var sldConnName = "malla10k";
		var sldLayerName = "malla10k";
		
		
		//gridcodes = gridcodes.split(",");
		var map = getMapObject();
		var i = map._getserverindex(sldConnName);
		var conn = map.connections[i];

		conn.setsldparameter('gridcodes',speciesGridCodes);
		map.refresh();

		if (adminSelMap) document.getElementById("txtGridCodes").innerHTML = speciesGridCodes.replace(/,/g,", ");
		
		/*
		var j = map.connections[i]._getlayerindex(sldLayerName);
		var layer = map.connections[i].layers[j];
		*/
		
		
		
		return;
		
		if (grid){
			var map = getMapObject();
			var txtGridCodes = "";
			map.clearelements();
			for (i=0; i< speciesGridCodes.length; i++) {
				gridcode = speciesGridCodes[i];
				var coords = gridcode["GRD_XMIN"]+","+gridcode["GRD_YMAX"]+","+gridcode["GRD_XMAX"]+","+gridcode["GRD_YMAX"]+","+gridcode["GRD_XMAX"]+","+gridcode["GRD_YMIN"]+","+gridcode["GRD_XMIN"]+","+gridcode["GRD_YMIN"];
				map.addelement(gridcode["GRD_CODE"], "polygon", coords, null);
				if (i>0) txtGridCodes += ", ";
				txtGridCodes += gridcode["GRD_CODE"];
			}
			map.showelements(false);
			//if (adminSelMap) setElementValue("txtGridCodes",txtGridCodes);
			if (adminSelMap) document.getElementById("txtGridCodes").innerHTML = txtGridCodes;
		}
		return false;				
	}
	
	function checkTileExists(code) {
		var map = getMapObject();
		
		for( var i=0 ; i < map.elements.length ; i++) {
			if (map.elements[i].name == code) {
				return true;
			}			
		}
		return false;
	}

	function refreshTxtGridCodes(){

		var map = getMapObject();
		var txtCodes = "";
		for( var i=0 ; i < map.elements.length ; i++) {
			if (i>0) txtCodes += ", ";
			txtCodes += map.elements[i].name;
		}
		if (!txtCodes.length) txtCodes = "< No hay quadr&iacute;culas seleccionadas >";
		//document.getElementById("txtGridCodes").value = txtCodes;
		document.getElementById("txtGridCodes").innerHTML = txtCodes;
	}
	
	function clearTiles(){
		var map = getMapObject();
		map.elements = new Array();
		map.showelements(false);
		if (adminSelMap) refreshTxtGridCodes();
		return false;
	}
	
	function selectAllTiles(){
		
	}
	
	function sendTiles(){
		var oDiv;
		var oInput;
		var oForm;
		
		var codes = new Array;
		
		var map = getMapObject();
		if (map.elements.length){
			for(i=0; i < map.elements.length; i++){
				codes[codes.length] = map.elements[i].name;
			}
			oInput = getIframeElementById("inputCodes")
			oInput.value = codes.join(",");
			oForm = getIframeElementById("formSelectionMap");
			oForm.submit();		
		} else {
			var lang = getIframeElementById("inputLang").value;
			oDiv = getIframeElementById("divSelectionMapTitle");
			oDiv.innerHTML = parent.stringsLoc[lang]["str_msg_5"];
		}
		return false;
	}
	
	
	function getMapObject(){
		var out = false;
		//var out = window.frames["iframePages"].frames["iframeMapSelection"].myMap.map;

		var oIframePage = document.getElementById('iframePages');

		var oDoc;
		if (oIframePage) {
			oDoc = (oIframePage.contentWindow || oIframePage.contentDocument);
			if (oDoc.document) oDoc = oDoc.document;
		} else {
			oDoc = window.document;
		}

		var oMapSelPage = oDoc.getElementById('iframeMapSelection');
		var oDoc = (oMapSelPage.contentWindow || oMapSelPage.contentDocument);
		if (oDoc.myMap) return oDoc.myMap.map;
		
		return out;
		
	}
