//guarden la posició x,y d'on s'ha clicat
var pixelMouseX=0; 
var pixelMouseY=0; 

/**
*	Inicialització del mapa.
*/
function loadMap() {
	var hasWfs=false;

	// inicialització del mapa.
	map = new NMap(document.getElementById("map"),"",treeContent.getServiceCount(),true,true,"map");
	map.setConfig_epsg(mapEPSG);
	map.setConfig_transparent(mapTransparent);
	map.addOverviewMap(150, 100, "BOTTOM_RIGHT", 10, 10, borderStyle, false, treeContent.getServiceById(treeContent.overviewMap_service).url, treeContent.overviewMap_format, treeContent.overviewMap_layers);

	//map.setMapServerPDFUrl(urlImprimir);

	map.setMapServerPDFUrl(urlOpenImprimir);
	map.setPrintPreviewColor("#eedc95");

	// configurem layers del mapa.
	var numberOfLayers=treeContent.getServiceCount();
	for (var i=0; i<numberOfLayers; i++) {
		
		var service=treeContent.services[i];

		var maplayer=map.getLayerByPos(i);
		if (service.type=="wms" || service.type=="wfs") {
			maplayer.id=service.id;
			maplayer.type=service.type;
			maplayer.serverUrl=service.url;
			maplayer.printUrl=service.printurl;
			maplayer.printDPI=service.printdpi;
			maplayer.imageFormat=treeContent.getBestFormat(service.id);
			maplayer.setTransparency(service.transparency);
		}

		if (maplayer.type=="wfs") {
			hasWfs=true;
			wfsstyles=treeContent.getWFSConfigArray(service.id);				
			WFSProxy.setStyles(wfsstyles,setWFSStylesResponse);
			maplayer.setStyles(wfsstyles);
		}
		
	}
	map.eventAfterAllLayersLoaded = function() {
		// associem funcio per quan facin resize ajustar mapa
		window.onresize=windowResize;
	}

	// event executat abans d'una peticio de pan o zoom
	map.eventBeforeMapAction = function(currentScale,targetScale) {
	//	map.pois.clear();
		
		// abans de cada peticio mirem layers actius i millor format per la imatge
		var numberOfLayers=treeContent.getServiceCount();
		for (var i=0; i<numberOfLayers; i++) {
			var id=treeContent.services[i].id;
			var mapLayer=map.getLayerById(id);
			mapLayer.setLayers(treeContent.getVisibleLayersNames(id));
			mapLayer.imageFormat=treeContent.getBestFormat(id);
		}
	};

	// event executat abans d'una peticio de info
	map.eventBeforeIdentifyQuery = function(pixelX,pixelY) {
		pixelMouseX=pixelX;
		pixelMouseY=pixelY;
		map.setMapServerIdentifyUrl(treeContent.serviceInfo.url);
		map.setIdentifyLayers(treeContent.serviceInfo.querylayers);

		// quan esta maximitzat configurem perque obri info a un panell dojo. Sinò al toc.
		if (mapIsMaximized()) map.setIdentifyResponseType(map.IDENTIFY_DOJO);
		else map.setIdentifyResponseType(map.IDENTIFY_TOC);
	};

	// Quan la informacio es mostra al toc es crida aquesta funcio.
	map.processIdentifyTOCResponse= function (responseText) {
		
		document.getElementById("infoDiv").innerHTML=responseText;

		var i=0;
		var ddColection=document.getElementsByTagName("dd");
		var openBlockId=0;
		var infoBlockId=0;
		while (i<ddColection.length) {
			if ( ddColection[i].style.display == "block" ) {
				openBlockId=i;
			} 
			var item=treeContent.getContentNode("node_"+i);
			if (item.getAttributeValue("type")=="info") infoBlockId=i;
		
			i++;
		}
		if (openBlockId!=infoBlockId) accordion_menu_expand("dt_"+infoBlockId);// expandim block info

	};

	/*Perque dibuixi la bombolla un cop carregat el mapa*/
	map.eventAfterAllLayersLoaded = function(){

		if(coordX!=0){
			var poi = new NPoi(new NPoint(coordX,coordY),"img/poi.gif",1,1,"textInsertatId",infoMostrar,infoMostrar,"textBubble");

			map.pois.add(poi);
			coordX=0;
		}
	}

	if (!hasWfs) fullExtent(map);	
}

/**
*	s'executa en rebre la resposta de guardar estils pel wfs.
*/
function setWFSStylesResponse() {
	fullExtent(map);
}

/**
*	centers map to full extent
*/
function fullExtent(map,force) {
	try {
		if (typeof(force)=="undefined") force=false;

		if (typeof(urlExtent)=="undefined" || force) var initExtent=new NExtent( new NPoint(treeContent.conf_xmin,treeContent.conf_ymin) , new NPoint(treeContent.conf_xmax,treeContent.conf_ymax) );
		else initExtent=urlExtent;

		map.centerToExtent(initExtent);
	} catch(e) {
		alert("Error a fullExtent()\n"+e.message);
	}
}

// Precarga de les imatges del document
var imgarray = new Array; 
var iptr = 0;

