// *******************************************
// Fonctions spécifiques au développeur 
// *******************************************
function STD_UserMsg(msg,class_blocmsg,param)
{
	var class_blocmsg = class_blocmsg || "";
	var no_duree = (param.opt.noduree && param.opt.noduree!="undefined")?param.opt.noduree:false;
	var msg_dest = (param.opt.msgdest && param.opt.msgdest!="undefined")?param.opt.msgdest:false;
	var redirect = (param.opt.redirect && param.opt.redirect!="undefined")?param.opt.redirect:false;
	if($(msg_dest))
		$(msg_dest).update(msg);
	else
	{	
		if(Modmsg.initialized===true)
			Modmsg.info(msg,class_blocmsg,no_duree,redirect);
	}
}

function STD_ClearUsrMsg()
{
	if(Modmsg.initialized===true)
		Modmsg.hide();
	STD_hide_wait();
}

function STD_UserConfirm(msg,class_blocmsg,param)
{
	var class_blocmsg = class_blocmsg || "";
	var no_duree = (param.opt.noduree && param.opt.noduree!="undefined")?param.opt.noduree:false;
	if(Modmsg.initialized===true)
		Modmsg.ask(msg,class_blocmsg,param.btn_id);
}

// *******************************************
// Fonctions callstart spécifiques au développeur 
// *******************************************

function STD_CallStart(param)
{
	if($('form_' + param.type) && $('form_' + param.type).select(".tab_onglet").length>0)
		param.opt.currentonglet = mod_onglet_current;
	return param;	
}

function STD_Fedit_CallStart(param)
{
	STD_show_wait();
	return STD_CallStart(param);
}

function STD_Frecord_CallStart(param)
{
	STD_show_wait();
	return STD_CallStart(param);
}

function STD_Fadd_CallStart(param)
{
	STD_show_wait();
	return STD_CallStart(param);
}

function STD_Fdel_CallStart(param)
{
	STD_show_wait();
	return STD_CallStart(param);
}

function STD_Fsortable_CallStart(param)
{
	new Effect.Morph(param.btn_id,
	{
		style:'background-color:#003A57;',
   		duration:0.1
	});
	return STD_CallStart(param);
}

// *******************************************
// Fonctions callback spécifiques au développeur 
// *******************************************

function STD_CallBack(oRes,param)
{
	STD_hide_wait();
}

function STD_Show_CallBack(oRes,param)
{
	if(param.opt && param.opt.lst_action && param.opt.lst_action!="")
	{
		if(param.opt.lst_type && param.opt.lst_type!="")
			var lsttype = param.opt.lst_type;
		else
			var lsttype = param.type;
		STD_RefreshList(param.opt.lst_action,lsttype);
	}

	if(param.opt && param.opt.currentonglet && param.opt.currentonglet!="")
		Tabs.Init(param.opt.currentonglet);

	if(param.opt && param.opt.scrollto && param.opt.scrollto!="")
		param.blocdestination.scrollTo();

	STD_CallBack(oRes,param);
}

function STD_RefreshList(action,type)
{
	//Mise à jour de la liste
	var postsupp = PHX_getadditionnalposts("",action,type);
	var tpl = PHX_getoption("",action,type,"lsttpl");
	if(!tpl)
		var tpl = "";
	var dest = PHX_getoption("",action,type,"lstdest");
	if(!dest)
		var dest = "";
	PHX_Fupdateliste(type,postsupp,tpl,$(dest));
}

function STD_Task_CallBack(oRes,param)
{
	if(oRes.return_url && oRes.return_url!="")
	{

		if(oRes.msg && oRes.msg!="")
		{
			//Si un message de present on l'affiche et on fait la redirection
			param.opt.redirect = oRes.return_url;
			STD_UserMsg(oRes.msg,class_msg_ok,param);
		}
		else
		{
			//Si une url de retour on fait une redirection
			if(oRes.return_url=="refresh")
				window.location = window.location;
			else
				window.location.replace(oRes.return_url);
		}
	}
	else 
	{
		//Si un message de present on l'affiche
		if(oRes.msg && oRes.msg!="")
			STD_UserMsg(oRes.msg,class_msg_ok,param);

		//Si un id de retour on recharge le formulaire
		if(oRes.return_id && oRes.return_id!="")
		{
			var act = "";
			if(param.opt.norefresh!="1")
				act = param.action;
			PHX_Fedit("edit_" + param.type + "_" + oRes.return_id, param.type, param.blocdestination, {lst_action:act,lst_type:param.type,currentonglet:param.opt.currentonglet});
		}
		else
		{
			if(param.opt.norefresh!="1")
			{
				STD_RefreshList(param.action,param.type);
				PHX_Fcancel(param.btn_id,param.type,param.blocdestination);
				window.scroll(0,0);
				if(param.opt && param.opt.currentonglet && param.opt.currentonglet!="")
					Tabs.GoTo(param.opt.currentonglet);
			}
			STD_CallBack(oRes,param);
		}
	}
}

function STD_Frecord_CallBack(oRes,param)
{
	STD_Task_CallBack(oRes,param);
	STD_Hide_CallBack(oRes,param);
}

function STD_Fdel_CallBack(oRes,param)
{
	STD_Task_CallBack(oRes,param);	
}

function STD_Fedit_CallBack(oRes,param)
{
	STD_Show_CallBack(oRes,param);	
}

function STD_Fadd_CallBack(oRes,param)
{
	STD_Show_CallBack(oRes,param);	
}

function STD_Fcancel_CallBack(oRes,param)
{
	popup_Fade(param.type);
	STD_CallBack(oRes,param);
}

function STD_Fsortable_CallBack(oRes,param)
{
	$(param.ctn_id).style.backgroundColor="transparent";
	STD_CallBack(oRes,param);
}

// *******************************************
// Fonctions spécifiques au développeur 
// *******************************************

function STD_show_wait()
{
	var wait = $('wait_display');
	if(wait)
		wait.style.display="";
}

function STD_hide_wait()
{
	var wait = $('wait_display');
	wait.style.display="none";
}

function STD_error_handler(err,param)
{
	//Recherche d'erreur fatal on l'affiche
	for(var i=0; i<err.length; i++)
	{
		if(err[i].level=='fatal')
		{
			STD_UserMsg(err[i].msg,"msg_ok",param);
			STD_hide_wait();
			return false;
		}
	}

	//Cas des multi erreur on affiche la première
	if(err.length>0)
	{
		var err = err[0];
		STD_UserMsg(err.msg,"msg_ko",param);
		STD_hide_wait();
		return false;
	}
	return true;
}
