






/****************** Search page ********************************************/
/**
 * Function to initialise the search page on the right mode (simple or advanced)
 */

function initSearch() {
	var searchType = document.getElementById("searchType");
	if (searchType.value == "ADVANCED") {
		showAdvancedSearch();
	} else {
		showSimpleSearch();
	}
	initializeMap();
}

/**
 * Function used to show the advanced search pane (and hide simple search page)
 */
function showAdvancedSearch() {
	var simpleWhat = document.getElementById("simpleWhat");
	var simpleWhere = document.getElementById("simpleWhere");
	var advancedWhat = document.getElementById("advancedWhat");
	var advancedWhere = document.getElementById("advancedWhere");
	var options = document.getElementById("options");
	var mapBoxBorder = document.getElementById("wqMapBoxBorder");
	var simpleTab = document.getElementById("simpleSearchTab");
	var advancedTab = document.getElementById("advancedSearchTab");
	var radio = document.getElementById("boundingBox");
	var searchType = document.getElementById("searchType");
	var selectMetadataType = document.getElementById("selectMetadataType");
	
	
	simpleWhat.style.display = "none";
	simpleWhere.style.display = "none";
	advancedWhat.style.display = "";
	advancedWhere.style.display = "";
	displayMetadaFilter(selectMetadataType.options[selectMetadataType.selectedIndex].value);
	
	<!--	si pas en mode admin-->
	if(options != null){	
		options.style.top = "400px";
		options.style.margin = "20px 20px 20px 20px";
	}
	
	
	mapBoxBorder.className="wqAdvancedMapBoxBorder";
	
	simpleTab.className="";
	advancedTab.className="newTabOn";
	
	searchType.value = "ADVANCED";
	radio.checked = true;
}

/**
 * Function used to show the simple search pane (and hide advanced search page)
 */
function showSimpleSearch() {
	var simpleWhat = document.getElementById("simpleWhat");
	var simpleWhere = document.getElementById("simpleWhere");
	var advancedWhat = document.getElementById("advancedWhat");
	var advancedWhere = document.getElementById("advancedWhere");
	var options = document.getElementById("options");
	var mapBoxBorder = document.getElementById("wqMapBoxBorder");
	var simpleTab = document.getElementById("simpleSearchTab");
	var advancedTab = document.getElementById("advancedSearchTab");
	var radio = document.getElementById("simple");
	var searchType = document.getElementById("searchType");
	
	simpleWhat.style.display = "";
	simpleWhere.style.display = "";
	advancedWhat.style.display = "none";
	advancedWhere.style.display = "none";
	
<!--	si pas en mode admin-->
	if(options != null){	
		options.style.top = "370px";
		options.style.margin = "20px 20px 20px 40px";
	}
	
	
	mapBoxBorder.className="wqSimpleMapBoxBorder";
	
	simpleTab.className="newTabOn";
	advancedTab.className="";
	
	searchType.value = "SIMPLE";
	radio.checked = true;
}

/**
 * Show hide metadata constraints
 */
 function displayMetadaFilter(metadataType) {
 	var dataCheckBoxList = document.getElementById("dataCheckBoxList");
 	var serviceCheckBoxList = document.getElementById("serviceCheckBoxList");
 	
 	var wqDataDCCheckBox = document.getElementById("wqDataDCCheckBox");
 	var wqDataOCCheckBox = document.getElementById("wqDataOCCheckBox");
 	var wqServiceOCCheckBox = document.getElementById("wqServiceOCCheckBox");
 	var wqServiceDCCheckBox = document.getElementById("wqServiceDCCheckBox");
 	var wqServiceOtherCCheckBox = document.getElementById("wqServiceOtherCCheckBox");

 	if (metadataType == "1") {
 		dataCheckBoxList.style.display="";
 		serviceCheckBoxList.style.display="none";
 		
 		wqServiceOCCheckBox.checked=false;
 		wqServiceDCCheckBox.checked=false;
 		wqServiceOtherCCheckBox.checked=false;
 	}
 	else if (metadataType == "2")  {
 		dataCheckBoxList.style.display="none";
 		serviceCheckBoxList.style.display="";
 		
 		wqDataOCCheckBox.checked=false;
 		wqDataDCCheckBox.checked=false;
 	}
 	else{
 		dataCheckBoxList.style.display="none";
 		serviceCheckBoxList.style.display="none";
 		
 		wqDataOCCheckBox.checked=false;
 		wqDataDCCheckBox.checked=false;
 		wqServiceOCCheckBox.checked=false;
 		wqServiceDCCheckBox.checked=false;
 		wqServiceOtherCCheckBox.checked=false;
 	}
 	
 }

