﻿var ALL_HELP = "請輸入建築物、街道或景點名稱搜尋。";
var ALL_HELP_P ="Por favor inserir o nome de construção, arruamento ou ponto paisagístico a ser pesquisado";
var ALL_HELP_E ="Please type the name of a construction, street or scenic spot for searching";
var BUILDING_HELP = "例如「公共行政大樓」或「新馬路 39,98」";
var BUILDING_HELP_P = "Exemplo: “Edf. Administração Pública” ou “Avenida de Almeida Ribeiro 39,98”";
var BUILDING_HELP_E = "e.g. “Edf. Administração Pública” or “Avenida de Almeida Ribeiro 39,98”";
var STREET_HELP = "例如「提督馬路」或「提督」";
var STREET_HELP_P = "Exemplo: “Avenida do Almirante Lacerda” ou “Almirante”";
var STREET_HELP_E = "e.g. “Avenida do Almirante Lacerda” or “Almirante”";
var POI_HELP = "例如「大砲台」或「媽閣廟」";
var POI_HELP_P = "Exemplo: “Fortaleza do Monte”, “Templo de A-Ma”";
var POI_HELP_E = "e.g. “Fortaleza do Monte” or “Templo de A-Ma”";
var Srv_URL = "http://webmap.gis.gov.mo"
var REST_BASE_URL = Srv_URL + "/arcgis/rest/services/";
var MAP_URL = REST_BASE_URL+"WebMap/Macau_T/MapServer";
var MAP_URL_P = REST_BASE_URL+"WebMap/Macau_P/MapServer";
//var MAP_URL = REST_BASE_URL+"WebMap/Macau_T_WGS84/MapServer";
var POI_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer";
var POI_URL_P = REST_BASE_URL+"WebMap/MacauMap_P_POI/MapServer";
//var GEO_SERVICE_URL = REST_BASE_URL+"Geometry/GeometryServer"
var BUILDING_LAYER_URL = REST_BASE_URL+"WebMap/Macau_T/MapServer/2";
var BUILDING_LAYER_URL_P = REST_BASE_URL+"WebMap/Macau_P/MapServer/2";
var STREET_LAYER_URL = REST_BASE_URL+"WebMap/Macau_T/MapServer/4";
var STREET_LAYER_URL_P = REST_BASE_URL+"WebMap/Macau_P/MapServer/4";
var HOTEL_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/0";
var HOTEL_LAYER_URL_P = REST_BASE_URL+"WebMap/MacauMap_P_POI/MapServer/0";
//var MUSEUM_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/1";
//var PHARMACY_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/2";
var HOSPITAL_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/1";
var HOSPITAL_LAYER_URL_P = REST_BASE_URL+"WebMap/MacauMap_P_POI/MapServer/1";
//var HIGHEDUCATION_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/4";
//var GAS_STATION_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/5";
//var GARDEN_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/6";
//var ESCOLA_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/7";
//var CPHARMACY_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/8";
var TOURIST_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/2";
var TOURIST_LAYER_URL_P = REST_BASE_URL+"WebMap/MacauMap_P_POI/MapServer/2";
var CHURCH_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/3";
var CHURCH_LAYER_URL_P = REST_BASE_URL+"WebMap/MacauMap_P_POI/MapServer/3";
var TEMPLE_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/4";
var TEMPLE_LAYER_URL_P = REST_BASE_URL+"WebMap/MacauMap_P_POI/MapServer/4";
var CASINO_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/5";
var CASINO_LAYER_URL_P = REST_BASE_URL+"WebMap/MacauMap_P_POI/MapServer/5";
//var SWIMMING_POOL_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/13";
var BANK_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/6";
var BANK_LAYER_URL_P = REST_BASE_URL+"WebMap/MacauMap_P_POI/MapServer/6";
//var SA_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/15";
var GOV_LAYER_URL = REST_BASE_URL+"WebMap/MacauMap_T_POI/MapServer/7";
var GOV_LAYER_URL_P = REST_BASE_URL+"WebMap/MacauMap_P_POI/MapServer/7";
var BUILDING_LAYER_ID = "2";
var REC_TYPE_BUILDING = "1";
var REC_TYPE_STREET = "2";
//var REC_TYPE_POI_ESCOLA = "4";
var REC_TYPE_POI_HOSPITAL = "8";
var REC_TYPE_POI_HOTEL = "16";
//var REC_TYPE_POI_MUSEUM = "32";
//var REC_TYPE_POI_SA = "64";
//var REC_TYPE_POI_SWIMMING_POOL = "128";
var REC_TYPE_POI_TOURIST = "256";
//var REC_TYPE_POI_HIGHEDUCATION = "512";
var REC_TYPE_POI_CASINO = "1024";
//var REC_TYPE_POI_GARDEN = "2048";
var REC_TYPE_POI_GOVERNMENT = "4096";
//var REC_TYPE_POI_CPHARMACY = "8192";
//var REC_TYPE_POI_PHARMACY = "16384";
//var REC_TYPE_POI_GAS_STATION = "32768";
var REC_TYPE_POI_TEMPLE = "65536";
var REC_TYPE_POI_BANK = "131072";
var REC_TYPE_POI_CHURCH = "262144";
//var POI_SEARCH_TYPE = "524284";
var POI_SEARCH_TYPE = "464152";
//var ALL_SEARCH_TYPE = "524287";
var ALL_SEARCH_TYPE = "464155";
var OPEN_OV_IMG = "../images/topLeftArrow.gif";
var CLOSE_OV_IMG = "../images/bottomRightArrow.gif";
var PRE_IMG_SRC = "../images/pre.gif";
var PRE_ACT_IMG_SRC = "../images/pre_active.gif";
var NEXT_IMG_SRC = "../images/next.gif";
var NEXT_ACT_IMG_SRC = "../images/next_active.gif";
var MSG_NO_RST = "找不到結果 / Nao encontra resultados / No result is found";
var MAP_TRM_H = 103;
var RST_TRM_H = 138;
var PAGE_SHOWN_LIMIT = 7;
var MAX_HISTORY_SIZE = 5;
var aResultHistory = new Array;
var currHistoryIdx = -1;
var gMap,gOvMap,gOvGraphic,gQuery,gFillSymbol,gLineSymbol,gMarkerSymbol,gIsOvDrag,gBaseMapLayer,gNavToolbar,gDrawToolbar,gGeometryService;
var gBuildingQueryTask,gStreetQueryTask,gEscolaQueryTask,gHospitalQueryTask,gHotelQueryTask,gMuseumQueryTask,gSaQueryTask;
var gSwimmingPoolQueryTask,gTouristQueryTask,gHighEducationQueryTask,gCasinoQueryTask,gGardenQueryTask,gGovernmentQueryTask;
var gCpharmacyQueryTask,gPharmacyQueryTask,gGasStationQueryTask,gTempleQueryTask,gBankQueryTask,gChurchQueryTask;
var gPoiIdenTask, gPoiIdenParams, gIdentifyTask, gIdentifyParams;
var gPoiService;
var gaVisiblePoi = new Array(); gaVisiblePoi[0] = -1;