function PreLoadImg(isrc){
	imgarray[iptr] = new Image;
	imgarray[iptr].src = isrc;
	tr = iptr;
	iptr++;
	return tr;
}

// Precarrega les imatges. S'ha d'executar al body.OnLoad
function PreloadImages(){
	// eines
	var aux;
	/*aux = PreLoadImg("img/zoomin.gif");
	aux = PreLoadImg("img/zoomin_p.gif");
	aux = PreLoadImg("img/zoomin_o.gif");
	aux = PreLoadImg("img/zoomout.gif");
	aux = PreLoadImg("img/zoomout_p.gif");
	aux = PreLoadImg("img/zoomout_o.gif");
	aux = PreLoadImg("img/pan.gif");
	aux = PreLoadImg("img/pan_p.gif");
	aux = PreLoadImg("img/pan_o.gif");
	aux = PreLoadImg("img/identify.gif");
	aux = PreLoadImg("img/identify_p.gif");
	aux = PreLoadImg("img/identify_o.gif");
	aux = PreLoadImg("img/reload_o.gif");
	aux = PreLoadImg("img/copy_o.gif");
	aux = PreLoadImg("img/centerSearch.gif");
	aux = PreLoadImg("img/centerSearch_o.gif");
	aux = PreLoadImg("img/layer_add_o.gif");
	aux = PreLoadImg("img/layer_save_o.gif");
	aux = PreLoadImg("img/layer_refresh_o.gif");
	aux = PreLoadImg("img/legend_order.gif");
	aux = PreLoadImg("img/legend_order_p.gif");

	aux = PreLoadImg("img/treeview/checked_disabled.gif");
	aux = PreLoadImg("img/treeview/checked_mid.gif");
	aux = PreLoadImg("img/treeview/checked_off.gif");
	aux = PreLoadImg("img/treeview/checked_on.gif");
	aux = PreLoadImg("img/treeview/collapsed.gif");
	aux = PreLoadImg("img/treeview/empty.gif");
	aux = PreLoadImg("img/treeview/expanded.gif");
	aux = PreLoadImg("img/treeview/folder.gif");
	aux = PreLoadImg("img/treeview/layer.gif");
	aux = PreLoadImg("img/treeview/layer_theme.gif");
	aux = PreLoadImg("img/treeview/line.gif");
	aux = PreLoadImg("img/treeview/line2.gif");
	aux = PreLoadImg("img/treeview/menu_add.gif");
	aux = PreLoadImg("img/treeview/menu_config.gif");
	aux = PreLoadImg("img/treeview/menu_delete.gif");
	aux = PreLoadImg("img/treeview/menu_down.gif");
	aux = PreLoadImg("img/treeview/menu_in.gif");
	aux = PreLoadImg("img/treeview/menu_out.gif");
	aux = PreLoadImg("img/treeview/menu_up.gif");
	aux = PreLoadImg("img/treeview/menu_zoom.gif");
	aux = PreLoadImg("img/treeview/point.gif");
	aux = PreLoadImg("img/treeview/polygon.gif");
	aux = PreLoadImg("img/treeview/range.gif");
	aux = PreLoadImg("img/treeview/separador.gif");*/

}
// Preload image buttons
PreloadImages();

// Changes selected tool in map object
function changeTool(mapObj, tool) {
	map.clearPrintBboxExtent();
	DebugOut("changeTool: " + tool , DEBUG);
	if (tool=='zoomin') mapObj.setCurrentTool("ZOOMIN");
	else if (tool=='zoomout') mapObj.setCurrentTool("ZOOMOUT");
	else if (tool=='pan') mapObj.setCurrentTool("PAN");
	else if (tool=='identify') mapObj.setCurrentTool("IDENTIFY");
	changeImage(tool);
	try {
		document.getElementById("printPreviewCheckbox").checked=false;
	}
	catch (e) {}
}

function mouseOver(imgId,imgName) {
	if (document.getElementById(imgId).src.indexOf("_p.gif")>0) return;
	document.getElementById(imgId).src="img/"+imgName+"_o.gif";
}

function mouseOut(imgId,imgName) {
	if (document.getElementById(imgId).src.indexOf("_p.gif")>0) return;
	document.getElementById(imgId).src="img/"+imgName+".gif";
}

function mouseClick(imgId,imgName) {
	document.getElementById(imgId).src="img/"+imgName+"_p.gif";
}

// En funció de l'eina seleccionada canviem la imatge
function changeImage(tool) {
	try {
		if (tool == 'zoomin') {
			document.getElementById("imgZoomIn").src = "img/zoomin_p.gif";
			document.getElementById("imgZoomOut").src = "img/zoomout.gif";
			document.getElementById("imgPan").src = "img/pan.gif";
			//document.getElementById("imgIdentify").src = "img/identify.gif";
		} else if (tool == 'zoomout') {
			document.getElementById("imgZoomIn").src = "img/zoomin.gif";
			document.getElementById("imgZoomOut").src = "img/zoomout_p.gif";
			document.getElementById("imgPan").src = "img/pan.gif";
			//document.getElementById("imgIdentify").src = "img/identify.gif";
		} else if (tool == 'pan') {
			document.getElementById("imgZoomIn").src = "img/zoomin.gif";
			document.getElementById("imgZoomOut").src = "img/zoomout.gif";
			document.getElementById("imgPan").src = "img/pan_p.gif";
			//document.getElementById("imgIdentify").src = "img/identify.gif";
		}/* else if (tool == 'identify') {
			document.getElementById("imgZoomIn").src = "img/zoomin.gif";
			document.getElementById("imgZoomOut").src = "img/zoomout.gif";
			document.getElementById("imgPan").src = "img/pan.gif";
			document.getElementById("imgIdentify").src = "img/identify_p.gif";
		}*/
	} catch(e) {
		alert("Error\n chageImage: " + e);
	}
}



