application.display.table = {
	columnList: [
		{	attributeName: 'id',
			id:'TabIDBase',
			label: 'id Base',
			isVisible: true,
			isInForm: false,
			isInRequestor: false,
			isAdmin: true,
			isGroupEditable: false,
			canBeNull: false,
			width: 50,
			widget: application.widgetNames.SIMPLETEXT,
			lexiqueName: null,
			hasDefaultValue: false,
			isNotEditable: true,
			minEditWidth: 100,
			infoBulle:"Identifiant de la ressource dans un autre r&eacute;f&eacute;rentiel de ressources (non modifiable)"
		},
		{	attributeName: 'state',
			id:'BtEtat',
			label: 'Etat',
			isVisible: true,
			isInForm: false,
			isInRequestor: false,
			searchPattern: "corporate/tree:\"Top/PortailEnv/Visible/%val%\"",
			searchFields: ["visible"],
			isAdmin: false,
			isGroupEditable: false,
			canBeNull: false,
			width: 25,
			widget: application.widgetNames.STATE,
			lexiqueName: null,
			hasDefaultValue: false,
			minEditWidth: 100,
			infoBulle:"Change l'&eacute;tat de la ressource d&eacute;sign&eacute;e - 3 &eacute;tats possibles : brouillon, masqu&eacute;, publi&eacute; "
		},
		{	attributeName: 'title',
			id:'TabTitre',
			label: 'Titre',
			isVisible: true,
			isInForm: true,
			isInRequestor: true,
			searchPattern: 'title:(%val%)',
			searchFields: ["title"],
			isAdmin: false,
			isGroupEditable: true,
			canBeNull: false,
			width: 200,
			widget: application.widgetNames.SIMPLETEXT,
			lexiqueName: null,
			hasDefaultValue: false,
			minEditWidth: 300,
			infoBulle:"Titre couramment utilis&eacute; de la ressource"
		},
		{	attributeName: 'alternateTitle',
			id:'TabTitrealter',
			label: 'Titre alternatif',
			isVisible: false,
			isInForm: true,
			isInRequestor: true,
			searchFields: ["alternateTitle"],
			isAdmin: false,
			isGroupEditable: true,
			canBeNull: true,
			width: 200,
			widget: application.widgetNames.SIMPLETEXT,
			lexiqueName: null,
			hasDefaultValue: false,
			minEditWidth: 300,
			infoBulle:"S'il existe un autre titre sous lequel la ressource est connue"
		},
		{	attributeName: 'adhName',
			id:'TabAdherent',
			label: 'Adh&eacute;rent',
			isVisible: false,
			isInForm: false,
			isInRequestor: true,
			searchPattern: 'adh_id:(%val%)',
			searchFields: ["adhName"],
			isAdmin: true,
			isGroupEditable: false,
			canBeNull: true,
			width: 300,
			widget: application.widgetNames.EXCLUSIVELEXIQUE,
			lexiqueName: 'adh_id',
			hasDefaultValue: false,
			isNotEditable: true,
			minEditWidth: 100,
			infoBulle:"Indique le libell&eacute; de l'adh&eacute;rent auteur de la notice (non modifiable)"
		},
		{	attributeName: 'url',
			id:'TabAdresseURL',
			label: 'Lien',
			isVisible: true,
			isInForm: true,
			isInRequestor: false,
			searchPattern: 'url:(%val%)',
			searchFields: ["url"],
			isAdmin: false,
			isGroupEditable: false,
			canBeNull: false,
			width: 150,
			widget: application.widgetNames.SIMPLETEXT,
			lexiqueName: null,
			hasDefaultValue: false,
			minEditWidth: 300,
			infoBulle:"Adresse URL de la ressource d&eacute;crite"
		},
		{	attributeName: 'thumbnailUrl',
			id:'TabVignette',
			label: 'Imagette',
			isVisible: true,
			isInForm: false,
			isInRequestor: false,
			isAdmin: false,
			isGroupEditable: false,
			canBeNull: true,
			width: 50,
			widget: application.widgetNames.IMAGE,
			lexiqueName: null,
			hasDefaultValue: false,
			minEditWidth: 100,
			infoBulle:"Vignette donnant un aper&ccedil;u"
		},
		{	attributeName: 'oaiId',
			id:'TabIdentifiant',
			label: 'Identifiant',
			isVisible: true,
			isInForm: true,
			isInRequestor: true,
			canBeNull: true,
			searchPattern: 'oai_id:(%val%)',
			searchFields: ["oaiId"],
			isAdmin: false,
			isGroupEditable: true,
			width: 70,
			widget: application.widgetNames.SIMPLETEXT,
			lexiqueName: null,
			minEditWidth: 100,
			infoBulle:"Identifiant unique de la ressource"
		},
		{	attributeName: 'description',
			id:'TabDescription',
			label: 'Description',
			isVisible: true,
			isInForm: true,
			isInRequestor: true,
			canBeNull: true,
			searchPattern: 'description:(%val%)',
			searchFields: ["description"],
			isAdmin: false,
			isGroupEditable: true,
			width: 200,
			widget: application.widgetNames.MULTILINETEXT,
			lexiqueName: null,
			hasDefaultValue: false,
			minEditWidth: 400,
			infoBulle:"Description r&eacute;sum&eacute;e de la ressource"
		},
		{	attributeName: 'groupAttribute',
			id:'TabDate',
			groupAttributeFunction: 'getDate',
			label: 'Date',
			isVisible: true,
			isInForm: true,
			isInRequestor: false,
			isAdmin: false,
			isGroupEditable: true,
			canBeNull: true,
			width: 100,
			widget: application.widgetNames.DATE,
			lexiqueName: 'CI_DateTypeCode',
			hasDefaultValue: false,
			minEditWidth: 100,
			infoBulle:"Date de r&eacute;f&eacute;rence de la ressource"
		},
		{	attributeName: 'geographie',
			id:'TabExtensionGeo',
			label: 'G&eacute;ographie',
			isVisible: true,
			isInForm: true,
			isInRequestor: true,
			searchPattern: "corporate/tree:\"Top/PortailEnv/Place/%val%\"",
			searchFields: ["placeCodes"],
			isAdmin: false,
			isGroupEditable: true,
			canBeNull: true,
			width: 100,
			widget: application.widgetNames.GEOG,
			lexiqueName: null,
			hasDefaultValue: true,
			minEditWidth: 400,
			infoBulle:"Lieu(x) concern&eacute;(s) par la ressource"
		},
		{	attributeName: 'codeCommune',
			id:'TabCommune',
			label: 'Commune',
			isVisible: true,
			isInForm: false,
			isInRequestor: false,
			isAdmin: false,
			isGroupEditable: false,
			canBeNull: true,
			width: 100,
			widget: application.widgetNames.COMMUNE,
			lexiqueName: null,
			hasDefaultValue: true,
			minEditWidth: 400,
			infoBulle:"Commune concern&eacute;e par la ressource"
		},
		{	attributeName: 'lang',
			id:'TabLangue',
			label: 'Langue',
			isVisible: true,
			isInForm: true,
			isInRequestor: true,
			canBeNull: true,
			searchPattern: "corporate/tree:\"Top/PortailEnv/Language/%val%\"",
			searchFields: ["lang"],
			searchByLabel: false,
			isAdmin: false,
			isGroupEditable: true,
			width: 50,
			widget: application.widgetNames.EXCLUSIVELEXIQUE,
			lexiqueName: 'LanguageCode',
			hasDefaultValue: true,
			minEditWidth: 100,
			infoBulle:"Langue de la ressource"
		},
		{	attributeName: 'keywords',
			id:'TabMotscles',
			label: 'Mots-cl&eacute;s',
			isVisible: true,
			isInForm: true,
			isInRequestor: false,
			isAdmin: false,
			isGroupEditable: true,
			canBeNull: true,
			width: 100,
			widget: application.widgetNames.MULTIVALUEDSIMPLETEXT,
			lexiqueName: null,
			hasDefaultValue: false,
			minEditWidth: 200,
			infoBulle:"Mots-cl&eacute;s descriptifs de la ressource"
		},
		{	attributeName: 'themes',
			id:'TabThemes',
			label: 'Th&egrave;mes',
			isVisible: true,
			isInForm: true,
			isInRequestor: true,
			searchPattern: "corporate/tree:\"Top/PortailEnv/%val%\"",
			searchFields: ["theme1","theme2","theme3"],
			isAdmin: false,
			isGroupEditable: true,
			canBeNull: true,
			width: 100,
			widget: application.widgetNames.TREE,
			lexiqueName: null,
			hasDefaultValue: true,
			minEditWidth: 400,
			infoBulle:"Th&eacute;matiques du portail trait&eacute;es par la ressource"
		},
		{	attributeName: 'nature',
			id:'TabNature',
			label: 'Nature',
			isVisible: true,
			isInForm: true,
			isInRequestor: true,
			canBeNull: true,
			searchPattern: "corporate/tree:\"Top/PortailEnv/DocumentNature/%val%\"",
			searchFields: ["nature"],
			searchByLabel: true,
			isAdmin: false,
			isGroupEditable: true,
			width: 100,
			widget: application.widgetNames.LEXIQUE,
			lexiqueName: 'DocType',
			hasDefaultValue: true,
			minEditWidth: 100,
			infoBulle:"Nature de la ressource d&eacute;crite"
		},
		{	attributeName: 'niveauLecture',
			id:'TabNivlect',
			label: 'Niveau de lecture',
			isVisible: true,
			isInForm: true,
			isInRequestor: true,
			canBeNull: true,
			searchPattern: "corporate/tree:\"Top/PortailEnv/Audience/%val%\"",
			searchFields: ["niveauLecture"],
			isAdmin: false,
			isGroupEditable: true,
			width: 100,
			widget: application.widgetNames.LEXIQUE,
			lexiqueName: 'readLevel',
			hasDefaultValue: true,
			minEditWidth: 100,
			infoBulle:"Niveau de lecture -public concern&eacute;- pour la ressource d&eacute;crite"
		},
		{	attributeName: 'rights',
			id:'TabDroits',
			label: 'Droits d\'acc&egrave;s',
			isVisible: true,
			isInForm: true,
			canBeNull: true,
			isInRequestor: true,
			searchPattern: 'rights:(%val%)',
			searchFields: ["rights"],
			isAdmin: false,
			isGroupEditable: true,
			width: 100,
			widget: application.widgetNames.SIMPLETEXT,
			lexiqueName: null,
			hasDefaultValue: true,
			minEditWidth: 300,
			infoBulle:"Droits associ&eacute;s &agrave; la ressource d&eacute;crite"
		},
		{	attributeName: 'groupAttribute',
			id:'TabAuteur',
			groupAttributeFunction: 'getContact',
			label: 'Organisme auteur',
			isVisible: true,
			isInForm: true,
			isInRequestor: false,
			isAdmin: false,
			isGroupEditable: true,
			canBeNull: true,
			width: 120,
			widget: application.widgetNames.CONTACT,
			lexiqueName: 'CI_RoleCode',
			hasDefaultValue: true,
			minEditWidth: 200,
			infoBulle:"Point de contact sur la ressource d&eacute;crite"
		},
		{	attributeName: 'portail',
			id:'TabPortail',
			label: 'Portail',
			isVisible: false,
			isInForm: false,
			isInRequestor: true,
			canBeNull: true,
			searchPattern: 'portail_name:(%val%)',
			searchFields: ["portailName"],
			isAdmin: false,
			isGroupEditable: true,
			width: 50,
			widget: application.widgetNames.SIMPLETEXT,
			lexiqueName: null,
			hasDefaultValue: true,
			minEditWidth: 300,
			infoBulle:"Si la ressource provient d'un portail, indique les r&eacute;f&eacute;rences du portail d'origine"
		},
		{	attributeName: 'isUrlValide',
			id:'TabURLValide',
			label: 'Url valide ?',
			isVisible: true,
			isInForm: false,
			isInRequestor: false,
			searchPattern: "corporate/tree:\"Top/PortailEnv/UrlValide/%val%\"",
			searchFields: ["isUrlValide"],
			isAdmin: false,
			isGroupEditable: false,
			canBeNull: true,
			width: 80,
			widget: application.widgetNames.URLVALIDE,
			lexiqueName: null,
			hasDefaultValue: false,
			isNotEditable: true,
			minEditWidth: 100,
			infoBulle:"Le visuel indique si l'URL de la ressource est valide (vert) ou non (rouge)"
		}
	],
	
	_formRank: -1,
	formRow: new application.result.Row(),
		
	displayToolsTable: function() {
		var headerResult = application.display.template.table_drawToolsLabel();
		$("#toolsHeaderColumns").html(headerResult);
	
		var tableResult = application.display.template.table_drawToolsTable();
		$("#toolsColumns").html(tableResult);
	},
	
	displayFixedTable: function() {
		var columnList = [1,2];
	
		var headerResult = application.display.template.table_drawTableLabels(columnList);
		$("#fixedHeaderColumns").html(headerResult);
		
		var tableResult = application.display.template.table_drawTable(columnList);
		$("#fixedColumns").html(tableResult);
		
		this.cleanTextField("fixedColumns");
	},
	
	displayScrollableTable: function() {
		var columnList = application.display.table.getScrollableColumnList();
		
		var headerResult = application.display.template.table_drawTableLabels(columnList);
		$("#scrollHeaderColumns").html(headerResult);
		
		var tableResult = application.display.template.table_drawTable(columnList);
		$("#scrollColumns").html(tableResult);

		this.cleanTextField("scrollColumns");
	},
	
	cleanTextField: function(arrayId) {
		var fields = application.display.table.getFieldsToClean();
		
		for (var i=0; i<fields.length; i++) {
			$("#" + arrayId + " td div." + fields[i] + " div.value").each(function() {
				$(this).text($(this).html());
			});		
		}
		
	},
	
	getFieldsToClean: function() {
		var result = [];
		
		for (var i=0; i<application.display.table.columnList.length; i++) {
			var column = application.display.table.columnList[i];
			if (column.widget == application.widgetNames.SIMPLETEXT
					|| column.widget == application.widgetNames.MULTILINETEXT
					|| column.widget == application.widgetNames.MULTIVALUEDSIMPLETEXT) {
				result.push(column.attributeName);
			}
					
		}
		
		return result;
	},
	
	getScrollableColumnList: function() {
		var columnList = new Array();
		
		for (var i=0; i<application.display.table.columnList.length; i++) {
			var column = application.display.table.columnList[i];
			var isToDisplay = (application.isAdmin || (!application.isAdmin && !column.isAdmin)) && column.isVisible;
			if (i!=1 && i!=2 && isToDisplay)
				columnList.push(i);
		}
		
		return columnList;
	},
	
	columnChanged: function(event, options) {
		var id = options.value;

		for (var i=0; i<application.display.table.columnList.length; i++) {
			var column = application.display.table.columnList[i];
			
			if (column.id == id) {
				column.isVisible = !column.isVisible;
				break;
			}
		}
		
		application.select.updateColumSelect();
		application.display.displayTables();
	},
	
	getValue: function(rowRank, columnRank) {
		var row = application.getRow(rowRank);
		
		var column = application.display.table.columnList[columnRank];
		var value = "&nbsp;";
		if (row) {
			if (column.widget == application.widgetNames.DATE)
				value =	row.getDate();
			else if (column.widget == application.widgetNames.CONTACT)
				value = row.getContact();
			else
				value = row.getValue(column.attributeName);
		}

		return value;
	},
	
	setValue: function(rowRank, columnRank, value, type) {
		var column = application.display.table.columnList[columnRank];
		if (column.canBeNull == true || (column.canBeNull == false && $.trim(value).length>0)) {
			var row = null;
			if (rowRank > -1) {
				row = application.result.rowList[rowRank];
			} else {
				row = application.display.table.formRow;
			}
			if (column.widget == application.widgetNames.DATE)
				row.setDate(value, type);
			else if (column.widget == application.widgetNames.CONTACT)
				row.setContact(value, type);
			else {
				if (column.attributeName == "geographie" && value && value.length == 1 && value[0] == 'no_geog') {
					row.setValue("otherplaceNames",["no Geography"]);
				}
				row.setValue(column.attributeName, value);
			}
		}
	},
	
	updateFormValue: function (inputObj, columnRank) {
		var value = inputObj.value;
		application.display.table.setValue(-1,columnRank,value,'');
	}
};
