application.action = {
	individualActions: 
		[
			{
				name: '&Eacute;diter',
				action: 'openEditForm(%rowRank%)',
				isShowWhenNotEditable: false,
				isShowWhenIsNew: true
			},

			{
				name: 'Dupliquer',
				action: 'duplicateRecord(%rowRank%)',
				isShowWhenNotEditable: true,
				isShowWhenIsNew: true
			},
			{
				name: 'Supprimer',
				action: 'deleteARecord(%rowId%)',
				isShowWhenNotEditable: false,
				isShowWhenIsNew: true
			},
			{
				name: 'Acc&eacute;der &agrave; la ressource',
				action: 'openARecordUrl(%rowUrl%)',
				isShowWhenNotEditable: true,
				isShowWhenIsNew: true
			},
			{
				name: 'Consulter la fiche',
				action: 'openDetail(%rowId%)',
				isShowWhenNotEditable: true,
				isShowWhenIsNew: false
			},
			{
				name: 'Tester l\'URL',
				action: 'testAnUrl(%rowUrl%,%rowId%,%adhId%)',
				isShowWhenNotEditable: true,
				isShowWhenIsNew: false
			},
			{
				name: 'Exporter',
				action: 'exportARecord(%rowId%)',
				isShowWhenNotEditable: true,
				isShowWhenIsNew: false
			}
		],
		
	groupActions:
		[
			{
				name: 'Passer en &eacute;tat publi&eacute;',
				action: 'changeState(%rankList%,1)',
				isShowWhenNotEditable: true
			},
			{
				name: 'Passer en &eacute;tat masqu&eacute;',
				action: 'changeState(%rankList%,0)',
				isShowWhenNotEditable: true
			},
			{
				name: 'Passer en &eacute;tat brouillon',
				action: 'changeState(%rankList%,-1)',
				isShowWhenNotEditable: true
			},
			{
				name: '&Eacute;diter un champ',
				action: 'editField_firstStep(%idList%)',
				isShowWhenNotEditable: false
			},
			{
				name: 'Exporter',
				action: 'exportRecordList(%idList%)',
				isShowWhenNotEditable: true
			},
			{
				name: 'Tester l\'URL',
				action: 'testUrlList(%urlList%,%idList%,%adhIdList%)',
				isShowWhenNotEditable: true
			},
			{
				name: 'Supprimer',
				action: 'deleteRecordList(%idList%)',
				isShowWhenNotEditable: false
			}
		],
	
	actionsToSave: [],
	
	groupActionSelected: null,
	
	manageIndividualAction: function(event, options) {
		var currentAction = application.action.individualActions[options.index];
		
		var selectId = options.option.parentNode.id;
		var currentRowId = selectId.split("_")[1];
		var currentRow = application.result.rowList[currentRowId];
		
		var actionFunction = currentAction.action;
		
		actionFunction = actionFunction.replace("%rowRank%", currentRowId);
		actionFunction = actionFunction.replace("%rowId%", currentRow.data.id);
		actionFunction = actionFunction.replace("%rowUrl%", "'" + currentRow.data.url.value + "'");
		actionFunction = actionFunction.replace("%adhId%", currentRow.data.adhId);
		
		actionFunction = "application.action.functions." + actionFunction;
		
		eval(actionFunction);
	},
	
	manageGroupAction: function(event, options) {
		if (options.index == 0) {
			application.action.groupActionSelected = null;
		} else {
			var action = application.action.groupActions[options.index-1];
			application.action.groupActionSelected = action
		}
	},
	
	launchGroupAction: function() {
		if (application.action.groupActionSelected) {
			var rankList = new Array();
			var urlList = new Array();
			var mIdList = new Array();
			var adhIdList = new Array();
			var hasOneItemSelected = false;
			
			for (var i=0;i< application.result.rowList.length; i++) {
				var currentRow = application.result.rowList[i];
				if (currentRow.isSelected) {
					hasOneItemSelected = true;
					rankList.push(i);
					urlList.push(currentRow.data.url.value);
					mIdList.push(currentRow.data.id);
					adhIdList.push(currentRow.data.adhId);
				}
			}
			
			if (!hasOneItemSelected) {
				application.display.dialog.alertDialog("information manquante","Vous devez s&eacute;lectionner au moins une donn&eacute;e");
			} else {
				var actionFunction = application.action.groupActionSelected.action;
				
				actionFunction = actionFunction.replace("%rankList%", application.serializeArray(rankList));
				actionFunction = actionFunction.replace("%urlList%", application.serializeArray(urlList));
				actionFunction = actionFunction.replace("%idList%", application.serializeArray(mIdList));
				actionFunction = actionFunction.replace("%adhIdList%", application.serializeArray(adhIdList));
				
				actionFunction = "application.action.functions." + actionFunction;
				eval(actionFunction);
			}
			
			$("select#actionSelect").selectmenu("index", 0);
		}
	},
	
	actionEnded: function() {
		application.result.isModified = true;

		for (var i=0; i<application.result.rowList.length; i++) {
			application.result.rowList[i].isSelected = false;
		}

		application.display.displayResult();
	},
	
	valideEditBox: function(rowId, columnId) {
		var column = application.display.table.columnList[columnId]
		var widget = new application.Widget(column.widget, columnId);
	
		var value = widget.getValue(rowId);
		
		var toContinue = false;
		
		//test URL unicity
		if (column.attributeName == 'url') {
			var url = value.value;
			if (url.indexOf("http://")) {
				url = "http://" + url;
				value.value = url
			}
			var testUrl = application.isUrlUnique(value.value);
			toContinue = ("unique" == testUrl) || ("multi_otherUser" == testUrl);
		} else {
			toContinue = true;
		}
		
		//test imageForm
		var imageForm = document.forms["thumbForm"];
		if (imageForm) {
			imageForm.submit();
			application.display.hideEditBox();
			toContinue = false;
			
			application.display.dialog.alertDialog("imagette", "Imagette mise à jour.");
		}
		
		if (toContinue) {
			application.display.hideEditBox();
			if (rowId >=-1) {
			
				application.display.table.setValue(rowId, columnId, value.value, value.type);
					
				if (rowId > -1)
					application.display.displayResult();
				else
					application.display.refreshForm();
			} else if (rowId == -2) {
				if (column.widget == application.widgetNames.DATE)
					application.defaultValues.setDate(value.value, value.type);
				else if (column.widget == application.widgetNames.CONTACT)
					application.defaultValues.setContact(value.value, value.type);
				else {
					if (column.attributeName == "geographie" && value && value.length == 1 && value[0] == 'no_geog') {
						application.defaultValues.setValue("otherplaceNames",["no Geography"]);
					}
					application.defaultValues.setValue(column.attributeName,value.value);
				}
				application.display.refreshDefaultValues();
			}
		}
	},
	
	valideForm: function() {
		//mandatory values
		//title - url - date - geog - organisme
		var missField = [];
		if (jQuery.trim(application.display.table.formRow.data.title.value).length == 0)
			missField.push("Titre");
		if (jQuery.trim(application.display.table.formRow.data.url.value).length == 0)
			missField.push("Url");
		if (!application.display.table.formRow.data.creationDate.value
				&& !application.display.table.formRow.data.revisionDate.value
				&& !application.display.table.formRow.data.publicationDate.value)
			missField.push("Date");
		if (application.display.table.formRow.data.geographie.values.length == 0)
			missField.push("G&eacute;ographie");
		if (!application.display.table.formRow.data.owner.value
				&& !application.display.table.formRow.data.originator.value
				&& !application.display.table.formRow.data.publisher.value
				&& !application.display.table.formRow.data.contributor.value
				&& !application.display.table.formRow.data.pointOfContact.value
				&& !application.display.table.formRow.data.contact.value)
			missField.push("Organisme auteur");
		
		if (missField.length > 0) {
			var title = "Champs obligatoires";
			var content =" Les champs suivants doivent &ecirc;tre saisis :<br>";
			
			for (var i=0; i<missField.length; i++) {
				content += "<b>" + missField[i] + "</b><br>";
			}
			
			application.display.dialog.alertDialog(title, content);
		} else {
			//set the row in the table
			if (application.display.table._formRank == -1) {
				application.display.table.formRow.data.state.value=-1;
				application.result.rowList.splice(0,0,application.display.table.formRow.clone(application.display.table.formRow.data.url.value));
			} else {
				application.result.rowList[application.display.table._formRank] = application.display.table.formRow.clone(application.display.table.formRow.data.url.value);
				application.result.rowList[application.display.table._formRank].data.id = application.display.table.formRow.data.id;
			}
			application.display.table._formRank = -1;
			application.display.table.formRow = new application.result.Row();
		
		
			application.display.displayResult();
			application.display.hideForm();
		}
	},
	
	valideImport: function() {
		if ($("#fileInput").val()) {
			$("#Attente").show();
			document.getElementById("importForm").submit();
			$("#Attente").hide();			
		} else {
			application.display.dialog.alertDialog("Erreur d'import", "Vous devez d'abord s&eacute;lectionner un fichier");
		}
	},
	
	valideCharte: function() {
		var infos = {
				adhId: $("#idAdh").val(),
				charteLue:"true",
				charteSignee:"false"
				}
		var result = $.ajax({
			url: application.baseUrl + '/updateProfileCharte',
			async: false,
			type: "POST",
			cache: false,
			data: infos,
			error: function (request, status, error) {
				application.display.dialog.alertDialog("Erreur","Impossible de modifier le profil.<br>Merci d'essayer plus tard.");
		    },
		    success: function (result, text) {
				application.display.hideCharte();
			}
			}).responseText;
	},
	
	valideProfile: function() {
		var infos = {
			adhType: $("#adhType").val(),
			adhLogin: $("#adhLogin").val(),
			adhPwd: $("#adhPwd").val(),
			adhName: $("#adhName").val(),
			adhCP: $("#adhCP").val(),
			adhVille: $("#adhVille").val(),
			adhTel: $("#adhTel").val(),
			adhWeb: $("#adhWeb").val(),
			adhContactCiv: $("#adhContactCiv").val(),
			adhContactName: $("#adhContactName").val(),
			adhContactForname: $("#adhContactForname").val(),
			adhContactMail: $("#adhContactMail").val(),
			adhContactTel: $("#adhContactTel").val()
		}
		
		if (infos.adhType.length == 0 
			|| infos.adhLogin.length == 0
			|| infos.adhPwd.length == 0
			|| infos.adhName.length == 0
			|| infos.adhCP.length == 0
			|| infos.adhVille.length == 0
			|| infos.adhContactCiv.length == 0
			|| infos.adhContactName.length == 0
			|| infos.adhContactForname.length == 0
			|| infos.adhContactMail.length == 0
			|| infos.adhContactTel.length == 0) {
			application.display.dialog.alertDialog("Erreur","Tous les champs obligatoires ne sont pas remplis.<br>Merci de vérifier.");
		}
		else {
			$.ajax({
				url: application.baseUrl + '/updateProfile',
				async: false,
				type: "POST",
				cache: false,
				data: infos,
				error: function (request, status, error) {
					application.display.dialog.alertDialog("Erreur","Impossible de modifier le profil.<br>Merci d'essayer plus tard.");
			    },
			    success: function (result, text) {
					application.display.hideProfile();
				}
			});
			
		}
		
		},
	
	valideDefaultValues: function() {
		//update table
		for (var i=0; i<application.result.rowList.length; i++) {
			application.search.appendDefaultValues(application.result.rowList[i]);
		}
		application.display.displayResult();
		
		//send to the server the new values
		$.ajax({
			url: application.baseUrl + '/updateDefaultValues',
			async: true,
			type: "POST",
			cache: false,
			data: {defaultValues: application.defaultValues.serialize()},
			error: function (request, status, error) {
				application.display.dialog.errorDialog(request.status);
		    }
		});
		application.display.hideDefaultValues();
	},
	
	valideMapping: function() {
		application.display.hideDialogs();
		var mappingEntries = [];
		var i=0;
		while (document.getElementById('mapping_kw_' + i)) {
			var keyWord = document.getElementById('mapping_kw_' + i).value;
			var theme = document.getElementById('mapping_th_' + i).value;
			
			if (keyWord.length > 0 && theme.length > 0) {
				var entry = {keyword: keyWord, theme: theme};
				mappingEntries.push(entry);
			}
			
			i++;
		}
		
		application.mapping.mappingEntries = mappingEntries.slice(0);

		//send to the server the new values
		$.ajax({
			url: application.baseUrl + '/updateMapping',
			async: true,
			type: "POST",
			cache: false,
			data: {newMapping: application.mapping.serialize()},
			error: function (request, status, error) {
			application.display.dialog.errorDialog(request.status);
			}
			});
			
		application.display.hideMapping();
	}
};