var scripts = document.getElementsByTagName('script');
var myScript = scripts[ scripts.length - 1 ];

var queryString = myScript.src.replace(/^[^\?]+\??/,'');

var params = parseQuery( queryString );

function parseQuery ( query ) {
   var Params = new Object ();
   if ( ! query ) return Params; // return empty object
   var Pairs = query.split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if ( ! KeyVal || KeyVal.length != 2 ) continue;
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }
   return Params;
}

/*
function delNull(str) {
	if (str == "null")
		return "";
	else
		return str;
}
*/

function trim(str) {
	return str.replace(/(^\s*)|(\s*$)/g, ""); 
}

function initMap(mapid) {		
	resizeMap();
	
	dijit.byId("identify").setDisabled(true);	// Cyril added 2009-06-18
	
	//configure map pan animation to be slower
	esriConfig.defaults.map.panRate = 250; //refresh rate of zoom animation; default panRate:25, set to 250, the same as panDuration
		
	gMap = new esri.Map(mapid);
	gNavToolbar = new esri.toolbars.Navigation(gMap);
    dojo.connect(gNavToolbar, "onExtentHistoryChange", extentHistoryChangeHandler);
	dojo.connect(gMap, "onLoad", initIdent);
	dojo.connect(gMap, "onLoad", initQuery);
	//dojo.connect(gMap, "onLoad", initDrawTool); // for measure function
	dojo.connect(gMap, "onLoad", function() {initOv("ovMap");});
	dojo.connect(gMap, "onResize", onResizeMap);
	dojo.connect(gMap, "onMouseMove", showCoordinates);
    dojo.connect(gMap, "onMouseDrag", showCoordinates);

	if (params.lang == 'C')
		gBaseMapLayer = new esri.layers.ArcGISTiledMapServiceLayer(MAP_URL);
	else
		gBaseMapLayer = new esri.layers.ArcGISTiledMapServiceLayer(MAP_URL_P);
	//gBaseMapLayer = new esri.layers.ArcGISDynamicMapServiceLayer(MAP_URL);
	if (gBaseMapLayer.loaded)
		initSlider(gBaseMapLayer);
	else
		dojo.connect(gBaseMapLayer, "onLoad", function() {initSlider(gBaseMapLayer);});
	
	gMap.addLayer(gBaseMapLayer);
	
	//gGeometryService = new esri.tasks.GeometryService(GEO_SERVICE_URL);	
	//gGeometryService = new esri.tasks.GeometryService("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");	
	if (params.lang == 'C')
		gPoiService = new esri.layers.ArcGISDynamicMapServiceLayer(POI_URL);
	else
		gPoiService = new esri.layers.ArcGISDynamicMapServiceLayer(POI_URL_P);

	gPoiService.setVisibleLayers(gaVisiblePoi);
	gMap.addLayer(gPoiService);
	
	gFillSymbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,new esri.symbol.SimpleLineSymbol(),new dojo.Color([0,153,255,0.3]));
	gLineSymbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,new dojo.Color([0,0,255,0.6]),5);
	gMarkerSymbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_DIAMOND,20,new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,new dojo.Color([255,255,0,1]),1),new dojo.Color([255,255,0,1]));
	
	
}

/*
function getDistance(graphics) {
	//call GeometryService.lengths() with projected geometry
	gGeometryService.lengths(graphics,outputDistance);
}

function initDrawTool(map) {
	gDrawToolbar = new esri.toolbars.Draw(map);

	//on draw end add graphic, project it, and get new length
	dojo.connect(gDrawToolbar, "onDrawEnd", function(geometry) {
	  map.graphics.clear();
	  var graphic = map.graphics.add(new esri.Graphic(geometry, new esri.symbol.SimpleLineSymbol()));
	  //add graphic to the map and then call GeometryService.project() to get graphic into a coordinate system that
	  //can be used to generate an accurate length.
	  gGeometryService.project([graphic],new esri.SpatialReference({"wkid":4326}),getDistance);
	});
}
*/

function initSlider(layer) {
	//custom slider labels
	var labels = [];
	var lods = layer.tileInfo.lods;
	for (var i=0, il=lods.length; i<il; i++) {
	  labels[i] = "";
	}
	
	if (params.lang == 'C'){
		labels[2] = "<span style='background-color:#fff;'>堂區</span>";
		labels[6] = "<span style='background-color:#fff;'>街道</span>";
		labels[9] = "<span style='background-color:#fff;'>建築物</span>";
	}
	else if (params.lang == 'P'){
		labels[2] = "<span style='background-color:#fff;'>Freguesias</span>";
		labels[6] = "<span style='background-color:#fff;'>Arruamento</span>";
		labels[9] = "<span style='background-color:#fff;'>Construções</span>";
	}
	else
	{
		labels[2] = "<span style='background-color:#fff;'>Parishes</span>";
		labels[6] = "<span style='background-color:#fff;'>Street</span>";
		labels[9] = "<span style='background-color:#fff;'>Construction</span>";	
	}
	
	esriConfig.defaults.map.sliderLabel = {
	  tick: 5,
	  labels: labels,
	  style: "width: 4em; font-family:Verdana; font-size:10px; color:#000; padding-left:2px;"
	};
	
	esriConfig.defaults.map.slider = {
		left:"10px",
		top:"10px",
		width:null,
		height:"150px"
	}
}

function initOv(ovId) {
	  gOvMap = new esri.Map(ovId, {slider:false});
	  dojo.connect(gOvMap, "onLoad", function(thisOv) {
			  thisOv.disableMapNavigation();
			  updateOVPoly(gMap.extent,false);
			  
			  // MAP EVENTS
			  dojo.connect(gMap, "onExtentChange", onMapExtentChange);
			  
			  // overview map events
			  dojo.connect(gOvMap, "onClick", onOvClick);
			  document.getElementById("overviewPanel").className = "overviewPanel_hidden";
		});
	  addOvLayers(gOvMap);
}
  
function onOvClick(e) {
	  gMap.centerAt(e.mapPoint);
}

/*
// event handler for the overview map drag end event
function onOvMouseDragEnd(e) {
	  gIsOvDrag = true;
}

// event handler for the overview map extent change event
function onOvExtentChange(extent, delta, levelChange, lod){
	if (gIsOvDrag) {
		if (delta.x!=0 || delta.y!=0)
			gMap.centerAt(extent.getCenter());
		gIsOvDrag = false;
	}
}
*/

function onMapExtentChange(extent, delta, levelChange, lod){
	if(levelChange && gMap.getLevel()>6)					//
			dijit.byId("identify").setDisabled(false);		//
															//	Cyril added 2009/06/18
	if(levelChange && gMap.getLevel()<7)					//
			dijit.byId("identify").setDisabled(true);		//	
		
	if (delta.x!=0 || delta.y!=0 || levelChange) {
		updateOVPoly(extent,false);
	}
	if (levelChange) {
		togglePoi();
	}
}
  