// Copies current map image to clipboard
function copyToClipboard(map){
	DebugOut("copyToClipboard",DEBUG);

	var ddDiv = document.createElement("div");
	ddDiv.setAttribute("id", "copy2clipboardDiv");
	ddDiv.style.zIndex="9999";
	ddDiv.style.position="absolute";
	ddDiv.style.top="0px";
	ddDiv.style.left="0px";
	ddDiv.style.width="200px";
	ddDiv.style.height="200px";
	ddDiv.style.visibility="hidden";
	
	var url=map.getCurrentMapImageUrl();
	DebugOut("copyToClipboard URL: "+url,DEBUG);
	var str='<img id="copy2clipboardImg" src="'+url+'" onLoad="javascript:copyImageToClipBoard(this.id);" />';
	ddDiv.innerHTML =str;
	var bodyN=document.getElementsByTagName("body")[0];
	bodyN.appendChild(ddDiv);

}

// Copies this img id to clipboard: only IE
function copyImageToClipBoard(imgObjId){
	var oRng=document.body.createControlRange();
	oRng.addElement(document.getElementById(imgObjId));
	oRng.execCommand("Copy");

	alert("Imatge copiada al portapapers.\n(funcional només a IE)");

	var bodyN=document.getElementsByTagName("body")[0];
	var nestedN=document.getElementById("copy2clipboardDiv");
	var throwaway_node = bodyN.removeChild(nestedN);
}


// Refreshes current map
function refresh(map) {
	DebugOut("mainFunctions :: refresh()",DEBUG);
	//setTimeout("map.centerAndZoom(map.getCenter(),map.getScale())",150);// workaround for IE. otherwise hangs.why?
	setTimeout("map.centerToExtent(map.getExtent())",150);// workaround for IE. otherwise hangs.why?
}

// Centers to the coords specified at the select control.
function centerToCoord(map,sel) {
	DebugOut("mainFunctions :: centerToCoord()",DEBUG);
	var coords =sel.options[sel.selectedIndex].value.split(",");
	map.centerAndZoom(new NPoint(coords[0],coords[1]),150000);
}

// Centers to the coords specified at hidden inputs. From WS searches
function zoomToSearch(){
	var x1=document.getElementById("zoomSearchX1").value;
	var y1=document.getElementById("zoomSearchY1").value;
	var x2=document.getElementById("zoomSearchX2").value;
	var y2=document.getElementById("zoomSearchY2").value;
	var searchText=document.getElementById("wsTextInput").value;

	if (x1=="" && y1=="") return;

	if (x2!="" && y2!="") {
		// zoom to box
		var x1v=parseFloat(x1);
		var y1v=parseFloat(y1);
		var x2v=parseFloat(x2);
		var y2v=parseFloat(y2);
		/*var difX=Math.abs(x2v-x1v)*0.02;
		var difY=Math.abs(y2v-y1v)*0.02;
		if (difX<difY) var dif=difX;
		else var dif=difY;*/

		var ext=new NExtent(new NPoint(x1v,y1v),new NPoint(x2v,y2v));
		map.pois.clear();
		var poi=new NPoi(ext.getCenter(),"img/poi.gif",20,20,"identifier",searchText,searchText);
		map.pois.add(poi);

		//DebugOut("zoomToSearch() 2: [" + (x1v) + "," + (y2v)+"] ["+ (x2v) + "," + (y2v) + "]",DEBUG);
		map.centerToExtent(ext);

	} else {
		// creem un poi
		map.pois.clear();
		var poi=new NPoi(new NPoint(x1,y1),"img/poi.gif",20,20,"identifier",searchText,searchText);
		map.pois.add(poi);

		// zoom to coords+scale
		map.centerAndZoom(new NPoint(x1,y1),25000);
	}
}

/**
*
*/
function soapServerChanged() {
	var obj=document.getElementById("wsTextInput");
	obj.value="";
}

/**
*
*/
function zoomToExtent(x0,y0,x1,y1) {
	var catExtent=new NExtent( new NPoint(parseFloat(x0),parseFloat(y0)) , new NPoint(parseFloat(x1),parseFloat(y1)) );
	map.centerToExtent(catExtent);
}

/**
*	to activate debug type "javascript: debugon();" at explorers url
*/
function debugon() {
	debugLevel=DEBUG;
	if (document.getElementById("debugoutput").style.display=="block") var d="none";
	else  var d="block";
	document.getElementById("debugoutput").style.display=d;
	document.getElementById("debugbutton").style.display=d;
	
}

