function autocomplete(id, parent, params, minchar){
	if (!$(id)) return ;
	//console.log("autocomplete="+id+" " + parent+ " "+params+ " "+minchar);
	
	if(!minchar) minchar = 1 ;
	
	var url = '/jobs/autocomplete.do' ;
	
	if ( params == null ) params = "" ;
	else if (typeof params == 'string') params = "product="+params ;
	 
	var lang = $('lang') ? $('lang').innerHTML : '' ;
	if ( params != "" ) params += "&" ;
	params += "lang=" + lang ;
	//console.log("params="+params);
	
	new Ajax.Autocompleter(
		parent,
		id,  // id de l'element utilise pour les propositions
		url,
		{
			paramName: 'token',/*param a passer a url*/
			parameters:params,
			minChars: minchar,
			afterUpdateElement: getSelectionId
	});
}

function getSelectionId(field, item){
	var fieldid = $('id_' + field.id);
	if ( fieldid != null && item != null ) {
		try{
			fieldid.value = item.id;
		} catch(e) {
			throw(e);
		}
	}
}

function tobeedited(item, savingMessage, formID){
	item=$(item);
	if ( !item) return ;
	var tobeeditedSave = '/jobs/'+$('product').value + ".do?do=save" + "&product=" + $('product').value + "&iduser=" + $('iduser').value;
	new Ajax.InPlaceEditor(item, tobeeditedSave, {
		okButton: true, 
		okLink: false,
		cancelButton: true,
		cancelLink: false,
		formId : formID ? formID : "",
		savingText:savingMessage,
		size:item.readAttribute("size") ? item.readAttribute("size") : 30,
		highlightcolor:"#EDEDED",
		highlightendcolor:"#FFFFFF",
		savingClassName:"modif",
		emptyText :item.readAttribute("title"),
		paramName: item.readAttribute("name"),
		hoverClassName:"",
		submitOnBlur:true,
		ajaxOptions: {method: 'post'}
		});
}


function formClose(){
	closeExtModal();
}

function formDelete(confirmMessage, formName){
	if ( $(formName) && confirm( confirmMessage ) ){ 
		var results = $(formName).serialize(true) ;
		var params = $(formName).serialize() ;
		var url = "/jobs/" + results["product"] + ".do" + "?do=delete" + "&product=" + results["product"] + "&iduser=" + results["iduser"] + "&id=" + results["id"] ;
		//console.log(url);
		if( params.indexOf("id") == -1 && id ) params += "&id=" + id ;		
		var ajaxRequest = new Ajax.Request(
			url,  
			{	
				method:'post',
				parameters:params,
				onComplete:function(){
					componentRemove(results["product"], results["iduser"], results["id"]);
				}
			}
		);
	}
}

function formSave(formName){
	var formID = $(formName) ;
	if ( !formID ) return ;
	var valid = new Validation(formName, {onSubmit:false});		
	if (  valid.validate(formName) ){
		var results = formID.serialize(true) ;
		var params = formID.serialize() ;
		var url = "/jobs/" + results["product"] + ".do" + "?do=save" ;
		//console.log("url="+url+" params="+params);
		var ajaxRequest = new Ajax.Request(
			url,  
			{	
				method:'post',
				parameters:params,
				onSuccess: function(request){
				   componentUpdate(results["product"], results["iduser"], results["id"], request.responseText, results["product"]);
				}
			}
		);
	}
}

function closeExtModal(){
	if ( mymodal ) {
		mymodal.close() ;
		mymodal.destroy();
		mymodal = null ;
	}
	window.focus();
}

function openExtModal(param){
	if ( mymodal != null ) return ;
	var tmp = param.split("|");
	var nbparam = tmp ? tmp.length : 0 ;
	if ( nbparam < 1 ) return ;
	
	var product = tmp[0];
	if ( product != "profile" ){
		if ( $('profileitemEmpty') ){
			$("profileNeeded").show();
			return;
		}
	}
	$("profileNeeded").hide();
	
	var paramsIframe = "&product=" + product + "&iduser=" + tmp[1] ;
	if ( nbparam > 2 ) paramsIframe += "&id=" + tmp[2] ;

	var lang = $('lang') ? $('lang').innerHTML : '' ;
	mymodal = new Control.Modal( null,{
		"lang":lang,
		formRequest : 'modal/formRequest.jsp',
		actionEdit : 'edit',
		width: 550,
		className: 'modal',
		indicator:'indicator',
		afterClose: function(request){
			this.remoteContentLoaded = false;
			this.container.update("");
		},
		closeOnClick: false/*empeche le clic de fermer*/
	});

	mymodal.href = mymodal.options.formRequest + "?lang=" + mymodal.options.lang + "&action=" + mymodal.options.actionEdit + paramsIframe ;
	//console.log(mymodal.href);
	mymodal.open();
}

function modifClassRemove(){
	$$('.modif').each(function(item) {
		item.removeClassName('modif');
	});	
}

function componentIDCreate(product, iduser, id){
	var newid = product + "|" + iduser ;
	if ( id ) newid += "|" + id ;
	return newid ;
}

function componentUpdate(product, iduser, id, inner, parent){
//console.log("coponentUpdate product=" + product + " iduser=" + iduser + " id=" + id + " inner=" + inner + " parent="+parent);
	/*patch le temps de trouver comment lire cet attribut de m!*/
		if ( id == null || id == "null"  || id == "" ) {
			var ind = inner.indexOf("id=");
			if ( ind != -1 ) {
				var id = inner.substring(ind+4);
				ind = id.indexOf("\'");
				if ( ind != -1 ) id = id.substring(0, ind);
				//console.log("id="+id);
			}
		}
	/*fin patch*/
	id = componentIDCreate( product, iduser, id );
	var idmod = $(id);
	modifClassRemove();
	if ( idmod == null ) {
		var a = new Element('a');
		a.href = "javascript:openExtModal('"+id+"');";
		var div = new Element('div', {"id":id, "class":"editButton modif"}).update( inner );
		a.appendChild(div);
		var idparent = $(parent);
		//console.log("Ajout sur parent="+idparent);
		if ( idparent ) idparent.appendChild(a);
	}
	else {
		//console.log("Modif idmod="+idmod);
		idmod.innerHTML = inner ;
		if ( !idmod.hasClassName('nomodif')) idmod.addClassName('modif');
	}
	closeExtModal();
}

function componentRemove(product, iduser, id){
	id = componentIDCreate( product, iduser, id );
	//console.log("idDelete="+id);
	modifClassRemove();
	var idmod = $(id);
	if ( idmod ) idmod.remove() ;
	closeExtModal();
}

var mymodal = null ;