/****************** List page ********************************************/
/**
 * Function used to alert the user he is about to delete a metadata.
 */
 //EWE : Mantis 991
function deleteMetadata(mdId,type) {
	showForm(mdId, type);
}

function sendDeleteMetadata(confirmTyped, mdId){
	if (confirmTyped == "SUPPRIMER") {
		var myForm = document.getElementById('DeleteMetadata');
		myForm.dbId.value = mdId; 
		myForm.submit();
	}
	hideForm();
}
 //EWE : Fin Mantis 991
/*
 * Utility function, buiding HTTP request parameter with value encoding ("strParamName=strParamValue").
 */
function toAjaxRequestParameter(strParamName, strParamValue)
{
	var strParamHTTP = ''+strParamName+'='+((strParamValue == null)?'':encodeURIComponent(strParamValue));
	return strParamHTTP;
}

function listOnLoad() {
	refineSearchRefine(null, null, null, null, null);
	addToRemoveFromBasket(null,true);	// Refreshing basket size (adding none item)
}

function refineSearchList(context, refine, resultPerPage, sortBy, offset) {

	 
	
	var url='RefineSearchList.do';
	
	
	
	var request = toAjaxRequestParameter('context',context) +
				  '&' + toAjaxRequestParameter('refine',refine) + 
				  '&' + toAjaxRequestParameter('resultPerPage',resultPerPage) + 
				  '&' + toAjaxRequestParameter('sortBy',sortBy) + 
				  '&' + toAjaxRequestParameter('resultOffset',offset);
	displayLoadingElement('listDiv');
	var http = new Ajax.Request(
		url, 
		{
			method: 'post', 
			parameters: request,
			onSuccess: function(originalRequest){
						var text = originalRequest.responseText;
						//unDisplayLoadingElement('listDiv');
						// Writting Ajax response
						document.getElementById('listDiv').innerHTML=text;				
			},
			onFailure: function(originalRequest){
						unDisplayLoadingElement('listDiv');
						document.getElementById('listDiv').innerHTML='Chargement échoué';				
						}
		}
	);
	
}	
function refineSearchRefine(context, refine, resultPerPage, sortBy, offset) {
	 
	
	var url='RefineSearchRefine.do';
	
	
	
	var request = toAjaxRequestParameter('context',context) +
				  '&' + toAjaxRequestParameter('refine',refine) + 
				  '&' + toAjaxRequestParameter('resultPerPage',resultPerPage) + 
				  '&' + toAjaxRequestParameter('sortBy',sortBy) + 
				  '&' + toAjaxRequestParameter('resultOffset',offset);
	displayLoadingElement('refineDiv');
	var http = new Ajax.Request(
		url, 
		{
			method: 'post', 
			parameters: request,

			onSuccess: function(originalRequest){
						var text = originalRequest.responseText;	
						unDisplayLoadingElement('refineDiv');
						// Writting Ajax response
						document.getElementById('refineDiv').innerHTML=text;				
			},
			onFailure: function(originalRequest){
						unDisplayLoadingElement('refineDiv');
						document.getElementById('refineDiv').innerHTML='Chargement échoué';				
			}
		}
	);
	
	// Lancement du rafraichissement de la liste des résultats
	refineSearchList(context, refine, resultPerPage, sortBy, offset);
}