/**
*	show tree with main page variables
*/
function debugtree() {
//	javascript:s=document.body.appendChild(document.createElement('script'));s.id='sst';s.language='javascript';void(s.src='library/js_tree/js_tree.js');
}

function addItems2Array(sourceList, targetArray) {
	var array1=sourceList.split("$");
	var targetArrayCount=targetArray.length;
	if (targetArrayCount>0)targetArrayCount++;

	for (var i=0;i<array1.length-1 ;i++ ){
		var array2=array1[i].split("#"); //name#title#desc
		var obj= {};
		obj["name"]=array2[0];
		obj["title"]=array2[1];
		obj["desc"]=array2[2];
		targetArray[targetArrayCount+i]=obj;
		//DebugOut(" >> " + targetArray[targetArrayCount+i]["name"] + "   " + targetArray[targetArrayCount+i]["title"] + "   " + targetArray[targetArrayCount+i]["desc"] , DEBUG);
	}
}

/**
*	Opens the dropdown to select the queryable layers
*/
function identifyDropdownShow(target) {

	var queryListVisible=treeContent.getQueryableLayersNames(true,1);
	var queryListNoVisible=treeContent.getQueryableLayersNames(true,2);
	//alert(treeContent.getQueryableLayersNames(true,0)+"\n\n\n"+treeContent.getQueryableLayersNames(true,1)+"\n\n\n"+treeContent.getQueryableLayersNames(true,2));
	
	var arrayVisible= new Array();
	var arrayNoVisible= new Array();

	addItems2Array(queryListVisible,arrayVisible);
	addItems2Array(queryListNoVisible,arrayNoVisible);

	function mysortfn(a,b) {
		try {
			var txt1=a["title"].replaceKnownCharacters().toUpperCase();
			var txt2=b["title"].replaceKnownCharacters().toUpperCase();
			if (txt1<txt2) return -1;
			if (txt1>txt2) return 1;
			return 0;
		}
		catch (e) {
			alert("Error a mysortfn()\n"+e.message);
		}
	}
	arrayVisible.sort(mysortfn);
	arrayNoVisible.sort(mysortfn);

	var ddContent=new CDropdownContent();

	for (var i=0;i<arrayVisible.length ;i++ ){
		ddContent.addItem(arrayVisible[i]["name"],arrayVisible[i]["title"],arrayVisible[i]["desc"]);
	}
	//ddContent.addItem("","-","");
	ddContent.addSeparator();

	for (var i=0;i<arrayNoVisible.length ;i++ ){
		ddContent.addItem(arrayNoVisible[i]["name"],arrayNoVisible[i]["title"],arrayNoVisible[i]["desc"]);
	}


	var dd = new CDropdown(target,ddContent,260);
	dd.processFunction= function(code,text,title) {
		try {
			var textObj=document.getElementById("identifyLayersText"); // la 1a petició en IE dona error, fet un catch + repetir ja funciona. raro raro raro...
			identifyClick();// activem eina identify
			map.setIdentifyLayers(code);
			textObj.firstChild.nodeValue=text;
		}
		catch (e) {
			var textObj=document.getElementById("identifyLayersText");
			identifyClick();// activem eina identify
			map.setIdentifyLayers(code);
			textObj.firstChild.nodeValue=text;
		}
	};
	dd.show(false);

}

/**
*	Called when identify button is clicked
*/
function identifyClick() {

	changeTool(map,'identify');

	/*if (map.getIdentifyLayers()!= "") {
		// already selected a layer
		var queryList=treeContent.getQueryableLayersNames(true,0);//name1#title1#desc1$name2#title2#desc2$...
		var array1=queryList.split("$");
		var i=0;
		var trobat=false;
		while (i<array1.length-1 && !trobat) {
			var array2=array1[i].split("#"); //name#title#desc
			if (array2[0]==map.getIdentifyLayers()) {
				layerNames=array2[1];
				trobat=true;
			}
			i++;
		}
	} else {
		// none layer has been selected
		var queryList=treeContent.getQueryableLayersNames(true,0);
		var array1=queryList.split("$");
		var array2=array1[0].split("#");// name#title#desc
		map.setIdentifyLayers(array2[0]);
		var layerNames=map.getIdentifyLayers();
		var openDropDown=true;
	}*/
	
	//if (openDropDown==true && map.getIdentifyLayers()=="") openIdentifyDropDown();
}

// opens the dropdown list
function openIdentifyDropDown() {
	var obj=document.getElementById("identifyDropDownDiv");
	identifyDropdownShow(obj);

}