function addOvLayers(theMap){
	//var serviceLayer = new esri.layers.ArcGISTiledMapServiceLayer(MAP_URL);
	if (params.lang == 'C')
		var serviceLayer = new esri.layers.ArcGISDynamicMapServiceLayer(MAP_URL);
	else
		var serviceLayer = new esri.layers.ArcGISDynamicMapServiceLayer(MAP_URL_P);
	theMap.addLayer(serviceLayer);
}
  
function updateOVPoly(ext,updateMap) {
	  var ovPolygon = new esri.geometry.Polygon(gMap.spatialReference);
	  ovPolygon.addRing([[ext.xmin, ext.ymin], [ext.xmin, ext.ymax], [ext.xmax, ext.ymax], [ext.xmax, ext.ymin], [ext.xmin, ext.ymin]]);
	  
	  if (updateMap)
		gOvMap.setExtent(ext.expand(2.0));
	  
	  if (gOvGraphic == null) {
		  var ovClr = new dojo.Color([0, 0, 255, 1.0]);
		  var ovTranspClr = new dojo.Color([0, 0, 255, 0.1]);
		  var ovSym = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, ovClr, 1.0), ovTranspClr);
		  gOvGraphic = new esri.Graphic(ovPolygon, ovSym);
		  gOvMap.graphics.add(gOvGraphic);
	  }
	  else
		  gOvGraphic.setGeometry(ovPolygon);
}
  
function initQuery() {
	//build query filter
	gQuery = new esri.tasks.Query();
	gQuery.returnGeometry = true;
	gQuery.outFields = ["FID_1","CNAME"];
}

function initIdent(map) {
	dojo.connect(map, "onClick", onMapClick);
	
	if (params.lang == 'C')
		gIdentifyTask = new esri.tasks.IdentifyTask(MAP_URL);
	else
		gIdentifyTask = new esri.tasks.IdentifyTask(MAP_URL);
	gIdentifyParams = new esri.tasks.IdentifyParameters();
	gIdentifyParams.dpi = 120;
	gIdentifyParams.tolerance = 1;
	gIdentifyParams.returnGeometry = true;
	gIdentifyParams.layerIds = [BUILDING_LAYER_ID];
	gIdentifyParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_ALL;
	
	if (params.lang == 'C')
		gPoiIdenTask = new esri.tasks.IdentifyTask(POI_URL);
	else
		gPoiIdenTask = new esri.tasks.IdentifyTask(POI_URL_P);
	
	gPoiIdenParams = new esri.tasks.IdentifyParameters();
	gPoiIdenParams.tolerance = 3;
	gPoiIdenParams.returnGeometry = true;
	gPoiIdenParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_TOP;

	map.infoWindow.resize(300, 150);
	map.infoWindow.setContent(dojo.byId("infoWin"));
	if(params.lang == 'C')
		map.infoWindow.setTitle("資訊");
	else if (params.lang == 'P')
		map.infoWindow.setTitle("Informações");
	else 
		map.infoWindow.setTitle("Information");
}
  
function onMapClick(evt) {
	  doIdentify(gPoiIdenTask, gPoiIdenParams, evt, checkIdenResult);
}

function onResizeMap(extent, height, width) {
	gMap.resize();
}
  
function doIdentify(task, param, evt, func) {
	if (gMap.getLevel() < 7)
		return false;
	gMap.graphics.clear();
	param.geometry = evt.mapPoint;
	param.mapExtent = gMap.extent;
	task.execute(param, function(idResults) { func(idResults, evt); });
}
  
function checkIdenResult(idResults, evt) {
	if (idResults.length == 0) {
	  doIdentify(gIdentifyTask, gIdentifyParams, evt, showIdenResult);
	}
	else {
		var layerId = idResults[0].layerId;
		if (isArrContain(gaVisiblePoi, layerId))
			showIdenResult(idResults, evt);
		else
			doIdentify(gIdentifyTask, gIdentifyParams, evt, showIdenResult);
	}
}

function showBuildingIden(addrs,idResults,evt) {
	var addr = "";
	idResults[0].attributes['CNAME'] = (idResults[0].attributes['CNAME'] == "Null")? "": idResults[0].attributes['CNAME'];
	idResults[0].attributes['PNAME'] = (idResults[0].attributes['PNAME'] == "Null")? "": idResults[0].attributes['PNAME'];
	for (var i=0; i<addrs.length; i++) {
		if (params.lang == 'C')
			addr = addr + (addr==""?"":"<br>") + '- ' + addrs[i].cname + ' ' + addrs[i].pname + ' ' + addrs[i].description;
		else
			addr = addr + (addr==""?"":"<br>") + '- ' + addrs[i].pname + ' ' + addrs[i].cname + ' ' + addrs[i].description;
	}
	if (params.lang == 'C')
		//dojo.byId("infoWin").innerHTML = idResults[0].attributes['CNAME']+" "+idResults[0].attributes['PNAME']+"<br>"+addr;
		gMap.infoWindow.setContent(idResults[0].attributes['CNAME']+" "+idResults[0].attributes['PNAME']+"<br>"+addr);
	else
		gMap.infoWindow.setContent(idResults[0].attributes['PNAME']+" "+idResults[0].attributes['CNAME']+"<br>"+addr);
	gMap.infoWindow.show(evt.screenPoint, gMap.getInfoWindowAnchor(evt.screenPoint));
}

function showIdenResult(idResults, evt) {
	
    
	if (idResults[0].attributes['CADDR']) {
	
		if (params.lang == 'C')
			gMap.infoWindow.setContent(idResults[0].attributes['CNAME']+" "+idResults[0].attributes['PNAME']+"<br>- "+idResults[0].attributes['CADDR']+"<br>- "+idResults[0].attributes['PADDR']);
		else
			gMap.infoWindow.setContent(idResults[0].attributes['PNAME']+" "+idResults[0].attributes['CNAME']+"<br>- "+idResults[0].attributes['PADDR']+"<br>- "+idResults[0].attributes['CADDR']);
	}
	else
	{	
		if (params.lang == 'E')
		InstanceQry.getAddrByFid(idResults[0].attributes['FID_1'],"P",
														 function(addrs) {
															 showBuildingIden(addrs,idResults,evt);
														 });
		else
		InstanceQry.getAddrByFid(idResults[0].attributes['FID_1'],params.lang,
														 function(addrs) {
															 showBuildingIden(addrs,idResults,evt);
														 });
														 
	}
	
	gMap.infoWindow.show(evt.screenPoint, gMap.getInfoWindowAnchor(evt.screenPoint));
}

function setPoiCheckBox(id) {
	var cbs = document.getElementsByName("poiCb");
	for (var i=0; i<cbs.length; i++) {
		var cb = dijit.byId(cbs[i].id);
		if (cb) {
			if (cb.id == id)
				cb.setChecked(true);
			else cb.setChecked(false);
		}
	}
	refreshPoi();
}

