






/****************** 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();
	}
}

/**
 * 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 mapBoxBorder = document.getElementById("wqMapBoxBorder");
	var simpleTab = document.getElementById("simpleSearchTab");
	var advancedTab = document.getElementById("advancedSearchTab");
	

	var searchType = document.getElementById("searchType");


	simpleWhat.style.display = "none";
	simpleWhere.style.display = "none";
	advancedWhat.style.display = "";
	advancedWhere.style.display = "";
	
	mapBoxBorder.className="wqAdvancedMapBoxBorder";
	
	simpleTab.className="";
	advancedTab.className="searchTabOn";
	
	searchType.value = "ADVANCED";
}

/**
 * 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 mapBoxBorder = document.getElementById("wqMapBoxBorder");
	var simpleTab = document.getElementById("simpleSearchTab");
	var advancedTab = document.getElementById("advancedSearchTab");
	
	var searchType = document.getElementById("searchType");

	simpleWhat.style.display = "";
	simpleWhere.style.display = "";
	advancedWhat.style.display = "none";
	advancedWhere.style.display = "none";
	
	mapBoxBorder.className="wqSimpleMapBoxBorder";
	
	simpleTab.className="searchTabOn";
	advancedTab.className="";
	
	searchType.value = "SIMPLE";
}


/****************** List page ********************************************/
/**
 * Function used to alert the user he is about to delete a metadata.
 */
function alertDelete(title) {
	var message = "Vous êtes sur le point de supprimer la métadonnée intitulée :" + " " + title;
	message += "\n" + "Tapez 'SUPPRIMER' en toutes lettres pour confirmer cette action.";
	var response = prompt(message);
	if (response == "SUPPRIMER") {
		return true;
	} else {
		return false;
	}
}

/*
 * 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);
	refineSearchList(null, null, null, null, null);
	addToRemoveFromBasket(null,true);	// Refreshing basket size (adding none item)
}

function refineSearchList(context, refine, resultPerPage, sortBy, offset) {

	 
	
	var url='RefineSearchListProviders.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='RefineSearchRefineListProviders.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é';				
			}
		}
	);
}
		
 


	function showMetadata(mdId, show){ 
		var form = 	document.getElementById('ShowHideMetadata');
		form.id.value = mdId; 
		form.visible.value = show;
		form.submit(); 
	} 
	function deleteMetadata(mdId){
		var title = document.getElementById('title_'+mdId).value;
		if (alertDelete(title)) { 
			var form = document.getElementById('DeleteMetadata'); 
			form.dbId.value = mdId; form.submit(); 
		} 
	} 
	function updateMetadata(mdId){ 
		var form = 	document.getElementById('UpdateMetadata'); 
		form.id.value = mdId; 
		form.submit(); 
	}
	



/****************** 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;
						
					}
				}
				
	},
	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;
	}
}

/*
* Retaille une image en 120*60px de maniere a prendre toute la hauteur ou toute la largeur de la cellule dans laquelle elle se trouve,
* tout en conservant le ration hauteur/largeur pour ne pas la deformer 
*/
function resizeImage( img )
{
   var width = 0;
   var ratio = 0;
   // Si l'image tient dans les dimensions, on ne la retaille pas.
   if( img.height <= 60 && img.width <= 120 )
       return;
   // Calcul du ration a appliquer, en utilisant la hauteur , par ex.
   // Pui application du ration a la largeur
   if( img.height <= 60 )
   {
       ratio = 60 / img.height;
       width = width * ratio;
   }
   else
   {
       ratio = img.height / 60;
       width = width / ratio;
   }
   // Si largeur est ok apres ratio, on met la hauteur au max, le ration sera conserve
   if( width <= 120 )
   {
       img.style.height = "60px";
   }
   // Si apres application du ratio, la largeur est toujours trop grand, alors c'est elle qu'on met au max.
   else
   {
       img.style.width = "120px";
   }
}