function scaleDropdownShow(target) {

	var scales = {"item": [
	{"name": "500", "title": "500", "desc": ""},
	{"name": "1000", "title": "1,000", "desc": ""},
	{"name": "2000", "title": "2,000", "desc": ""},
	{"name": "5000", "title": "5,000", "desc": ""},
	{"name": "10000", "title": "10,000", "desc": ""},
	{"name": "25000", "title": "25,000", "desc": ""},
	{"name": "50000", "title": "50,000", "desc": ""},
//	{"name": "75000", "title": "75,000", "desc": ""},
	{"name": "100000", "title": "100,000", "desc": ""}
//	{"name": "150000", "title": "150,000", "desc": ""},
//	{"name": "300000", "title": "300,000", "desc": ""},
//	{"name": "500000", "title": "500,000", "desc": ""},
//	{"name": "1500000", "title": "1,500,000", "desc": ""},
//	{"name": "3000000", "title": "3,000,000", "desc": ""}
//	{"name": "6000000", "title": "6,000,000", "desc": ""},
//	{"name": "10000000", "title": "10,000,000", "desc": ""},
//	{"name": "20000000", "title": "20,000,000", "desc": ""},
//	{"name": "80000000", "title": "80,000,000", "desc": ""}
    ]
	};
	var ddContent=new CDropdownContent();
	var trobat=false;
	for (var i=0; i<scales.item.length ;i++ ){
		/*if (!trobat && parseFloat(map.getScale()) < parseFloat(scales.item[i].name)) {
			ddContent.addItem(map.getScale(),FormatNumber(map.getScale(),false,false,false,true) + " (ACTUAL)","");
			trobat=true;
		}*/
		ddContent.addItem(scales.item[i].name,scales.item[i].title,scales.item[i].desc);
	}

	var dd = new CDropdown(target,ddContent,160);
	dd.processFunction= function(code,text,title) {
		map.centerAndZoom(map.getCenter(),code);
		//updateScaleValue(code);
	};
	dd.show(false);
}


// Obtener el valor de un parámetro de la url
function GetURLParam(param) {						
	var url = document.location.href + "&";

	var sep = "&";
	var i = url.indexOf(sep+param+"=");
	if (i < 0 ) {
		sep = "?";
		i = url.indexOf(sep+param+"=");
		if (i < 0) {
			return "";
		}
	}

	url = url.substr(i+param.length+2);

	i = url.indexOf("&");
	if (i < 0 ) {
		return "";
	}

	url = url.substring(0, i);

	return unescape(url);
}



/**
*	Rep un error capturat amb un try/catch
*/
function errorHandler(e) {
	var str="";
	for(var i in obj){
		var tmp = '(error)';
		if(i.match(/^(expose|header|footer|ivn|dygolk|ad_)/))
		  tmp = '(excluding as a known custom method or property)';
		else{
		  try{ tmp = obj[i]; } catch(e){}
		}
		str += i+':'+tmp;

	}
	alert("errorHandler:"+str);
}


/**
*
*/
function openPrint() {

	openDojoPane(null,"Impressió","modalPrint2.html?cache="+new Date(),130,130,330,300);
	return false;
}

/**
*
*/
function returnFunction() {
		//	alert("returnFunction");
		}

/**
*
*/
function closePoi(e) {

	if (!e) var e = window.event;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();

		map.pois.clear();
		return true;
		
}

/**
*
*/
function openDojoPane(dojoWidget,title,url,left,top,width,height) {
	if (typeof(title)=="undefined") title="";
	if (typeof(left)=="undefined") left=50;
	if (typeof(top)=="undefined") top=50;
	if (typeof(width)=="undefined") width=500;
	if (typeof(height)=="undefined") height=400;

	if (typeof(dojoWidget)!="undefined" && typeof(identifyDojoPaneDestroyed)!="undefined" && !identifyDojoPaneDestroyed) {
		//dojo.widget.byId("testing").setUrl("http://www.elpais.com");

		//dojoWidget.title="asdf"; NO FUNCIONA
		dojoWidget.setUrl(url);
		return dojoWidget;
	}
	
	// Set DOJO Debug
	var djConfig = {isDebug: true};
	djConfig.debugAtAllCosts = true;

	// Import DOJO Modules
	//dojo.require("dojo.widget.Toolbar");
	dojo.require("dojo.widget.FloatingPane");	
	dojo.require("dojo.widget.ContentPane"); 
	
	// Open DOJO FloatingPane
	dojo.debug("Testing DOJO FloatingPane");
	var properties = {
		hasShadow: false,
		displayMinimizeAction: false,
		displayMaximizeAction: false,
		displayCloseAction: true,
		href: url,
		executeScripts: true,
		style: "",
		title: title,
		titleHeight: "20",
		id: "testing"
	};

	properties.id = "testing";
	node = document.createElement(properties.id);
	node.style.position = "absolute";
	node.style.width = ""+width+"px";
	node.style.height = ""+height+"px";
	node.style.left = ""+left+"px";
	node.style.top = ""+top+"px";
	document.body.appendChild(node);

	var fig = dojo.widget.createWidget("FloatingPane",properties,node);

	identifyDojoPaneDestroyed=false;
	fig.destroy = function () {
		identifyDojoPaneDestroyed=true;
	};
	return fig;
}

//---------------------


resizeCount=0;
resizeDate=new Date();

function windowResize() {
	try {
		if ((new Date()-resizeDate)<2000) {
			return;
		}
		resizeDate=new Date();
		resizeCount++;
		resizeid=setTimeout("windowResizeFunc("+resizeDate.getTime()+")",1000);
		
	}
	catch (e) {
		alert("Error a windowResize()\n"+e.message);
	}
}