function displayLoadingElement(id) {
	var el = Ext.get(id);
	el.mask('Chargement...'/*,'load-mask-msg'*/);
}

function unDisplayLoadingElement(id) {
	var el = Ext.get(id);
	el.unmask();
}


function addToRemoveFromBasket(mdId, add){ 

	 
	
	var url=(add ? 'AddToBasketFromList.do' : 'RemoveFromBasketFromList.do');
	
	
	

	var request = toAjaxRequestParameter('mdId',mdId);
		
	var http = new Ajax.Request(
		url, 
		{
			method: 'post', 
			parameters: request,
			onSuccess: function(originalRequest){

						var text = originalRequest.responseText;	
						
						// Managing basket refresh on load : mdId = null, no actual adding
						if (mdId != null)
						{
							var chk = document.getElementById('chkItem_'+mdId);
							if (add)
							{
								chk.title='Retirer cette métadonnée de votre sélection';
								chk.href='javascript:addToRemoveFromBasket('+mdId+', false);';
								document.getElementById('chkImg_'+mdId).src = '/images/bouton/CheckBtn-on.gif';
							}
							else
							{
								chk.title='Ajouter cette métadonnée à votre sélection';
								chk.href='javascript:addToRemoveFromBasket('+mdId+', true);';
								document.getElementById('chkImg_'+mdId).src = '/images/bouton/CheckBtn-off.gif';
							}
						}
						
						// Writting Ajax response
						document.getElementById('selectionBox').innerHTML=text;
						
			},
			onFailure: function(originalRequest){
						//unDisplayLoadingElement('selectionBox');
						document.getElementById('selectionBox').innerHTML='Chargement échoué';				
			}
		}
	);
}
		
 

 //EWE : Mantis 1007
	function confirmDisableServices(){
		if(confirm("Etes-vous sûr de vouloir désactiver le(s) service(s) sélectionné(s) ?")){
			submitForm('disableServices');
		}
	}
	function confirmEnableServices(){
		if(confirm("Etes-vous sûr de vouloir activer le(s) service(s) sélectionné(s) ?")){
			submitForm('enableServices');
		}
	}
	// Avoid misinterpretation of < in eclipse
	function isInferiorTo(a, b) {
		return a<b;
	}
	function selectServices(pSelected) {
		var lFormElements=document.forms['ListMDServiceTestResultBean'].elements;
		for(var lFormElementIndex=0;isInferiorTo(lFormElementIndex, lFormElements.length);lFormElementIndex++) {//>
			var lFormElement=lFormElements[lFormElementIndex];
			if (lFormElement.name.match(/services\[[0-9]+\].selected/)) {
				lFormElement.checked=pSelected;
			}	
		}
	}
	function testOGCService(idToTest){
		var url='/admin/ListMDServiceTest.do';	
		var request = 'mdId=' + idToTest + '&dispatchMethod=processTest';
		document.getElementById('testResuDivHide'+idToTest).style.display='';
		document.getElementById('testResuDiv'+idToTest).style.display='none';
		var http = new Ajax.Request(
			url,
			{
				method: 'post', 
				postBody: request,
				requestHeaders: ['Content-type', 'application/x-www-form-urlencoded'],
				onSuccess: function(originalRequest){
					alert('Le test du service est terminé.');
					document.getElementById('testResuDivHide'+idToTest).style.display='none';
					document.getElementById('testResuDiv'+idToTest).style.display='';
				},
				onFailure: function(originalRequest){
					alert('Le test du service a échoué suite à un problème technique.');
					document.getElementById('testResuDivHide'+idToTest).style.display='none';
					document.getElementById('testResuDiv'+idToTest).style.display='';
				}
			}); 
	}
	
	function showForm(mdId, type){
	  var Obj;
  
	  //-- on affiche le formulaire
	  var title = document.getElementById('title_'+mdId).value;
	  var message = "<b>Vous êtes sur le point de supprimer la métadonnée intitulée : " + title + ".</b>\n";
	  message += "<br/><br/>Tapez 'SUPPRIMER' en toutes lettres pour confirmer cette action.\n";
	  if(type == "service"){
		  message += "<br/><br/>ATTENTION : l'ensemble des authorisations et exceptions portant sur cette métadonnée sera perdu.\n";
		  message += "<br/><br/>L'ensemble des liens de cette métadonnée avec les métadonnées de données sera supprimé.\n";
	  }else if(type == "data"){
		message += "<br/><br/>L'ensemble des liens de cette métadonnée avec les métadonnées de service sera supprimé.\n";
	  }
	  //monAction="sendDeleteMetadata(document.getElementById('inputTyped').value,document.getElementById('mdId').value)";	
	  monAction="sendDeleteMetadata(document.getElementById('inputTyped').value,"+mdId+")";	
	  generateConfirmPopupMessage(message, monAction);
	  //generateConfirmPopupMessage(message);
	  document.getElementById('mdId').value=mdId;
	}
	
 //EWE : Mantis 991
	function generateConfirmPopupMessage(messageIn, monAction){
	
	  var message ="<div class='main' style='text-align: center' style='border: 0; ' id='confDelete'>";
	  message += messageIn;	  
 	  message += "<br/>\n";
 	  message += "<br/>\n";
	  message += "<input type='hidden' value='' name='mdId' id='mdId'/>\n";
	  message +="<div style='text-align: center'>";
      message += "<input type='text' maxlength='9' size='9' id='inputTyped' name='inputTyped' />\n";
 	  message += "<br/>\n";
 	  message += "<br/>\n";
 	  message +="<div style='text-align: center' align='center'>";
 	  message += '<table class="ResetBtn" cellpadding="0" cellspacing="0" style="text-align: center" align="center">';
 	  message += '<tbody >\n';
      message += '<tr  align="center" >\n';
      message += '<td class="ResetBtn_g" ></td>\n';
      message += '<td class="ResetBtn_m"   title="Confirmer"><a href="#" onclick="javascript:'+monAction+'" class="ResetBtn_m"><img class="ResetBtn_img" src="/images/bouton/Select.gif" alt="" />Confirmer</a></td>\n';
      message += '<td class="ResetBtn_d" ></td>\n';
      message += '<td>&nbsp;</td>\n';
      message += '<td class="ResetBtn_g"></td>\n';
      message += '<td class="ResetBtn_m" title="Annuler"><a href="#" onclick="javascript:hideForm()" class="ResetBtn_m"><img class="ResetBtn_img" src="/images/bouton/Unselect.gif" alt=""  />Annuler</a></td>\n';
      message += '<td class="ResetBtn_d"></td>\n';
      message += '</tr>\n';
      message += '</tbody>\n';
      message += '</table>\n';
	  message += "</div>\n";
	  message += "</div>\n";
	  message += "</div>\n";
	  
	  document.getElementById('maskToMove').innerHTML=message;
	  document.getElementById('confirmDelete').style.display="";
	  document.getElementsByTagName('BODY')[0].style.position='relative';
	  document.getElementsByTagName('BODY')[0].style.overflow='hidden';
	  document.getElementsByTagName('BODY')[0].style.height='100%';
	  document.getElementById('maskToMove').style.display="";
	  document.getElementById('maskToMove').style.top=getScrollY()+screen.height*0.25+'px';
	  document.getElementById('confirmDelete').style.top=getScrollY();
	  window.onscroll=function(){document.getElementById('maskToMove').style.top=getScrollY()+screen.height*0.25+'px'};
	  document.getElementById('inputTyped').focus();
	}
	function getScrollY() {
        var scrollY = 0;
        if( document.documentElement && document.documentElement.scrollTop ) {
            scrollY = document.documentElement.scrollTop;
        }
        else if( document.body && document.body.scrollTop ) {
            scrollY = document.body.scrollTop;
        }
        else if( window.pageYOffset ) {
            scrollY = window.pageYOffset;
        }
        else if( window.scrollY ) {
            scrollY = window.scrollY;
        }
        return scrollY;
    }
	function hideForm(){
	  window.onscroll='';
	  document.getElementsByTagName('BODY')[0].style.overflow='auto';
	  //Ext.get('listDiv').unmask();
	  document.getElementById('confirmDelete').style.display="none";
	  document.getElementById('maskToMove').style.display="none";
	}

 //EWE : FIN Mantis
	function showMetadata(mdId, show){ 
		var form = 	document.getElementById('ShowHideMetadata');
		form.id.value = mdId; 
		form.visible.value = show;
		form.submit(); 
	} 
	
	function updateMetadata(mdId){ 
		var form = 	document.getElementById('UpdateMetadata'); 
		form.id.value = mdId; 
		form.submit(); 
	}
	
	// DSU : Mantis 982
	function updateMetadataService(mdId){ 
		var form = 	document.getElementById('UpdateMetadataService'); 
		form.id.value = mdId; 
		form.submit(); 
	}

	 //EWE : Mantis 991
	function deleteMetadataLink( idMDS, idMDD, libelleReponseAjax, boutonsService, libelleService, urlService ){
		var message = "Vous êtes sur le point de supprimer le lien avec ce service";
		message += "\n" + "Tapez 'SUPPRIMER' en toutes lettres pour confirmer cette action.";

		generateConfirmPopupMessage(message,"sendDeleteMetadataLink(document.getElementById(\'inputTyped\').value,"+idMDS+","+idMDD+",'"+libelleReponseAjax+"','"+ boutonsService +"','"+ libelleService+"','"+ urlService+"')" );
	}
	 //EWE : FIN Mantis
	 
	// DSU : Fin Mantis
	function sendDeleteMetadataLink(response, idMDS, idMDD, libelleReponseAjax, boutonsService, libelleService, urlService){
		if (response == "SUPPRIMER") {
			var url='/admin/DeleteMetadataLink.do';
		     document.getElementById(libelleReponseAjax).innerHTML='';
	         var request = toAjaxRequestParameter('idMDS',idMDS) +
				           '&' + toAjaxRequestParameter('idMDD',idMDD);
	       displayLoadingElement('listDiv');
	         var http = new Ajax.Request(
		     url, 
		     {
			method: 'post', 
			parameters: request,
			
			onSuccess: function(originalRequest){
			            unDisplayLoadingElement('listDiv');
						var text = originalRequest.responseText;
						// Writting Ajax response
						document.getElementById(libelleReponseAjax).innerHTML=text;
						if( text.indexOf( 'La suppression du lien avec ce service a réussi.', 0 ) > 0 )
						{
						    document.getElementById(boutonsService).innerHTML='';
						    document.getElementsByName( libelleService )[0].value = '';
						    document.getElementsByName( urlService )[0].value = '';
						}
			           },
			onFailure: function(originalRequest){
						document.getElementById(libelleReponseAjax).innerHTML='La suppression du lien avec ce service a échoué.';
						unDisplayLoadingElement('listDiv');				
						}
		      }
	        );
		}
		hideForm(); 
	}
	