function zoomByFid(fid, recType) {
	gQuery.where = "FID_1 = '" + fid + "'";
	if (recType > 2)
		setPoiCheckBox(recType);
	//execute query
	if (recType == REC_TYPE_BUILDING) {
		if (gBuildingQueryTask == null)
			if (params.lang == 'C')
				gBuildingQueryTask = new esri.tasks.QueryTask(BUILDING_LAYER_URL);
			else
				gBuildingQueryTask = new esri.tasks.QueryTask(BUILDING_LAYER_URL_P);
				
		gBuildingQueryTask.execute(gQuery,showResults);
	}
	else if (recType == REC_TYPE_STREET) {
		if (gStreetQueryTask == null)
			if (params.lang == 'C')
				gStreetQueryTask = new esri.tasks.QueryTask(STREET_LAYER_URL);
			else
				gStreetQueryTask = new esri.tasks.QueryTask(STREET_LAYER_URL_P);
				
		gStreetQueryTask.execute(gQuery,showResults);
	}
/*	else if (recType == REC_TYPE_POI_ESCOLA) {
		if (gEscolaQueryTask == null)
			gEscolaQueryTask = new esri.tasks.QueryTask(ESCOLA_LAYER_URL);
		gEscolaQueryTask.execute(gQuery,showResults);
	} */
	else if (recType == REC_TYPE_POI_HOSPITAL) {
		if (gHospitalQueryTask == null)
			if (params.lang == 'C')
				gHospitalQueryTask = new esri.tasks.QueryTask(HOSPITAL_LAYER_URL);
			else	
				gHospitalQueryTask = new esri.tasks.QueryTask(HOSPITAL_LAYER_URL_P);
		gHospitalQueryTask.execute(gQuery,showResults);
	}
	else if (recType == REC_TYPE_POI_HOTEL) {
		if (gHotelQueryTask == null)
			if (params.lang == 'C')
				gHotelQueryTask = new esri.tasks.QueryTask(HOTEL_LAYER_URL);
			else
				gHotelQueryTask = new esri.tasks.QueryTask(HOTEL_LAYER_URL_P);
				
		gHotelQueryTask.execute(gQuery,showResults);
	}
/*	else if (recType == REC_TYPE_POI_MUSEUM) {
		if (gMuseumQueryTask == null)
			gMuseumQueryTask = new esri.tasks.QueryTask(MUSEUM_LAYER_URL);
		gMuseumQueryTask.execute(gQuery,showResults);
	}
	else if (recType == REC_TYPE_POI_SA) {
		if (gSaQueryTask == null)
			gSaQueryTask = new esri.tasks.QueryTask(SA_LAYER_URL);
		gSaQueryTask.execute(gQuery,showResults);
	}
	else if (recType == REC_TYPE_POI_SWIMMING_POOL) {
		if (gSwimmingPoolQueryTask == null)
			gSwimmingPoolQueryTask = new esri.tasks.QueryTask(SWIMMING_POOL_LAYER_URL);
		gSwimmingPoolQueryTask.execute(gQuery,showResults);
	}*/
	else if (recType == REC_TYPE_POI_TOURIST) {
		if (gTouristQueryTask == null)
			if (params.lang == 'C')
				gTouristQueryTask = new esri.tasks.QueryTask(TOURIST_LAYER_URL);
			else
				gTouristQueryTask = new esri.tasks.QueryTask(TOURIST_LAYER_URL_P);
		gTouristQueryTask.execute(gQuery,showResults);
	}
/*	else if (recType == REC_TYPE_POI_HIGHEDUCATION) {
		if (gHighEducationQueryTask == null)
			gHighEducationQueryTask = new esri.tasks.QueryTask(HIGHEDUCATION_LAYER_URL);
		gHighEducationQueryTask.execute(gQuery,showResults);
	}*/
	else if (recType == REC_TYPE_POI_CASINO) {
		if (gCasinoQueryTask == null)
			if (params.lang == 'C')
				gCasinoQueryTask = new esri.tasks.QueryTask(CASINO_LAYER_URL);
			else
				gCasinoQueryTask = new esri.tasks.QueryTask(CASINO_LAYER_URL_P);
		gCasinoQueryTask.execute(gQuery,showResults);
	}
/*	else if (recType == REC_TYPE_POI_GARDEN) {
		if (gGardenQueryTask == null)
			gGardenQueryTask = new esri.tasks.QueryTask(GARDEN_LAYER_URL);
		gGardenQueryTask.execute(gQuery,showResults);
	}*/
	else if (recType == REC_TYPE_POI_GOVERNMENT) {
		if (gGovernmentQueryTask == null)
			if (params.lang == 'C')
				gGovernmentQueryTask = new esri.tasks.QueryTask(GOV_LAYER_URL);
			else
				gGovernmentQueryTask = new esri.tasks.QueryTask(GOV_LAYER_URL_P);
		gGovernmentQueryTask.execute(gQuery,showResults);
	}
/*	else if (recType == REC_TYPE_POI_CPHARMACY) {
		if (gCpharmacyQueryTask == null)
			gCpharmacyQueryTask = new esri.tasks.QueryTask(CPHARMACY_LAYER_URL);
		gCpharmacyQueryTask.execute(gQuery,showResults);
	}
	else if (recType == REC_TYPE_POI_PHARMACY) {
		if (gPharmacyQueryTask == null)
			gPharmacyQueryTask = new esri.tasks.QueryTask(PHARMACY_LAYER_URL);
		gPharmacyQueryTask.execute(gQuery,showResults);
	}
	else if (recType == REC_TYPE_POI_GAS_STATION) {
		if (gGasStationQueryTask == null)
			gGasStationQueryTask = new esri.tasks.QueryTask(GAS_STATION_LAYER_URL);
		gGasStationQueryTask.execute(gQuery,showResults);
	}*/
	else if (recType == REC_TYPE_POI_TEMPLE) {
		if (gTempleQueryTask == null)
			if (params.lang == 'C')
				gTempleQueryTask = new esri.tasks.QueryTask(TEMPLE_LAYER_URL);
			else
				gTempleQueryTask = new esri.tasks.QueryTask(TEMPLE_LAYER_URL_P);
		gTempleQueryTask.execute(gQuery,showResults);
	}
	else if (recType == REC_TYPE_POI_BANK) {
		if (gBankQueryTask == null)
			if (params.lang == 'C')
				gBankQueryTask = new esri.tasks.QueryTask(BANK_LAYER_URL);
			else
				gBankQueryTask = new esri.tasks.QueryTask(BANK_LAYER_URL_P);
		gBankQueryTask.execute(gQuery,showResults);
	}
	else if (recType == REC_TYPE_POI_CHURCH) {
		if (gChurchQueryTask == null)
			if (params.lang == 'C')
				gChurchQueryTask = new esri.tasks.QueryTask(CHURCH_LAYER_URL);
			else
				gChurchQueryTask = new esri.tasks.QueryTask(CHURCH_LAYER_URL_P);
		gChurchQueryTask.execute(gQuery,showResults);
	}
}

function centerAndZoom(point, level) {
	var lods = gBaseMapLayer.tileInfo.lods;
	var currScale = lods[gMap.getLevel()].scale;
	var targetScale = lods[level-1].scale;
	gMap.setExtent(gMap.extent.expand(targetScale/currScale).centerAt(point));
}

