application.display.dialog = {
	alertDialog: function(title, text) {
		var divObj = document.getElementById(application.display.alertDivName);
		divObj.title = title;
		divObj.innerHTML = text;
	
	
		$("#" + application.display.alertDivName).dialog({
			modal:true,
			resizable:false,
			closeOnEscape:true,
			buttons: {
				
				"Ok": {
			        id: "validerButtonDialog",
			        text: "Ok",
					click: function() {
						$( this ).dialog( "close" );
						}}
			}
		});
	},
	
	errorDialog : function(request){
		
		$( "#dialogAlertAjaxContent" ).html("Erreur de contact avec le serveur.<br>Merci de vous d&eacute;connecter et d'essayer &agrave; nouveau.");
		
		$( "#dialogAlertAjax" ).dialog({
			modal: true,
			resizable:false,
			closeOnEscape:true,
			title:"Erreur lors de l'ex&eacutecution du programme",
			buttons: {
				
				"Ok": {
			        id: "validerButtonDialog",
			        text: "Ok",
					click: function() {
						$( this ).dialog( "close" );
						}}
			}

		});
		},

	yesNoDialog: function(title, text, cancelFunction, validateFunction){
		var divObj = document.getElementById("yesNoDialog");
		divObj.title = title;
		divObj.innerHTML = text;
		
		$("#yesNoDialog").dialog({
			modal:true,
			resizable:false,
			closeOnEscape:true,
			buttons: {
				
				"Oui": {
			        id: "validerButtonDialog",
			        text: "Oui",
					click: function() {
						$( this ).dialog( "close" );
						eval(validateFunction);
				}},
				"Non": {
					id: "annulerButtonDialog",
					text: "Non",
					click:function() {
						$( this ).dialog( "close" );
						eval(cancelFunction);}
					}
			}
		});
		
	},

	singleInputDialog: function(title, defaultValue, validateFunction) {
		application.display.dialog._singleValueDialog(title,defaultValue, validateFunction, "input");
	},
	
	singleTextAreaDialog: function(title, defaultValue, validateFunction) {
		application.display.dialog._singleValueDialog(title,defaultValue, validateFunction, "textarea");
	},
	
	singleSelectDialog: function(title, defaultValue, validateFunction, values) {
		var html = ""
		for (var i=0; i<values.length; i++) {
			html += "<option value='" + values[i].value + "'>" + values[i].label + "</option>";
		}
	
		$("#" + application.display.singleInputDivName + "_select_value").html(html);
		application.display.dialog._singleValueDialog(title,defaultValue, validateFunction, "select");
	},
	
	singleLexiqueDialog: function(title, defaultValue, validateFunction, column) {
		application.display.dialog._multiValueDialog(title,defaultValue, validateFunction, column);
	},
	
	multiInputDialog: function(title, defaultValue, validateFunction, column) {
		application.display.dialog._multiValueDialog(title,defaultValue, validateFunction, column);
	},
	
	_singleValueDialog: function(title, defaultValue, validateFunction, inputType) {

		if (inputType != "div")
			$("#" + application.display.singleInputDivName + "_" + inputType + "_value").val(defaultValue);
		$("#" + application.display.singleInputDivName + "_" + inputType + "_value").css("display","block");
		
		$("#" + application.display.singleInputDivName).dialog({
			title:title,
			modal:true,
			resizable:false,
			closeOnEscape:true,
			buttons: {
				
				"Valider": {
			        id: "validerButtonDialog",
			        text: "Valider",
					click: function() {
						$("#" + application.display.singleInputDivName + "_" + inputType + "_value").css("display","none");
						$( this ).dialog( "close" );
						var newValue = application.display.dialog._getSingleValue(inputType);
						eval(validateFunction + "('" + newValue.replace(/\'/g,"\\'") + "')");
					}
				},
				"Annuler": {
					id: "annulerButtonDialog",
					text: "Annuler",
					click:function() {
						$("#" + application.display.singleInputDivName + "_" + inputType + "_value").css("display","none");
						$( this ).dialog( "close" );
					}
				}
			}
		});
	},
	
	_multiValueDialog: function(title, defaultValue, validateFunction, column) {
		
	
		var result="";
		
		if(column.widget == application.widgetNames.GEOG || column.widget == application.widgetNames.TREE ){
			

			result += "<div class='treeEditorCriteria' id='widgetTreeEditor'><ul>";
			
			if(column.widget == application.widgetNames.GEOG){
				var placeTree = application.getPlaceTree();
				var values =[];
				result+= application.display.template.widget_drawPlaceTreeEditorTemplate(values, placeTree);}
			
			if(column.widget == application.widgetNames.TREE){
				var themeTree = application.getThemeTree();
				var values =[];
				result+= application.display.template.widget_drawThemeTreeEditorTemplate(values, themeTree);}
			
			$("#multiInput_div_value").html(result);
			$("#widgetTreeEditor").jstree({"plugins" : ["html_data","ui","checkbox"]});

		}
		
		if(column.widget == application.widgetNames.LEXIQUE){
			
			var lexique=application.getLexique(column.lexiqueName);
			
			var values = new Array();
			for (var i=0; i<lexique.length; i++) {
				var current = {
					key: lexique[i].key,
					value: lexique[i].value
				}
				values.push(current);
			}
			result += application.display.template.widget_drawLexiqueEditor(defaultValue,values);
			$("#multiInput_div_value").html(result);
		}
		
		if(column.widget == application.widgetNames.CONTACT){
			
			var lexique=application.getLexique(column.lexiqueName);
			
			var values = new Array();
			for (var i=0; i<lexique.length; i++) {
				var current = {
					key: lexique[i].key,
					value: lexique[i].value
				}
				values.push(current);
			}
			var d = {value:"",lexiqueKey:""};
			result += application.display.template.widget_drawContactEditor(d,values);
			$("#multiInput_div_value").html(result);
		}
		
		if(column.widget == application.widgetNames.DATE){
			var date ={value:new Date()};
			var lexique=application.getLexique(column.lexiqueName);
			var values = new Array();
			for (var i=0; i<lexique.length; i++) {
				var current = {
					key: lexique[i].key,
					value: lexique[i].value
				}
				values.push(current);
			}
			
			result += application.display.template.widget_drawDateEditor(date,values);		
			
			$("#dateEditor").datepicker( $.datepicker.regional[ "fr" ] );
			$("#dateEditor").datepicker("setDate", date.value);
			
			$("#multiInput_div_value").html(result);
		}
		
		if(column.widget == application.widgetNames.MULTIVALUEDSIMPLETEXT){
			
			var values =[];
			
			result += application.display.template.widget_drawMultiValuedSimpleTextEditor(values);		
			
			$("#multiInput_div_value").html(result);
	
		}
		
		$("#multiInput_div_value").css("display","block");
		
		if(column.widget == application.widgetNames.DATE){
		$("#dateEditor").datepicker( $.datepicker.regional[ "fr" ] );
		$("#dateEditor").datepicker("setDate", date.value);}
		

		
		$("#multiInput_div_value").dialog({
			title:title,
			modal:true,
			resizable:false,
			closeOnEscape:true,
			buttons: {
				
				"Valider": {
			        id: "validerButtonDialog",
			        text: "Valider",
					click: function() {
						$("#multiInput_div_value").css("display","none");
						$( this ).dialog( "close" );
						var newValue=application.display.dialog._getMultipleValue(column);
						application.action.functions.editMultipleField_lastStep(newValue);
					}
				},
				"Annuler": {
					id: "annulerButtonDialog",
					text: "Annuler",
					click:function() {
						$("#multiInput_div_value").css("display","none");
						$( this ).dialog( "close" );
					}
				}
			}
		});
		
	},
	
	_getSingleValue: function(inputType) {
		if (inputType != "div") {
			return $("#" + application.display.singleInputDivName + "_" + inputType + "_value").val();
		} 
	},
	
	_getMultipleValue: function(column) {
			var values = [];
			
			if(column == application.widgetNames.GEOG  || column == application.widgetNames.TREE ){
				
				var selectedNodes = $.jstree._reference("#widgetTreeEditor").get_checked(null,true);
				
				if(column == application.widgetNames.GEOG){
					for (var i=0; i<selectedNodes.length; i++) {
						var key = selectedNodes[i].id;
						values.push(key);}
					}
				
				if(column == application.widgetNames.TREE){
					for (var i=0; i<selectedNodes.length; i++) {
						var key = selectedNodes[i].id;
						var value = application.getThemePath(key);
						values.push(value);}
					}}
				
				if(column.widget == application.widgetNames.LEXIQUE){
					//lexique
					if (document.getElementById("editorValue_0")) {
						var keys = [];
						var i=0;
				
						while (document.getElementById('editorValue_' + i)) {
							if (document.getElementById('editorValue_' + i).checked)
								keys.push(document.getElementById('editorValue_' + i).value);
							i++;
						}
				
						var column = application.action.functions.editFieldSelectedColumn;
						for (i=0; i<keys.length; i++) {
							var lexiqueEntry = application.getLexiqueItemFromKey(column.lexiqueName, keys[i]);
							values.push(lexiqueEntry.value);
						}
					}
					}
				
				if(column.widget == application.widgetNames.CONTACT){
					var value;
					if ($("#editorType").val() == 'author') {
						application.action.functions.editFieldSelectedColumn.attributeName='owner';
						
					} else if ($("#editorType").val() == 'productor') {
						application.action.functions.editFieldSelectedColumn.attributeName='originator';
						
					} else if ($("#editorType").val() == 'publisher') {
						application.action.functions.editFieldSelectedColumn.attributeName='publisher';
						
					} else if ($("#editorType").val() == 'contrib') {
						application.action.functions.editFieldSelectedColumn.attributeName='contributor';
						
					}  else if ($("#editorType").val() == 'contact') {
						application.action.functions.editFieldSelectedColumn.attributeName='contact';
						
					}  else if ($("#editorType").val() == 'pointOfContact') {
						application.action.functions.editFieldSelectedColumn.attributeName='pointOfContact';
						
					}
						value=$("#editorValue").val();
						values.push(value);
					}
				
				if(column.widget == application.widgetNames.DATE){
						var value;
						application.action.functions.editFieldSelectedColumn.attributeName=$("#dateTypeEditor").val()+"Date";
						value=$("#dateEditor").datepicker("getDate");
						values=value;
					}
				
				if(column.widget == application.widgetNames.MULTIVALUEDSIMPLETEXT){

					var i=0;
			
					while (document.getElementById('editorValue_' + i)) {
						if(jQuery.trim(document.getElementById('editorValue_' + i).value).length>0){
							values.push(document.getElementById('editorValue_' + i).value);
							}
						i++;
					}
				}
			
			
			return values;
		}
	
};
