/**
 * Cache la DialogBox et vide son contenu
 */

function hideSearchLayer() {
	document.getElementById("searchLayerResultDiv").style.display='none';
	document.getElementById("searchLayerInput").value = '';
	dijit.byId('SearchLayerDialogBox').hide();
}

/**
 * Lance la recherche au service JSON
 */
function validSearchLayer() {
	var adresse = document.getElementById("searchLayerURL").value;
	var search = document.getElementById("searchLayerInput").value;
	var label = document.getElementById("searchLayerLoadingMessage").value;
	var layerId = document.getElementById('searchLayerId').value;
	
	var dijitLoader = dijit.byId("LoadingToaster");
	var mId = dijitLoader.addMessage(label + getLayerTitle(layerId));
	
	adresse = adresse.replace(/%SEARCH%/,encodeURIComponent(search));
	
	adresse += "&CALLBACK=listPoint";
	adresse += "&MAXROWS=20";

	dojo.xhrGet(
	{
//		url : "./proxy?url=" + escape(adresse),
		url : adresse,
		handleAs: "json",
		load: function(responseObject, ioArgs) {
			eval(responseObject);
			dijitLoader.removeMessage(mId);
		},
		error: function(err) {
			dijitLoader.removeMessage(mId);
			displayErrorMessage(gErrors["error.service.global"]);
    	}
	}
	);
	
}

/**
 * Affiche les points � partir du r�sultat du service JSON
 */
function listPoint(jData) {
  if (jData == null) {
    // There was a problem parsing search results
    return;
  }
  
  var geonames = jData.geonames;
  var html = '';
  
  if (geonames.length > 0) {
	html = '<ul>';
	var ficheInfo = getFicheInfo();
	for (i=0;i< geonames.length;i++) {
	  var name = geonames[i];
	  // we create a simple html list with the result objects
	  // the link will call the center() javascript method with lat/lng as parameter
	  
	  html += '<li class="goToItem">'
	  	+ '<a class="infoterreLink" href="javascript:goToPoint(' + name.lat +',' + name.lng + ');">'
	  	+ name.name 
	  	+ '</a>';
	  if (ficheInfo.length > 0) {
	  	html += '&nbsp;-&nbsp;<a class="infoterreLink infoterreLinkSmall" href="#" onClick="javascript:window.open(\''
	  		+ ficheInfo[0].replace(/%ID%/,name.name)
	  		+ '\')">' + ficheInfo[1] + '</a>';
	  }
	  html += '</li>';
	}
	html += '</ul>';
  } else {
    html += gErrors["error.service.noResult"];;
  }

  var resultDiv = document.getElementById('searchLayerResultDiv');
	
  resultDiv.innerHTML = html;
  resultDiv.style.display = 'block';
}

/**
 * Centre la carte sur le r�sultat choisi par l'utilisateur
 */
function goToPoint(iLat, iLong) {
	itZoomToBox(new Array(parseFloat(iLong) - 0.01, parseFloat(iLat) + 0.01), new Array(parseFloat(iLong) + 0.01, parseFloat(iLat) - 0.01), "EPSG:4326");
	hideSearchLayer();
}

/**
 * R�cup�re les informations li�es � la premi�re fiche d'info disponible pour la couche associ�e au service
 */
function getFicheInfo() {
	var result = new Array();
	var layerId = document.getElementById('searchLayerId').value;
	if (layerId.length > 0) {
		var mapObj = config.objects.mainMap;
		var getFeatureInfoNodeURI = "/wmc:ViewContext/wmc:LayerList/wmc:Layer[@id='"
			+ layerId
			+ "']/wmc:Extension/wmc:Infoterre/wmc:AdditionalInformation/wmc:GetFeatureInfo/wmc:CustoFeatureService";
		var UrlNode = mapObj.doc.selectSingleNode(getFeatureInfoNodeURI + "/wmc:OnlineResource");
		var Url = '';
		if (UrlNode)
			Url = UrlNode.getAttribute("xlink:href");
		var TitleNode = mapObj.doc.selectSingleNode(getFeatureInfoNodeURI + "/wmc:Title")
		var Title = ''
		if (TitleNode)
			Title = TitleNode.firstChild.nodeValue;
		if (Url.length > 0 && Title.length > 0) {
			result[0] = Url;
			result[1] = Title;
		}
	}
	return result;
}