function showResults(myFeatureSet) {
	clearHighlight();
	var s = "";
	var resultFeatures = myFeatureSet.features;
	// only get the first result
	var graphic = resultFeatures[0];
	if (myFeatureSet.geometryType == "esriGeometryPoint")
		graphic.setSymbol(gMarkerSymbol);
	else if (myFeatureSet.geometryType == "esriGeometryPolyline")
		graphic.setSymbol(gLineSymbol);
	else graphic.setSymbol(gFillSymbol);
	gMap.graphics.add(graphic);
	
	if (myFeatureSet.geometryType == "esriGeometryPoint")
		centerAndZoom(graphic.geometry, 9);
	else gMap.setExtent(graphic.geometry.getExtent());
}
	  
function clearHighlight()
{
	gMap.graphics.clear();
}

function toggleOv(ovPanId, ovaImgId) {
	ovPan = document.getElementById(ovPanId);
	ova = document.getElementById(ovaImgId);
	
	//alert(ovPan.className);
	
	if (ovPan.className == "overviewPanel_hidden")
	{
		ovPan.className = "overviewPanel_show";
		ova.src = CLOSE_OV_IMG;
	}
	else
	{
		ovPan.className = "overviewPanel_hidden" ;
		ova.src = OPEN_OV_IMG;
	}
}

function getLayerIdByName(layerName, aLayerInfo) {
	for (var i=0; i<aLayerInfo.length; i++)
		if (aLayerInfo[i].name == layerName)
			return aLayerInfo[i].id;
	return -1;
}

/*
function delArrElem(arr, val) {
	for (var i=0; i<arr.length; i++) {
		if (arr[i] == val) {
			arr.splice(i,1);
			break;
		}
	}
	return arr;
}
*/

function refreshPoi() {
	if (gPoiService == null) {
		if (params.lang == 'C')
			gPoiService = addLayer(gMap,POI_URL,false);
		else	
			gPoiService = addLayer(gMap,POI_URL_P,false);
	}
	var cbs = document.getElementsByName("poiCb");
	gaVisiblePoi = [-1];
	if (!dijit.byId("8").disabled) {
		for (var i=0; i<cbs.length; i++) {
			if (cbs[i].checked) {
				var id = getLayerIdByName(cbs[i].value,gPoiService.layerInfos);
				if (id != -1)
					gaVisiblePoi.push(id);
			}
		}
	}
	gPoiService.setVisibleLayers(gaVisiblePoi);
}

function onPoiCbClick() {
	refreshPoi();
}

function resizeMap() {
	if (window.innerHeight) {
		document.getElementById("mainTable").style.height = (window.innerHeight-MAP_TRM_H)+"px";
		document.getElementById("mapDiv").style.height = (window.innerHeight-RST_TRM_H)+"px";
		document.getElementById("resultDiv").style.height = (window.innerHeight -RST_TRM_H)+"px";
	}
    else if (document.documentElement.clientHeight) {
		document.getElementById("mainTable").style.height = (document.documentElement.clientHeight-MAP_TRM_H)+"px";
		document.getElementById("mapDiv").style.height = (document.documentElement.clientHeight-RST_TRM_H)+"px";
		document.getElementById("resultDiv").style.height = (document.documentElement.clientHeight -RST_TRM_H)+"px";
	}
    else if (document.body.clientHeight) {
		document.getElementById("mainTable").style.height = (document.body.clientHeight-MAP_TRM_H)+"px";
		document.getElementById("mapDiv").style.height = (document.body.clientHeight-RST_TRM_H)+"px";
		document.getElementById("resultDiv").style.height = (document.body.clientHeight - RST_TRM_H)+"px";
	}
}

function showLoading() {
	rc = document.getElementById("resultCell");
	rc.className = "loading";
	rc.innerHTML = "&nbsp;";
}

function hideLoading() {
	rc = document.getElementById("resultCell");
	rc.className = "verticalTop";
}

/*
 * Description: render the page index
 * totalPage: total available page
 * showPage: number of page shown by the index
 * currPage: the current viewing page
 * callFunc: function will be called when click on any one index
 */
function rendPageIdx(totalPage, showPage, currPage, callFunc) {
	var e = document.createElement("p");
	if (params.lang == "P")
		e.appendChild(document.createTextNode("pagina>> "));
	else if (params.lang == "C")
		e.appendChild(document.createTextNode("頁>> "));
	else	
		e.appendChild(document.createTextNode("page>> "));
	if (currPage != 1) {
		var a = document.createElement("a");
		a.href = "javascript:void(0)";
		a.onclick = function () {callFunc(1, true)};
		if (params.lang == "P")
			a.appendChild(document.createTextNode("inicio"));
		else if (params.lang == "C")
			a.appendChild(document.createTextNode("首頁"));
		else
		    a.appendChild(document.createTextNode("first"));
		e.appendChild(a);
		e.appendChild(document.createTextNode(" "));
		a = document.createElement("a");
		a.href = "javascript:void(0)";
		a.onclick = function () {callFunc(currPage-1, true)};
		if (params.lang == "P")
			a.appendChild(document.createTextNode("pagina anterior<"));
		else if (params.lang == "C")
			a.appendChild(document.createTextNode("上一頁<"));
		else
		    a.appendChild(document.createTextNode("previous<"));
		e.appendChild(a);
		e.appendChild(document.createTextNode(" "));
	}
	if (totalPage <= showPage) {
		var minIdx = 1;
		var maxIdx = totalPage;
	}
	else if (currPage > (totalPage - (showPage/2))) {
		var minIdx = totalPage - showPage + 1;
		var maxIdx = totalPage;
	}
	else {
		var minIdx = Math.max(currPage - Math.floor(showPage/2),1);
		var maxIdx = minIdx + showPage  - 1;
	}
	for (var i=minIdx; i<=maxIdx; i++) {
		e.appendChild(document.createTextNode(" "));
		if (i != currPage) {
			var a = document.createElement("a");
			a.href = "javascript:void(0)";
			a.onclick = function () {callFunc(this.innerHTML, true)};
			a.appendChild(document.createTextNode(i));
			e.appendChild(a);
		}
		else
			e.appendChild(document.createTextNode(i));
	}
	if (currPage != totalPage) {
		e.appendChild(document.createTextNode(" "));
		var a = document.createElement("a");
		a.href = "javascript:void(0)";
		a.onclick = function () {callFunc(currPage+1, true)};
		if (params.lang == "P")
			a.appendChild(document.createTextNode(">proxima pagina"));
		else if (params.lang == "C")
			a.appendChild(document.createTextNode(">下一頁"));
		else
		    a.appendChild(document.createTextNode(">next"));
		e.appendChild(a);
		e.appendChild(document.createTextNode(" "));
		a = document.createElement("a");
		a.href = "javascript:void(0)";
		a.onclick = function () {callFunc(totalPage, true)};
		if (params.lang == "P")
			a.appendChild(document.createTextNode("ultimo"));
		else if (params.lang == "C")
			a.appendChild(document.createTextNode("末頁"));
		else
		 	a.appendChild(document.createTextNode("last"));
		e.appendChild(a);
		e.appendChild(document.createTextNode(" "));
	}
	return e;
}