windowclientWidth=getAvailableWidth();
windowclientHeight=getAvailableHeight();

function windowResizeFunc(calledTime) {
	try {
		
		resizeTime=resizeDate.getTime();
		if (calledTime<resizeTime) {
			//res a fer, hi ha una nova peticio
		} else {
			if (windowclientWidth!=getAvailableWidth() && windowclientHeight!=getAvailableHeight()) {
				DebugOut("window change/resize: " + window.clientWidth ,INFO);

				placeMapDiv();
				map.interfaceChanged();
				windowclientWidth=getAvailableWidth();
				windowclientHeight=getAvailableHeight();

			} else {
				DebugOut("window NOT change: " + window.clientWidth ,INFO);
			}
		}
	}
	catch (e) {
		alert("Error a windowResizeFunc()\n"+e.message);
	}
}

function ubicar_buscar() {
	alert("crida a ubicar_buscar");
}

/**
*
*/
function print_escalaChange(obj) {
	try {
		
		var printScale=obj.value;
		if (printScale=="actual") printScale=map.getScale();

		var printPixWidth=600;
		var printPixHeight=400;
		
		var pixWidth=printPixWidth;
		var pixHeight=printPixHeight;
		var centerPoint=map.getCenter();
		var scaleDen=printScale;
		var coord1=map.pixelsToCoordsWithParams (0,0,pixWidth,pixHeight,centerPoint,scaleDen);
		var coord2=map.pixelsToCoordsWithParams (printPixWidth,printPixHeight,pixWidth,pixHeight,centerPoint,scaleDen);

		map.setDrawBboxExtent(new NExtent(coord1,coord2));


	
	}
	catch (e) {
		alert("Error a ubicar_buscar()\n"+e.message);
	}
}

/**
*	Click a radio de de escala o mida
*/
function previewPrintRadioChange(radioId) {
	try {
		var obj=document.getElementById(radioId);
		if (obj.checked) previewPrintChange(obj);
	}
	catch (e) {
		alert("Error a previewPrintRadioChange()\n"+e.message);
	}
}

/**
*	Click a checkbox de previsualitzar caixa de impressió.
*/
function previewPrintChange(obj) {
	try {

		if (obj.checked) {
			showPrintPreview();
			currentTool=map.getCurrentTool();
			map.setCurrentTool("PRINTCENTER");

		} else {
			hidePrintPreview();
			map.setCurrentTool(currentTool);

		}
	}
	catch (e) {
		alert("Error a previewPrintChange()\n"+e.message);
	}
}

/**
*	Mostra un preview de l'area d'impressió sobre el mapa.
*/
function showPrintPreview() {
	setPrintParameters(true);
}

/**
*	Mostra un preview de l'area d'impressió sobre el mapa.
*/
function setPrintParameters(showPreview) {
	try {

		// angle 
		var angle=document.getElementsByName("angle")[0];
		var angleValue=0;
		if (typeof(angle)!="undefined") angleValue=parseFloat(angle.value)*Math.PI/180;

		// escala 
		var escales=document.getElementsByName("escala");
		var printScale=0;
		for (var i=0;i<escales.length ;i++ ) {
			if (escales[i].checked) printScale=escales[i].value;
		}
		if (printScale=="actual") printScale=map.getScale();

		// paper
		var mides=document.getElementsByName("mida");
		var pixWidth=0;
		var pixHeight=0;
		for (var i=0;i<mides.length ;i++ ) {
			if (mides[i].checked) {
				var cmWidth=parseFloat(mides[i].attributes.mapWidth.nodeValue);
				var cmHeight=parseFloat(mides[i].attributes.mapHeight.nodeValue);
				var pixWidth=Math.round(cmWidth*0.3937008*96);
				var pixHeight=Math.round(cmHeight*0.3937008*96);
			}
		}

		var centerPoint=map.getCenter();
		var scaleDen=parseFloat(printScale);

		//map.setPrintBboxExtent(pixWidth,pixHeight,scaleDen,centerPoint,angleValue*180/Math.PI,showPreview);
		var pixelArray=new NPois();
		pixelArray.add(new NPoi(new NPoint(pixWidth/2,pixHeight-20), urlImatges+"marcaAigua.gif",0,0));
		//pixelArray.push(new NPoint(100,200));
		//pixelArray.push(new NPoint(200,200));
		
		var coordArray=new NPois();
		//coordArray.push(map.getCenter());
		var layersService=treeContent.getServiceById(treeContent.getContentNodeByName("imprimir").getAttributeValue("service")).printlayers;
		var urlService=treeContent.getServiceById(treeContent.getContentNodeByName("imprimir").getAttributeValue("service")).url;

		map.setPrintConfig(pixWidth,pixHeight,scaleDen,centerPoint,angleValue*180/Math.PI,showPreview,urlService,layersService,"image/png",coordArray,pixelArray);
//		map.setPrintConfig(pixWidth,pixHeight,scaleDen,centerPoint,angleValue*180/Math.PI,showPreview,"http://shagrat.icc.es/lizardtech/iserv/ows?","mtc50m,","image/png",coordArray,pixelArray);
		
	} catch (e) {
		alert("error a previewPrint()\n"+e.message);
	}
}

