var navi=navigator.userAgent;
var MSIE=navi.indexOf("MSIE");

var editin_url;
var editin_empty='Vide';
var editin_saving='Enregistrement...';
var editin_save='Sauvegarder';
var editin_or=' ou ';
var editin_cancel='Abandon';
var tmpobj;
var tmpuri;

function editin_init(){
	if(arguments.length>0&&$(arguments[0])){
		var tags=['#'+arguments[0]+' div','#'+arguments[0]+' span'];
		tmpuri=arguments[0];
	}else	var tags=['div','span'];
	
	tags.forEach(function(eli){
		$$(eli).each(function(el){
			if(el.getProperty('rel')=='editin'){
				if(el.innerHTML=='') el.setHTML(editin_empty);
				if(arguments.length>0&&$(tmpuri)){
					editin_makeEditable(el.getProperty('id'),tmpuri);
				}else{
					editin_makeEditable(el.getProperty('id'));
				}
			}
		});
	});
}

function editin_makeEditable(){
	$(arguments[0]).setAttribute('tmpobj', arguments[0]);
	$(arguments[0]).setAttribute('tmpuri', arguments[1]); 
	
	if(arguments.length>1)	$(arguments[0]).addEvent('click',function(e){editin_form(this.getAttribute('tmpobj'),this.getAttribute('tmpuri'));});
	else			$(arguments[0]).addEvent('click',function(e){editin_form(this.getAttribute('tmpobj'));});
	
	$(arguments[0]).addEvent('mouseover',function(e){editin_showAsEditable(this.getAttribute('tmpobj'));});
	$(arguments[0]).addEvent('mouseout',function(e){editin_showAsEditable(this.getAttribute('tmpobj'),true);});
}

function editin_select(obj){
	$(obj).focus();
	$(obj).select();
} 

function editin_form(){
	var editin_value=$(arguments[0]+'ctn').value;

	var tmpheight=(($(arguments[0]).offsetHeight/25)+1).toInt();
	
	$(arguments[0]).setStyles({'visibility':'hidden','display':'none'});
	$(arguments[0]).setOpacity(0);
	
	if(editin_value==editin_empty){var obj_value='';}else{var obj_value=editin_value;}
	
	var e_div=new Element('div',{id:arguments[0]+'_editor','class':'editin_div'});
	var e_textarea=new Element('textarea',{'name':arguments[0],'id':arguments[0] + '_edit','class':'editin_textarea','rows':tmpheight,'value':obj_value});
	var e_save=new Element('input',{'type':'button','id':arguments[0] + '_save','class':'editin_save','value':editin_save});
	var e_cancel=new Element('input',{'events':{'click':function(){editin_cleanUp(this.getAttribute('tmpobj'))}},'type':'button','tmpobj':arguments[0],'id':tmpobj + '_cancel','class':'editin_cancel','value':editin_cancel});
	var e_subdiv=new Element('div');
	
	var e_buttons=e_save + editin_or + e_cancel;

	e_div.injectAfter(arguments[0]);
	e_textarea.injectInside(e_div);
	e_subdiv.injectAfter(e_textarea);
	e_save.injectInside(e_subdiv);
	e_save.injectInside(e_subdiv);
	content=e_subdiv.innerHTML;
	e_subdiv.innerHTML=content + editin_or;
	e_cancel.injectInside(e_subdiv);
	
	editin_select(arguments[0]+'_edit');
	
	$(arguments[0]+'_save').setAttribute('tmpobj', arguments[0]); 
	if(arguments.length>1)	$(arguments[0]+'_save').setAttribute('tmpuri', arguments[1]); 
	else			$(arguments[0]+'_save').setAttribute('tmpuri', '');

	$(arguments[0]+'_save').addEvent('click',function(){
		if(this.getAttribute('tmpuri')!='')	editin_saveChanges(this.getAttribute('tmpobj'),this.getAttribute('tmpuri'))
		else	editin_saveChanges(this.getAttribute('tmpobj'))
	});
}

function editin_showAsEditable(obj,clear){
	if(!clear)	$(obj).addClass('editin');
	else	$(obj).removeClass('editin');
}

function editin_saveChanges(){
	tmpobj=arguments[0];
	var new_content=escape($(arguments[0]+'_edit').value);
		$(arguments[0]).set('html', editin_saving);
		$(tmpobj+'ctn').value=($(arguments[0]+'_edit').value);
	editin_cleanUp(arguments[0],true);
	
	var pars='id='+arguments[0]+'&content='+new_content;
	
	
	
	if(arguments.length>1)	var specificUri=editin_url[arguments[1]];
	else			var specificUri=editin_url;
	
	if(specificUri==undefined)	alert('PB: specificUri = undefined');
	
	var myAjax = new Request.HTML({
		url:specificUri,
		data:pars,
		update:tmpobj,
		onComplete:function(){
			if($(tmpobj).innerHTML=='')	$(tmpobj).set('html', editin_saving);
		}
	}).send();
}

function editin_cleanUp(obj,keepEditable){
	$(obj+'_editor').dispose();
	$(obj).setStyles({'visibility':'','display':''});
	$(obj).setOpacity(1);
	if(!keepEditable) editin_showAsEditable(obj,true);
}