function SearchQry(qryTxt, searchType, currPage) {
	this.qryTxt = qryTxt;
	this.searchType = searchType;
	this.currPage = currPage;
}

function setCurrValue(searchQry) {
	document.getElementById("currQryTxt").value = searchQry.qryTxt;
	document.getElementById("currSearchType").value = searchQry.searchType;
	document.getElementById("currPage").value = searchQry.currPage;
}

function genBackSpan() {
	var bkSpan = document.createElement("span");
	bkSpan.id = "backSpan";
	var preImg = document.createElement("img");
	preImg.src = PRE_IMG_SRC;
	bkSpan.appendChild(preImg);
	return bkSpan;
}

function genNextSpan() {
	var ntSpan = document.createElement("span");
	ntSpan.id = "nextSpan";
	var ntImg = document.createElement("img");
	ntImg.src = NEXT_IMG_SRC;
	ntSpan.appendChild(ntImg);
	return ntSpan;
}

function searchBack() {
	if (currHistoryIdx<=0)
		return;
	var searchQry = aResultHistory[currHistoryIdx-1];
	currHistoryIdx--;
	setCurrValue(searchQry);
	searchWithHidden(searchQry.currPage, false);
}

function searchNext() {
	if (currHistoryIdx>=aResultHistory.length-1)
		return;
	var searchQry = aResultHistory[currHistoryIdx+1];
	currHistoryIdx++;
	setCurrValue(searchQry);
	searchWithHidden(searchQry.currPage, false);
}

function setNextBack() {
	if (params.lang == 'P') {
	  if (currHistoryIdx > 0) {
		document.getElementById('backSpan').innerHTML = "<img src='"+PRE_ACT_IMG_SRC+"' alt='Ultimo resultado de pesquisa' onclick='searchBack()' style='cursor:pointer'>";
	  }
	  else {
		document.getElementById('backSpan').innerHTML = "<img src='"+PRE_IMG_SRC+"' alt='Ultimo resultado de pesquisa'>";
	  }
	  if (currHistoryIdx < aResultHistory.length-1) {
		document.getElementById('nextSpan').innerHTML = "<img src='"+NEXT_ACT_IMG_SRC+"' alt='Proximo resultado de pesquisa' onclick='searchNext()' style='cursor:pointer'>";
	  }
	  else {
		document.getElementById('nextSpan').innerHTML = "<img src='"+NEXT_IMG_SRC+"' alt='Proximo resultado de pesquisa'>";
	  }
	}
	else if (params.lang == 'C') {
	  if (currHistoryIdx > 0) {
		document.getElementById('backSpan').innerHTML = "<img src='"+PRE_ACT_IMG_SRC+"' alt='前一個搜尋結果' onclick='searchBack()' style='cursor:pointer'>";
	  }
	  else {
		document.getElementById('backSpan').innerHTML = "<img src='"+PRE_IMG_SRC+"' alt='前一個搜尋結果'>";
	  }
	  if (currHistoryIdx < aResultHistory.length-1) {
		document.getElementById('nextSpan').innerHTML = "<img src='"+NEXT_ACT_IMG_SRC+"' alt='後一個搜尋結果' onclick='searchNext()' style='cursor:pointer'>";
	  }
	  else {
		document.getElementById('nextSpan').innerHTML = "<img src='"+NEXT_IMG_SRC+"' alt='後一個搜尋結果'>";
	  }
	}
	else
	{
	  if (currHistoryIdx > 0) {
		document.getElementById('backSpan').innerHTML = "<img src='"+PRE_ACT_IMG_SRC+"' alt='The previous record' onclick='searchBack()' style='cursor:pointer'>";
	  }
	  else {
		document.getElementById('backSpan').innerHTML = "<img src='"+PRE_IMG_SRC+"' alt='The previous record'>";
	  }
	  if (currHistoryIdx < aResultHistory.length-1) {
		document.getElementById('nextSpan').innerHTML = "<img src='"+NEXT_ACT_IMG_SRC+"' alt='The next record' onclick='searchNext()' style='cursor:pointer'>";
	  }
	  else {
		document.getElementById('nextSpan').innerHTML = "<img src='"+NEXT_IMG_SRC+"' alt='The next record'>";
	  }		
	}
}

function setComment() {
	var oReturn=document.createElement("p");
	supText1 = document.createElement("sup");
	supText1.style.color = 'rgb(255,0,0)';
	supText1.appendChild(document.createTextNode("1"));
	supText2 = document.createElement("sup");
	supText2.style.color = 'rgb(255,0,0)';
	supText2.appendChild(document.createTextNode("2"));
	supText3 = document.createElement("sup");
	supText3.style.color = 'rgb(255,0,0)';
	supText3.appendChild(document.createTextNode("3"));

	if (params.lang == 'P') {
		oReturn.appendChild(supText1);
		oReturn.appendChild(document.createTextNode(":Macau "));

		oReturn.appendChild(supText2);
		oReturn.appendChild(document.createTextNode(":Taipa "));

		oReturn.appendChild(supText3);
		oReturn.appendChild(document.createTextNode(":Coloane "));

	} else if (params.lang == 'C') {
		oReturn.appendChild(supText1);
		oReturn.appendChild(document.createTextNode(":澳門 "));

		oReturn.appendChild(supText2);
		oReturn.appendChild(document.createTextNode(":\u6c39仔 "));

		oReturn.appendChild(supText3);
		oReturn.appendChild(document.createTextNode(":路環 "));

	}
	else
	{
		oReturn.appendChild(supText1);
		oReturn.appendChild(document.createTextNode(":Macau "));

		oReturn.appendChild(supText2);
		oReturn.appendChild(document.createTextNode(":Taipa "));

		oReturn.appendChild(supText3);
		oReturn.appendChild(document.createTextNode(":Coloane "));
	
	}

	return oReturn;

}


function addSearchHistory() {
	var qryTxt = document.getElementById("currQryTxt").value;
	var searchType = document.getElementById("currSearchType").value;
	var currPage = document.getElementById("currPage").value;
	var searchQry = new SearchQry(qryTxt, searchType, currPage);
	if ((aResultHistory.length == MAX_HISTORY_SIZE) && (currHistoryIdx == (aResultHistory.length-1))) {
		aResultHistory.shift();
		currHistoryIdx--;
	}
	aResultHistory.splice(currHistoryIdx+1,aResultHistory.length-(currHistoryIdx+1),searchQry);
	currHistoryIdx = aResultHistory.length-1;
}

function onQryTxtKeyPress(e) {
	if (e.keyCode == 13)
		document.getElementById("btnBuildingSearch").click();
}