/**
*
*/
function hidePrintPreview() {
	map.clearPrintBboxExtent();
}

/*
* Arrodoniment de l'escala a unes predefinides
*/
function definirEscala(escala){
	var scaleDen=500;
	if(escala>=1 && escala<=501)scaleDen=500;
	if(escala>=502 && escala<=751)scaleDen=750;
	if(escala>=752 && escala<=1001)scaleDen=1000;
	if(escala>=1002 && escala<=1501)scaleDen=1500;
	if(escala>=1502 && escala<=2001)scaleDen=2000;
	if(escala>=2002)scaleDen=5000;
	return scaleDen;
}

function googleEarthClick(){

	map.setMapServerPDFUrl(urlKml);

	setPrintParameters(false);

	try {
		var now=new Date();
		var date=now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear();
		var size="A4";
		var orientation="H";
		var pages="1";

		var mides=document.getElementsByName("mida");
		for (var i=0;i<mides.length ;i++ ) {
			if (mides[i].checked)size=mides[i].value;
		}
		map.createPDF("legendUrl",treeContent.servletUrl,
			"formatsize",size,
			"formatorientation",orientation,
			"formatpages",pages,
			"title",printTitle,
			"comment",printComment,
			"scale",parseInt(map.getScale()),
			"date",date);

		map.setMapServerPDFUrl(urlOpenImprimir);
		return;
		
	}
	catch (e) {
		map.setMapServerPDFUrl(urlOpenImprimir);
		alert("error a googleEarth()\n"+e.message);
	}
}

/**
*	Creem el pdf de la fitxa.
*	Les variables l'arriba del featureinfo.xsl i les pasa al print.xsl (crida al print_a4v2.xsl) com a comentari
*	Condicions Generals -> refCad=referencia cadastral, adress=adreça, num=numero,	qualif=qualificació, descrip= descripció, regSol=regSol, sector=sector, plaDer=pla derivat
*	Condicions d'ordenació -> alt=alçada, profEdif=profunditat edificable, nPlantes=Nº de plantes, descPlantes=descripció plantes
*	Condicions d'ús -> usPrinc= us principal, usosAdmesos=usos admesos, usosCompat=usos compatibles, usosComplem=usos complementaris, usosIncomp=usos incompatibles
*/

function imprimirFitxa(refCad, adress, num, qualif, descrip, regSol, sector, plaDer, alt, profEdif, nPlantes, descPlantes, usPrinc, usosAdmesos, usosCompat, usosComplem, usosIncomp){

	try {
		var scaleDen=parseFloat(map.getScale());//escala actual.
		scaleDen=definirEscala(scaleDen);
		var centre=map.pixelsToCoords(pixelMouseX,pixelMouseY);

		var coordArray = new NPois();

		coordArray.add(new NPoi(centre, urlImatges+"poi.gif",0,0));
		var layersService=treeContent.getServiceById(treeContent.getContentNodeByName("imprimir").getAttributeValue("service")).printlayers;
		var urlService=treeContent.getServiceById(treeContent.getContentNodeByName("imprimir").getAttributeValue("service")).url;


		var cmWidth=parseFloat(18.2);//700
		var cmHeight=parseFloat(21.2);//813
		var pixWidth=Math.round(cmWidth*0.3937008*96);
		var pixHeight=Math.round(cmHeight*0.3937008*96);

		var pixelArray = new NPois();
		pixelArray.add(new NPoi(new NPoint(pixWidth/2,pixHeight-20), urlImatges+"marcaAigua.gif",0,0));

		map.setPrintConfig(pixWidth,pixHeight,scaleDen,centre,0,false,urlService,layersService,"image/png",coordArray,pixelArray);

		var now=new Date();
		var date=now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear();
		var size="A4";
		var orientation="V";
		var pages="2";

		map.createPDF("legendUrl",treeContent.servletUrl,
			"formatsize",size,
			"formatorientation",orientation,
			"formatpages",pages,
			"title",printTitle,
			"scale",scaleDen,
			"date",date,
			"refCad",refCad,
			"adress",adress,
			"numero",num,
			"qualif",qualif,
			"descrip",descrip,
			"regSol",regSol,
			"sector",sector,
			"plaDer",plaDer,
			"alt",alt,
			"profEdif",profEdif,
			"nPlantes",nPlantes,
			"descPlantes",descPlantes,
			"usPrinc",usPrinc,
			"usosAdmesos",usosAdmesos,
			"usosCompat",usosCompat,
			"usosComplem",usosComplem,
			"usosIncomp",usosIncomp
		);
		return;
	}
	catch (e) {
		alert("error a imprimirFitxa()\n"+e.message);
	}
}

function aviso(descarga){
	var resposta = confirm("Avís: Segons la Llei 37/2007, de 16 de novembre, sobre la reutilització de la informació del sector públic, la informació descarregable està subjecta a les següents condicions d'ús: S'ha de citar la font (Ajuntament de Roses) i la data de la darrera actualització.");
	if(resposta){
		window.open(descarga);
	}
}

