application.action.functions = {
	/****
	 *	Singles Functions
	 ***/
	duplicateRecord: function(rowRank) {
		application.action.functions._duplicateRecordRow = rowRank;
		var row = application.result.rowList[rowRank];
		
		application.display.dialog.singleInputDialog("Saisir une URL",row.data.url.value,"application.action.functions._duplicateRecordValide");
	},
	_duplicateRecordRow: -1,
	_duplicateRecordValide: function(newValue) {
		var testUrl = application.isUrlUnique(newValue);
		
		if (("unique" == testUrl) || ("multi_otherUser" == testUrl)) {
			var rank = application.action.functions._duplicateRecordRow;
			var newRow = application.result.rowList[rank].clone(newValue);
			newRow.data.state.value=-1;
			application.result.rowList.splice(rank+1,0,newRow);
			application.action.functions._duplicateRecordRow = -1;
			
			application.action.actionEnded();
		}
	},
	
	deleteARecord: function(idToDelete) {
		var list = new Array();
		list.push(idToDelete);
		application.action.functions.deleteRecordList(list);
	},
	
	openARecordUrl: function (url) {
		window.open(url);
	},
	
	exportARecord: function(idToExport) {
		var list = new Array();
		list.push(idToExport);
		application.action.functions.exportRecordList(list);
	},
	
	testAnUrl: function(urlToTest, mId, adhId) {
		var urlList= new Array();
		urlList.push(urlToTest);
		var mIdList= new Array();
		mIdList.push(mId);
		var adhList= new Array();
		adhList.push(adhId);
		application.action.functions.testUrlList(urlList, mIdList, adhList);
	},
	
	openDetail: function(rowId) {
		window.open(application.baseUrl + '/detail.do?id=' + rowId);
	},
	
	openEditForm: function(rowRank) {
		application.display.table._formRank = rowRank;
		application.display.table.formRow = application.result.rowList[rowRank].clone(application.result.rowList[rowRank].data.url.value);
		application.display.table.formRow.data.id = application.result.rowList[rowRank].data.id;
		application.display._openForm("Editer une ressource");	
	},
		
	/****
	 *	Multiple Functions
	 ***/
	exportRecordList: function(idListToDelete) {
		var url = application.baseUrl + '/getMetadata?';
		
		for (var i=0; i<idListToDelete.length; i++) {
			if (i>0) {
				url += "&";
			}
			url += 'id=' + idListToDelete[i];
		}
		
		window.open(url);
	},
	
	testUrlList: function(urlListTotTest, mIdListToTest, adhIdListToTest) {
		var url = application.baseUrl + '/testUrl?';
		
		var params = {
			url: urlListTotTest,
			mId: mIdListToTest,
			adhId: adhIdListToTest
		};
		
		
		var resultList="";
		
		var result = $.ajax({
			url:url, 
			async: false,
			type: "POST",
			cache: false,
			data: $.param(params,true),
			error: function (request, status, error) {
				application.display.dialog.errorDialog(request.status);
		    },
		    success: function (resultat, text) {
				resultList = eval('('+resultat+')');
		    	
			}
			}).responseText;
		
		
		var resultText = application.display.template.testUrl_drawResult(resultList.length);
		
		application.display.displayResult();
		application.display.dialog.alertDialog("Test d'URL",resultText);
	},
	
	changeState: function(rankListToChange, newState) {
		for (var i=0; i<rankListToChange.length ; i++) {
			var rank = rankListToChange[i];
			
			var row = application.result.rowList[rank];
			row.data.state.value = newState;
			row.isEdited = true;
		}
		application.action.actionEnded();
	},
	
	_idListToDelete: [],
	deleteRecordList: function(idListToDelete) {
		application.action.functions._idListToDelete = idListToDelete;
		var title = "Suppression";
		var text = "&Ecirc;tes-vous s&ucirc;r de vouloir supprimer";
		if (idListToDelete.length > 1)
			text += " ces &eacute;l&eacute;ments ?";
		else
			text += " cet &eacute;l&eacute;ment ?";
			
		application.display.dialog.yesNoDialog(title, text, "", "application.action.functions._makeDelete()");
	},
	_makeDelete: function() {
		var idListToDelete = application.action.functions._idListToDelete;
		for (var i=0; i<idListToDelete.length; i++) {
			var idToDelete = idListToDelete[i];
			
			for (var r=0; r<application.result.rowList.length; r++) {
				var currentRow = application.result.rowList[r];
			
				if (currentRow.data.id == idToDelete) {
					application.result.rowList.splice(r,1);
					application.action.actionsToSave.push("[delete]" + idToDelete);
					break;
				}
			}
		}
		application.action.actionEnded();
	},
	
	_editFieldIdList: new Array(),
	editField_firstStep: function(idList) {
		var selectInfo = new Array();
		
		for (var i=0;i<application.display.table.columnList.length; i++) {
			var currentColumn = application.display.table.columnList[i];
			
			if (currentColumn.isGroupEditable) {
				var currentInfo = {
					value: currentColumn.id,
					label: currentColumn.label
				};
				selectInfo.push(currentInfo);
			}
		}
		
		application.display.dialog.singleSelectDialog("Editer un champ - Choisir :", "", "application.action.functions.editField_secondStep", selectInfo);
	},
	editFieldSelectedColumn: null,
	editField_secondStep: function(selectedField) {
		var column = null;
		for (var i=0;i<application.display.table.columnList.length; i++) {
			if (application.display.table.columnList[i].id == selectedField) {
				column = application.display.table.columnList[i];
				break;
			}
		}
		
		var popupTitle = "Editer un champ - Nouvelle valeur :";
		var defaultValue = '';
		var validateFunction = "application.action.functions.editField_lastStep";
		
		if (column) {
			application.action.functions.editFieldSelectedColumn = column;
		
			if (column.widget == application.widgetNames.SIMPLETEXT)
				application.display.dialog.singleInputDialog(popupTitle, defaultValue, validateFunction);
			else if (column.widget == application.widgetNames.MULTILINETEXT) {
				application.display.dialog.singleTextAreaDialog(popupTitle, defaultValue, validateFunction);
			}
			else if (column.widget == application.widgetNames.EXCLUSIVELEXIQUE) {
				var lexique = application.getLexique(column.lexiqueName);
				var values = new Array();
				for (var i=0; i<lexique.length; i++) {
					var current = {
						value: lexique[i].key,
						label: lexique[i].value
					}
					values.push(current);
				}
				
				application.display.dialog.singleSelectDialog(popupTitle, defaultValue, validateFunction, values);
			} else if (column.widget == application.widgetNames.LEXIQUE) {

				validateFunction = "application.action.functions.editMultipleField_lastStep";
				application.display.dialog.singleLexiqueDialog(popupTitle, defaultValue, validateFunction, column);
			}
			
			else if (column.widget == application.widgetNames.GEOG 
				|| column.widget == application.widgetNames.CONTACT
				|| column.widget == application.widgetNames.DATE
				|| column.widget == application.widgetNames.MULTIVALUEDSIMPLETEXT
				|| column.widget == application.widgetNames.TREE) {
				validateFunction = "application.action.functions.editMultipleField_lastStep";
				application.display.dialog.multiInputDialog(popupTitle, defaultValue, validateFunction,column);
			}
		}
	},
	editField_lastStep: function(newValue) {
		if(application.action.functions.editFieldSelectedColumn.canBeNull==true || (application.action.functions.editFieldSelectedColumn.canBeNull==false && $.trim(newValue).length>0 )){
		var val = [];
		val.push(newValue);
		for (var i=0; i<application.result.rowList.length; i++) {
			var current = application.result.rowList[i];
			
			if (current.isSelected) {
				current.setValue(application.action.functions.editFieldSelectedColumn.attributeName, val);
			}}
		}
		application.action.actionEnded();
	},
	
	editMultipleField_lastStep: function(newValue) {
		for (var i=0; i<application.result.rowList.length; i++) {
			var current = application.result.rowList[i];
			if (current.isSelected) {
//				application.display.table.setValue(current, columnId, value.value, value.type);
				current.setValue(application.action.functions.editFieldSelectedColumn.attributeName, newValue);
			}
		}
		application.action.actionEnded();
	}
	
	
};