/****************** List page ********************************************/
/*
* Envoie une requete de lancement d'une MDS 
*/
function launchService(mdsId, mddId){
// Url du service de recherche des communes
var url='/LaunchService.do';	
var request = 'mdsId=' + mdsId + '&mddId=' + mddId;
var http = new Ajax.Request(
url, 
{
	method: 'get', 
	parameters: request,
	onSuccess: function(originalRequest){
				var text = originalRequest.responseText;	
				// convertir la string en un objet JS
				var jsonObj = eval('(' + text + ')');
				
				if (jsonObj.error != null) {
					alert(jsonObj.error);
				} else {
					switch (jsonObj.type) {
					case 'W3C_HTML_DOWNLOAD' :
					case 'W3C_HTML_LINK' :
					case 'OTHER':
						window.open(jsonObj.url, '_blank');
						break;
					case 'OGC_WFS':
					case 'OGC_WMS':
					case 'OGC_WPS':
					case 'OSGEO_WMS_C':
						window.location = jsonObj.url;
						break;
					default:
						window.location = jsonObj.url;
						break;
					}
				}
				
	},
	onFailure: function(originalRequest){
					alert('Erreur');
				}
});
}			
/*
* Envoie une requete de visualisation d'une MDD 
*/
function displayData(mddId){
// Url du service de recherche des communes
var url='/DisplayData.do';	
var request = 'id=' + mddId;
var http = new Ajax.Request(
url, 
{
	method: 'get', 
	parameters: request,
	onSuccess: function(originalRequest){
				var text = originalRequest.responseText;	
				// convertir la string en un objet JS
				var jsonObj = eval('(' + text + ')');
				
				if (jsonObj.error != null) {
					alert(jsonObj.error);
				} else {
					window.location = jsonObj.url;
				}
				
	},
	onFailure: function(originalRequest){
					alert('Erreur');
				}
});
}			