function searchCommon(qryTxtId,optId) {	
	showLoading();
	var qryTxt = document.getElementById(qryTxtId).value;
	document.getElementById("currQryTxt").value = qryTxt;
	var opt = document.getElementById(optId);
	var searchType = opt.options[opt.selectedIndex].value;
	document.getElementById("currSearchType").value = searchType;
	document.getElementById("currPage").value = "1";
	addSearchHistory();
	//modified by alan 
	if (params.lang == "E")	
	InstanceQry.findResults("",qryTxt,searchType,1,10,"P",processSearchResult);
	else
	InstanceQry.findResults("",qryTxt,searchType,1,10,params.lang,processSearchResult);
	if (searchType >= 4 && searchType <= 262144) // searching some poi type
		setPoiCheckBox(searchType);
}

function searchWithHidden(pageNo, addHistory) {
	showLoading();
	document.getElementById("currPage").value = pageNo;
	var currQryTxt = document.getElementById("currQryTxt").value;
	var currSearchType = document.getElementById("currSearchType").value;
	//modified by alan 
	if (params.lang == "E")
		InstanceQry.findResults("",currQryTxt,currSearchType,pageNo,10,"P",processSearchResult);
	else 
		InstanceQry.findResults("",currQryTxt,currSearchType,pageNo,10,params.lang,processSearchResult);
		
	if (addHistory)
		addSearchHistory();
}

function genResultTree (lstResult, needLink, needIdx, needZoom) {
	if (!lstResult || (lstResult.length == 0))
		return null;

	var layername = 'building';
	var fid = "";
	var ulNode = document.createElement("ul");
	ulNode.id = "result_tree";
	for (var i=0; i < lstResult.length; i++) {
		var resultObj = lstResult[i];
		var lstDetails = resultObj.details;
		var fid = "";
		fid = fid + resultObj.id + ",";
		var liNode = document.createElement("li");
		if (resultObj.type == REC_TYPE_BUILDING)
			liNode.className = "building";
		else if (resultObj.type == REC_TYPE_STREET)
			liNode.className = "street";
		else if (parseInt(resultObj.type) > 2)
			liNode.className = "poi";
		if (needLink) {
			var resultNode = document.createElement("a");
			resultNode.href = "";
			resultNode.name = resultObj.id+","+resultObj.type;
			resultNode.onclick = function() {zoomByFid(this.name.split(",")[0],this.name.split(",")[1]);return false;};
		}
		else {
			var resultNode = document.createElement("p");
		}
		
		var text = "";
		if (needIdx)
			//text = text + (i+1) + ". ";
			text = text + resultObj.num + ". ";
		
		if (params.lang == "P"||params.lang == "E")
			text = text + resultObj.pname+" "+resultObj.cname;
		else
			text = text + resultObj.cname+" "+resultObj.pname;
		
		if (resultObj.type == REC_TYPE_BUILDING || resultObj.type == REC_TYPE_STREET)
			text = text+" "+resultObj.description;
			
		resultNode.appendChild(document.createTextNode(trim(text.replace(/null/gi,""))));
		liNode.appendChild(resultNode);

		if (resultObj.locationid) {
			var suptext = document.createElement("sup");
			suptext.style.color='rgb(255,0,0)';
			suptext.appendChild(document.createTextNode(resultObj.locationid));
			liNode.appendChild(suptext);
		}
		
		if ((resultObj.type > 2) && resultObj.description) {
			var aDesc = resultObj.description.split("&_&");
			if (aDesc.length > 0) {
				var sbUl = document.createElement("ul");
				sbUl.className = "subList";
				for (var j=0;j<aDesc.length;j++) {
					var details = aDesc[j];
					var sbLi = document.createElement("li");
					sbLi.appendChild(document.createTextNode(trim(aDesc[j].replace(/null/gi,""))));
					sbUl.appendChild(sbLi);
				}
				liNode.appendChild(sbUl);
			}
		}
		
		if (lstDetails && (lstDetails.length > 0)) {
			var sbUl = document.createElement("ul");
			sbUl.className = "subList";
			for (var j=0;j<lstDetails.length;j++) {
				var details = lstDetails[j];
				var sbLi = document.createElement("li");
				if (params.lang == "P"||params.lang == "E")
					text = details.pname+" "+details.cname+" "+details.description;
				else
					text = details.cname+" "+details.pname+" "+details.description;
				sbLi.appendChild(document.createTextNode(trim(text.replace(/null/gi,""))));
				sbUl.appendChild(sbLi);
			}
			liNode.appendChild(sbUl);
		}
		ulNode.appendChild(liNode);
	}
	fid = fid.substr(0,fid.length-1);
	
	if (needZoom)
		zoomToFeature(fid,layername,false,true,true,true);
	return ulNode;
}

/*
function filterSearch(searchType) {
	document.getElementById("currSearchType").value = searchType;
	searchWithHidden(1,true);
}

function genFilterLink(txt, searchType) {
	var node = document.createElement("a");
	node.href = "javascript:void(0);";
	node.onclick = function() {filterSearch(searchType);};
	node.appendChild(document.createTextNode(txt));
	return node;
}
*/

function processSearchResult(qryResult) {
	if (qryResult == null || qryResult.result == null || qryResult.result.length < 1) {
		hideLoading();
		document.getElementById("resultCell").innerHTML = MSG_NO_RST;
		return;
	}
	var tbl = document.createElement("table");
	tbl.width = "100%";
	tbl.className = "search_result";
	/*
	if (document.getElementById("currSearchType").value == ALL_SEARCH_TYPE) {
		var tr = tbl.insertRow(-1);
		var td = tr.insertCell(-1);
		td.appendChild(genFilterLink("建築物資料",REC_TYPE_BUILDING));
		td.appendChild(document.createTextNode("　　"));
		td.appendChild(genFilterLink("街道資料",REC_TYPE_STREET));
		td.appendChild(document.createTextNode("　　"));
		td.appendChild(genFilterLink("景點資料",POI_SEARCH_TYPE));
		td.appendChild(document.createElement("br"));
		td.appendChild(document.createElement("br"));
	}
	*/
	var tr = tbl.insertRow(-1);
	var td = tr.insertCell(-1);
	td.align="right";
	td.appendChild(setComment());
	var tr1 = tbl.insertRow(-1);
	var td1 = tr1.insertCell(-1);
	td1.appendChild(genBackSpan());
	td1.appendChild(document.createTextNode("  "));
	td1.appendChild(genNextSpan());
	var tr2 = tbl.insertRow(-1);
	var td2 = tr2.insertCell(-1);
	if (params.lang == "P")
		var text = qryResult.totalRow+" resultados para palavras-chave "+qryResult.startIndex+" - "+qryResult.lastIndex;
	else if (params.lang == "C")
		var text = "第"+qryResult.startIndex+" - "+qryResult.lastIndex+"筆結果，共"+qryResult.totalRow+"筆結果";
	else
		var text = "record "+qryResult.startIndex+" - "+qryResult.lastIndex+"，"+qryResult.totalRow+" record(s) in total";
	td2.appendChild(document.createTextNode(text));
	td2.appendChild(document.createElement("br"));
	td2.appendChild(rendPageIdx(qryResult.totalPage, PAGE_SHOWN_LIMIT, qryResult.currentPage, searchWithHidden));
	td2.appendChild(document.createElement("br"));
	/*var tr3 = tbl.insertRow(-1);
	var td3 = tr3.insertCell(-1);
	td3.appendChild(genTreeCtrNode());*/
	var tr4 = tbl.insertRow(-1);
	var td4 = tr4.insertCell(-1);
	var rstNode = genResultTree(qryResult.result,true,true,false);
	if (rstNode != null)
		td4.appendChild(rstNode);
	var tr5 = tbl.insertRow(-1);
	var td5 = tr5.insertCell(-1);
	td5.appendChild(document.createElement("br"));
	td5.appendChild(rendPageIdx(qryResult.totalPage, PAGE_SHOWN_LIMIT, qryResult.currentPage, searchWithHidden));
	var rtCell = document.getElementById("resultCell");
	hideLoading();
	rtCell.replaceChild(tbl,rtCell.firstChild);
	setNextBack();
}

