/* (c) 2010 - Jean Luc BIELLMANN */

var _FormAction = {
	fill : function (tbl,row) {
		// Fill the edit form using tbl and row hash
		// Every field of the form MUST be of the form tbl__SQLTblFieldName
		// Effectue le remplissage automatique des champs du formulaire 
		// en utilisant le tbl et les données dans le hash row	
		var br = new RegExp('[\r\n]+','g');
		for (var i in row) {
			var key = tbl+'__'+i;
			var obj = $(key);
			if (obj) { // element exists
				if (i.match(/.*_id$/)) {
					obj.select('option').each(function (opt) {
						opt.selected = (row[i]==opt.value) ? true : false;
					});
				} else {
					var str = String(row[i]).stripScripts().stripTags();
					if (usr.isadmin=='0') {
						if (i=='id' || i=='editKey')
							obj.value = str;
						else
							if (obj.nodeName!='DIV')
								alert('La division "'+i+'" devant recevoir la donnée n\'existe pas. Contactez l\'administrateur.');
							else
								obj.update(str.replace(br,'<br/>'));
					} else {
						//alert('i='+i+' '+obj.type+':'+row[i]);
						switch (obj.type) {
							case 'select-one':
								obj.select('option').each(function (option) {
									option.selected = (option.value.unescapeHTML()==str.unescapeHTML() ? true : false);
								});
								break;
							case 'checkbox': 
							case 'radio':
								$A(obj.form.select('input[type="'+obj.type+'"][name="'+obj.name+'"]')).each(function (obj) {
									obj.checked = (obj.value.unescapeHTML()==str.unescapeHTML() ? true : false);
								});
								break;
							case 'text': 
							case 'password':
							case 'hidden':
								obj.value = str.replace(/"/g,'&quot;');
								break;
							case 'textarea': // textarea
								obj.update(str.replace(br,'<br/>'));
							default:
						}
					}
				}
			}
		}
	},
	postView : function (formId) { // post handles
	
		// traitements ultérieurs après remplissages des champs, en mode ls ou edit
		
		// détecte les champs de classe CSS url
		// ajoute une icône web et un lien http pour ouvrir le lien
		// directement
		$(formId).select('.url').each(function (obj) {
			var value = obj.value ? obj.value : obj.innerHTML;
			if (_FormViewCtrl.mode=='edit' || (_FormViewCtrl.mode=='ls' && value.length)) {
				var img = E('img',{'src':'img/icon.url.png','alt':'ouvrir le lien'});
				img.addClassName('middle');
				var div = E('div');
				if (_FormViewCtrl.mode=='edit') {
					div.update(' ').appendChild(img);
					C(div,{'display':'inline'});
					obj.insert({'after':div});
				} else {
					div.appendChild(img);
					div.appendChild(T(' '+value));
					obj.update('');
					obj.appendChild(div);
				}
				div.observe('click',_FormAction.openURL.bind(obj,value));
			}
		});
		
		// détecte les champs de classe CSS email
		// ajoute une icône mail et un lien mailto pour ouvrir la messagerie
		// automatiquement
		$(formId).select('.email').each(function (obj) {
			var value = obj.value ? obj.value : obj.innerHTML;
			if (_FormViewCtrl.mode=='edit' || (_FormViewCtrl.mode=='ls' && value.length)) {
				var img = E('img',{'src':'img/16x16/actions/mail_forward.png','alt':'ouvrir le lien'});
				img.addClassName('middle');
				var div = E('div');
				if (_FormViewCtrl.mode=='edit') {
					div.update(' ').appendChild(img);
					C(div,{'display':'inline'});
					obj.insert({'after':div});
				} else {
					div.appendChild(img);
					div.appendChild(T(' '+value));
					obj.update('');
					obj.appendChild(div);
				}
				div.observe('click',_FormAction.openMail.bind(obj,value));
			}
		});
		
		// détecte les champs de formulaire de type text et de classe CSS date
		// fixe la taille et d'autres attributs automatiquement
		$(formId).select('.date').each(function (obj) {
			obj.setAttribute('size','10');
			obj.setAttribute('maxlength','10');
			obj.style.width = 'auto';
			var value = obj.value.toString();
			var re = new RegExp('([0-9]{4}).([0-9]{2}).([0-9]{2})','');
			if (m = value.match(re))
				obj.value = m[3]+'/'+m[2]+'/'+m[1];
		});
	},
	openURL : function (e) {
		var regexp = new RegExp('http:/+', 'ig');
		var value = arguments[0];
		var url = value.replace(regexp,'');
		if (!url.length)
			return _FormViewCtrl._Status.err('URL vide');
//console.log(url);
		//document.location = 'http://'+url;
		window.open('http://'+url);
		e.stopPropagation();
	},
	openMail : function (e) {
		var value = this.value ? this.value : this.innerHTML;
		if (!value.length)
			return _FormViewCtrl._Status.err('Mail vide');
//console.log(url);
		//document.location = 'http://'+url;
		document.location = 'mailto:'+value;
		e.stopPropagation();
	}
};