/****************** Detail page ********************************************/
/**
 * Function used to open or close a block.
 */

function switchBlock(blockId, imageId) {
	var block = document.getElementById(blockId);
	var image = document.getElementById(imageId);
	if (block.style.display == "none") {
		block.style.display = "";
		image.src = "/images/panneau_fermer.gif";
	} else {
		block.style.display = "none";
		image.src = "/images/panneau_ouvrir.gif";
	}
}

/****************** Basket page ********************************************/
/**
 * Function used to (in)validate visualisation/export buttons.
 */
function updateBasketButtons() {
	var enabledVisualizeButtonElement = document.getElementById("enabledVisualizeButton");
	var disabledVisualizeButtonElement = document.getElementById("disabledVisualizeButton");
	var enabledExportButtonElement = document.getElementById("enabledExportButton");
	var disabledExportButtonElement = document.getElementById("disabledExportButton");

	var basketSizeElement = document.getElementById("basketSize");

   	enabledVisualizeButtonElement.style.display = "none";
   	disabledVisualizeButtonElement.style.display = "";
   	enabledExportButtonElement.style.display = "none";
   	disabledExportButtonElement.style.display = "";

    for(var i=0; i < parseInt(basketSizeElement.value); i++)
    {
		var displayableFlag = document.getElementsByName('itemList[' + i + '].displayable');
        if (displayableFlag && displayableFlag.length > 0 && displayableFlag[0].value == "true")
        {
        	enabledVisualizeButtonElement.style.display = "";
        	disabledVisualizeButtonElement.style.display = "none";
        }

		var ogcFlag = document.getElementsByName('itemList[' + i + '].ogc');
        if (ogcFlag && ogcFlag.length > 0 && ogcFlag[0].value == "true")
        {
        	enabledExportButtonElement.style.display = "";
        	disabledExportButtonElement.style.display = "none";
        }
    }
}

/****************** Register Metadata page ********************************************/
/**
 * Function used to (in)validate the preview upload field with respect to the file type.
 */
function updatePreviewField() {
	var previewElement = document.getElementById("previewId");
	var typeElement = document.getElementById("typeId");

	if (typeElement.value == "ZIP") {
		previewElement.disabled = true;
	} else {
		previewElement.disabled = false;
	}
}



/*
* Envoie une requete de lancement d'une MDS 
*/
function launchServlet(met_id, criteriaValue, selectedAffinage, typeLink, launchServiceData){
// Url du service de recherche des communes
var url='/logConsultationMetadata';	
var request = 'id=' + met_id + '&criteria=' + criteriaValue + '&affinage=' + selectedAffinage + '&fileType=' + typeLink;
var http = new Ajax.Request(
url, 
{
	method: 'get', 
	parameters: request,
	onSuccess: function(){
	}
});
eval(launchServiceData);
}