function changeHelpTips() {
	var opt = document.getElementById('searchOpt');
	var helpTips = document.getElementById('search_help_span');
	idx = opt.selectedIndex;
	if (idx == 0){
		if(params.lang == 'C')
			helpTips.innerHTML = ALL_HELP;
		else if(params.lang == 'P')
			helpTips.innerHTML = ALL_HELP_P;
		else
		    helpTips.innerHTML = ALL_HELP_E;
	}
	else if (idx == 1){
		if(params.lang == 'C')
			helpTips.innerHTML = BUILDING_HELP;
		else if(params.lang == 'P')
			helpTips.innerHTML = BUILDING_HELP_P;
		else
		    helpTips.innerHTML = BUILDING_HELP_E;
	}
	else if (idx == 2){
		if(params.lang == 'C')
			helpTips.innerHTML = STREET_HELP;
		else if(params.lang == 'P')
			helpTips.innerHTML = STREET_HELP_P;
		else
		    helpTips.innerHTML = STREET_HELP_E;
	}
	else if (idx == 3){
		if(params.lang == 'C')
			helpTips.innerHTML = POI_HELP;
		else if(params.lang == 'P')
			helpTips.innerHTML = POI_HELP_P;
		else
			helpTips.innerHTML = POI_HELP_E;
	}
}

function extentHistoryChangeHandler() {
	dijit.byId("zoomprev").setDisabled(gNavToolbar.isFirstExtent());
	dijit.byId("zoomnext").setDisabled(gNavToolbar.isLastExtent());
}

function togglePoi() {
	var disablePoi = (gMap.getLevel() < 7);
	if ((disablePoi && !dijit.byId("8").disabled) ||
		(!disablePoi && dijit.byId("8").disabled))
	{
		//dijit.byId("4").setDisabled(disablePoi);
		dijit.byId("8").setDisabled(disablePoi);
		dijit.byId("16").setDisabled(disablePoi);
		//dijit.byId("32").setDisabled(disablePoi);
		//dijit.byId("64").setDisabled(disablePoi);
		//dijit.byId("128").setDisabled(disablePoi);
		dijit.byId("256").setDisabled(disablePoi);
		//dijit.byId("512").setDisabled(disablePoi);
		dijit.byId("1024").setDisabled(disablePoi);
		//dijit.byId("2048").setDisabled(disablePoi);
		dijit.byId("4096").setDisabled(disablePoi);
		//dijit.byId("8192").setDisabled(disablePoi);
		//dijit.byId("16384").setDisabled(disablePoi);
		//dijit.byId("32768").setDisabled(disablePoi);
		dijit.byId("65536").setDisabled(disablePoi);
		dijit.byId("131072").setDisabled(disablePoi);
		dijit.byId("262144").setDisabled(disablePoi);
		refreshPoi();
	}
}

function disablePoi() {
	//dijit.byId("4").setDisabled(true);
	dijit.byId("8").setDisabled(true);
	dijit.byId("16").setDisabled(true);
	//dijit.byId("32").setDisabled(true);
	//dijit.byId("64").setDisabled(true);
	//dijit.byId("128").setDisabled(true);
	dijit.byId("256").setDisabled(true);
	//dijit.byId("512").setDisabled(true);
	dijit.byId("1024").setDisabled(true);
	//dijit.byId("2048").setDisabled(true);
	dijit.byId("4096").setDisabled(true);
	//dijit.byId("8192").setDisabled(true);
	//dijit.byId("16384").setDisabled(true);
	//dijit.byId("32768").setDisabled(true);
	dijit.byId("65536").setDisabled(true);
	dijit.byId("131072").setDisabled(true);
	dijit.byId("262144").setDisabled(true);
}

/*
function updateScale() {
	var lods = gBaseMapLayer.tileInfo.lods;
	var currScale = lods[gMap.getLevel()].scale;
	dojo.byId("scale").innerHTML = "1:"+currScale;
}
*/

function isArrContain(arr, elem) {
	for (var i=0; i<arr.length; i++) {
		if (arr[i] == elem)
			return true;
	}
	return false;
}

function showCoordinates(evt) {
	//get mapPoint from event
	var mp = evt.mapPoint;
	//display mouse coordinates
	dojo.byId("coord").innerHTML = "x:" + Math.round(mp.x) + ", y:" + Math.round(mp.y);
}

function exportMap(){   //Cyril Added 2009-06-17
	if (params.lang == 'C')
		var printPath = Srv_URL + "/InetGIS/chn/print.html?bbox="+ gMap.extent.xmin.toFixed(1) +"," + gMap.extent.ymin.toFixed(1) + "," + gMap.extent.xmax.toFixed(1) + "," + gMap.extent.ymax.toFixed(1) + "&size=" + gMap.width + "," + gMap.height; 
	else if (params.lang == 'P')
		var printPath = Srv_URL + "/InetGIS/port/print.html?bbox="+ gMap.extent.xmin.toFixed(1) +"," + gMap.extent.ymin.toFixed(1) + "," + gMap.extent.xmax.toFixed(1) + "," + gMap.extent.ymax.toFixed(1)+ "&size=" + gMap.width + "," + gMap.height; 
	else
		var printPath = Srv_URL + "/InetGIS/eng/print.html?bbox="+ gMap.extent.xmin.toFixed(1) +"," + gMap.extent.ymin.toFixed(1) + "," + gMap.extent.xmax.toFixed(1) + "," + gMap.extent.ymax.toFixed(1)+ "&size=" + gMap.width + "," + gMap.height; 
	
	window.open(printPath,"Print");
}

/*
function toggleMeasure() {
	var mc = dojo.byId("measureControl");
	var m = dojo.byId("measure");
	if ( m.style.display == "none") {
		mc.setAttribute("src","../images/arrow_right.gif");
		m.style.display = "";
	}
	else {
		mc.setAttribute("src","../images/arrow_left.gif");
		m.style.display = "none";
		gDrawToolbar.deactivate();
		gMap.graphics.clear();
	}
}

function outputDistance(result) {
	dojo.byId("measureResult").innerHTML = "距離："+dojo.number.format(result.lengths[0]);
}
*/