/**
*
*/
function imprimir() {

	setPrintParameters(false);

	try {
		var now=new Date();
		var date=now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear();
		var size="A4";
		var orientation="H";
		var pages="1";
		var scale=parseInt(map.getScale());

		var mides=document.getElementsByName("mida");
		for (var i=0;i<mides.length ;i++ ) {
			if (mides[i].checked)size=mides[i].value;
		}

		var escales=document.getElementsByName("escala");
		for (var i=0;i<escales.length ;i++ ) {
			if (escales[i].checked)scale=escales[i].value;
		}
		if(scale=="actual")scale=parseInt(map.getScale());

		map.createPDF("legendUrl",treeContent.servletUrl,
			"formatsize",size,
			"formatorientation",orientation,
			"formatpages",pages,
			"title",printTitle,
			"comment",printComment,
			"scale",scale,
			"date",date);
		return;
		
	}
	catch (e) {
		alert("error a imprimir()\n"+e.message);
	}
}

/**
*	Click al boto de maximitzar o tornar a mida normal.
*/
function maximizeMap() {
	try {
		var treeObj=document.getElementById("treeviewDiv");
		var fonts=document.getElementById("fonts");
		var obj=document.getElementById("maximizeDiv");
		
		if (mapIsMaximized()) {
			// a normal

			fonts.style.bottom="22px";
			fonts.style.left="10px";

			treeObj.style.display="block";

			obj.style.position="relative";
			obj.style.background="";
			obj.style.paddingTop="0px";
			obj.style.top="";
			obj.style.left="";
			placeMapDiv();

		} else {	
			// a maximitzat

			treeObj.style.display="none";

			obj.style.position="absolute";
			obj.style.background="#ffffff";
			obj.style.top="0px";
			obj.style.paddingTop="5px";
			obj.style.left="0px";
			obj.style.width="100%";
	
			fonts.style.bottom="22px"; 
			fonts.style.left="10px";

			var theDiv=document.getElementById("map");
			var mapW=(getAvailableWidth()-15);//adjust
			var mapH=(getAvailableHeight()-5);
			var toolbarH=parseFloat(document.getElementById("toolbarDiv").style.height);
			theDiv.style.width=mapW+"px";
			theDiv.style.height=(mapH-toolbarH-5)+"px";

		}
		map.interfaceChanged();
	
	}
	catch (e) {
		alert("Error a maximizeMap()\n"+e.message);
	}
}

/**
*	Retorna cert si el mapa esta maximitzat.
*	@return {boolean}
*/
function mapIsMaximized() {
	var obj=document.getElementById("maximizeDiv");
	return obj.style.position=="absolute";
}

/**
*	activa eina de mesurar distàncies.
*/
function mesurarDistancia() {
	try {
		map.resetToolMeasure();
		map.setCurrentTool("MEASURE");
	}
	catch (e) {
		alert("error a mesurarDistancia()\n"+e.message);
	}
}

/**
*	Genera una url amb la configuració actual de continguts i reemplaça la url del navegador.
*/
function permalink() {
	try {
		var url=getPermalink();

		//window.location.replace(url.join(""));
		window.location.href=url;
	}
	catch (e) {
		alert("error a permalink()\n"+e.message);
	}
}

/**
*	Genera una url amb la configuració actual de continguts i reemplaça la url del navegador.
*/
function getPermalink() {
	var separador="~";
	try {
		// config capes i capes visibles
		var services="";
		var layers="";
		var target=document.getElementById("configDiv_sel");
		for (var i=0; i<target.options.length; i++ ) {
			var id=target.options[i].value;
			var transpValue=treeContent.getServiceById(id).transparency;

			if (services!="") services+=separador;
			services+=id+":"+transpValue;

			if (layers!="") layers+=separador;
			layers+=treeContent.getVisibleLayersNames(id,separador);
		}

		var url=new Array();
		url.push(hostname+"/"+context+"/");
		url.push("?extent="+map.getExtent().serialize());
		url.push("&layers="+layers);
		url.push("&services="+services);

		return url.join("");
	}
	catch (e) {
		alert("error a getPermalink()\n"+e.message);
	}
}

/**
*	Obre la finestra de enviar per correu electrònic.
*/
function sendMail() {
	try {
		var lang="ca";
		var url="";
		// hem de passar un parametre link amb la url: centre+escala+categories+
		url=getPermalink()+"&lang="+lang;

		//window.open(urlOpenCorreu+"?link="+escape(url)+"&lang="+lang,"",urlOpenCorreuConf);
		showPopWin(urlOpenCorreu+"?link="+escape(url)+"&lang="+lang, 345,260, null);
	}
	catch (e) {
		alert("error a sendMail()\n"+e.message);
	}
}

/**
*	Obre la finestra de veure el help
*/
function viewHelp() {
	try {
		var lang="ca";
		var url="";
		showPopWin(urlHelp+"?link="+escape(url)+"&lang="+lang, 345,200, null);
	}
	catch (e) {
		alert("error a sendMail()\n"+e.message);
	}
}

