/* [Logik standard functions
 Version: 7.2.0
 required Logik-Version: 2.4.2.0
 (c)2011 [Logik software + consulting GmbH
 !!!!!!!!!!!!!!!!!!!!!
 !!! DO NOT MODIFY !!!
 !!!!!!!!!!!!!!!!!!!!!
*/
function Logik_WinClose(WindowObj)
{
	try
	{
		if (!Prototype.Browser.IE)
		{		
			WindowObj.content.contentWindow.document.body.setAttribute("onBeforeUnload",null);
			WindowObj.content.contentWindow.document.body.setAttribute("onUnload",null);
		}
		else
		{
			WindowObj.content.contentWindow.document.body.onbeforeunload = null;
			WindowObj.content.contentWindow.document.body.onunload = null;
		}
			
	}
	catch (e)
	{
		;
	}
	WindowObj.close();
}

function Logik_StackAdd(Obj)
{	
	Logik_WinStack[Logik_WinStack.length] = Obj;
}

function Logik_StackRemove()
{
	if (Logik_WinStack.length>0)
	{
		Logik_WinStack.pop();
	}
	
	
}

function Logik_StackGetActive()
{
	if (Logik_WinStack.length > 0)
	{
		return Logik_WinStack[Logik_WinStack.length-1];
	}
	else
	{
		return -1;
	}
}

function Logik_FuncStackNext()
{
   switch(Logik_SrvBsy)
   {
   case "bsy":

        Logik_SrvBsy = "nbsy";
        if (Logik_FuncStack.length <= 0)
		{
			
			return 0;
		}

        switch(Logik_FuncStack[0].length)
        {
			case 1:	
				
         		Logik_FuncStack[0][0]();
				break;
			case 2:
         		
         		Logik_FuncStack[0][0](Logik_FuncStack[0][1]);
				break;
			case 3:
				
				Logik_FuncStack[0][0](Logik_FuncStack[0][1],Logik_FuncStack[0][2]);
				break;
			case 4:
				
       	   		Logik_FuncStack[0][0](Logik_FuncStack[0][1],Logik_FuncStack[0][2],Logik_FuncStack[0][3]);
				break;
		}
        Logik_FuncStack.shift();
		break;
    case "uev":
        Logik_SrvBsy = "nuev";
        if (Logik_FuncStackUEV.length <= 0)
		{
			return 0;
        }
        switch(Logik_FuncStackUEV[0].length)
        {
			case 1:	
				
				Logik_FuncStackUEV[0][0]();
				break;
			case 2:
				
         		Logik_FuncStackUEV[0][0](Logik_FuncStackUEV[0][1]);
				break;
			case 3:
				
				Logik_FuncStackUEV[0][0](Logik_FuncStackUEV[0][1],Logik_FuncStackUEV[0][2]);
				break;
			case 4:
				
				Logik_FuncStackUEV[0][0](Logik_FuncStackUEV[0][1],Logik_FuncStackUEV[0][2],Logik_FuncStackUEV[0][3]);
				break;
        }
        Logik_FuncStackUEV.shift();
		break;
	}
	
	if (Logik_SrvBsy == "nbsy")
	{
		if (Logik_FuncStack.length > 0)
		{
			
			Logik_SrvBsy = "bsy";
		}
		return;
	}
	
	if (Logik_SrvBsy == "nuev")
	{
		if (Logik_FuncStackUEV.length > 0)
		{
			
			Logik_SrvBsy == "uev";
		}
	}
}

function Logik_StackClear()
{
	
	if (!parent)
	{
		return -1;
	}
	while(parent.Logik_WinStack.length>0)
	{
		if (!parent.Logik_WinStack[parent.Logik_WinStack.length-1].closed)
		{
			
			parent.Logik_WinClose(parent.Logik_WinStack[parent.Logik_WinStack.length-1]);
		}
		parent.Logik_WinStack.pop();		
	}
	return 0;
}

function Logik_FctStackAdd(FuncAddr)
{
	
	if (Logik_SrvBsy == "bsy" )
	{
		Logik_FuncStack[Logik_FuncStack.length] = FuncAddr;
		return;
	}
	
	if (Logik_SrvBsy == "uev")
	{
		Logik_FuncStackUEV[Logik_FuncStackUEV.length] = FuncAddr;
		return;
	}
}

function Logik_Init(objTarget, objTyp, LogikApplication, LogikModule, LogikComponent)
{
	Logik_CheckBrowser();
	
	if (Logik_SrvBsy != "ni")
	{
 		return;
 	}
	
	parent.Cancel = false;
 	var RunMode = 1;
 	
	Logik_FuncStack.length    = 0;
 	Logik_FuncStackUEV.length = 0;
	Logik_SrvBsy = "bsy";
	
	
	window.onbeforeunload = function(e){Set_Get("logik_frame_control.php?term=true",true);};
	
	if (typeof(objTarget) == "object")
	{
		Logik_TargetElemObj = objTarget;
		Logik_TargetElemTyp = objTyp;
	}
	
	Set_Post("logik_frame_control.php","dlgmsg="+LOGIK_SMS_S_INIT+"&dlgcauser=&dlgdata="+RunMode +Logik_SplitChar + LogikApplication + Logik_SplitChar + LogikModule + Logik_SplitChar + LogikComponent);
}

function Logik_Execute(LogikApplication, LogikModule, LogikComponent)
{
	Logik_Init('', '', LogikApplication, LogikModule, LogikComponent);
	Logik_Exec_fx(LogikComponent);
}

var Logik_Term_fx = function Logik_Term()
{
	if(Logik_GetServerState_nA([Logik_Term_fx]))
		return;
	
	
	Logik_SetSrvBusy();
	Set_Post("logik_frame_control.php","dlgmsg="+LOGIK_SMS_S_TERM+"&dlgcauser=&dlgdata=");	
	
	window.onbeforeunload = null;
	
	
	Logik_SrvBsy = "ni";
	
	
	
}

var Logik_Exec_fx = function Logik_Exec(LogikComponent)
{
	if(Logik_GetServerState_nA([Logik_Exec_fx, LogikComponent]))
		return;
  	Logik_StackClear();
	Logik_SetSrvBusy();
	Set_Post("logik_frame_control.php","dlgmsg="+LOGIK_SMS_S_EXEC+"&dlgcauser=&dlgdata="+LogikComponent);
}

var Logik_GPar_fx = function Logik_GPar(LogikParameter, objTyp, objTarget)
{
	if(Logik_GetServerState_nA([Logik_GPar_fx, LogikParameter, objTyp, objTarget]))
		return;
   	Logik_SetSrvBusy();
	Logik_TargetElemObj = objTarget;
	Logik_TargetElemTyp = objTyp;
	
	Set_Post("logik_frame_control.php","dlgmsg="+LOGIK_SMS_S_GPAR+"&dlgcauser=&dlgdata="+LogikParameter);
}

var Logik_SPar_fx = function Logik_SPar(LogikParameter, LogikParameterValue)
{
	if(Logik_GetServerState_nA([Logik_SPar_fx, LogikParameter, LogikParameterValue]))
		return;
	Logik_SetSrvBusy();
	Set_Post("logik_frame_control.php","dlgmsg="+LOGIK_SMS_S_SPAR+"&dlgcauser=&dlgdata="+LogikParameter + Logik_SplitChar + LogikParameterValue);
}
var Logik_EventDone = function Logik_EventDone()
{	
	if(Logik_GetServerState_nA([Logik_EventDone]))
		return;
 	Logik_SetSrvBusy();
	Set_Post("logik_frame_control.php","dlgmsg="+LOGIK_SMS_S_UEVDONE+"&dlgcauser=&dlgdata=");
}
function Logik_GetServerState_nA(FuncAddr)
{
	if (Logik_SrvBsy == "error" || Logik_SrvBsy == "ni")
	{
		return true;
	}
 	if (Logik_SrvBsy == "bsy" || Logik_SrvBsy == "uev")
	{
		Logik_FctStackAdd( FuncAddr );
		return true;
 	}
	return false;
}
function Logik_SetSrvBusy()
{
	switch ( Logik_SrvBsy )
	{
		case "nbsy":
			Logik_SrvBsy = "bsy";
			break;
		case "nuev":
			Logik_SrvBsy = "uev";
			break;
	}
}
function Logik_CheckBrowser()
{		
	switch (true)
	{
		case (Prototype.Browser.IE):
			return 0;
		case (Prototype.Browser.Gecko):
			return 1;
		case (Prototype.Browser.WebKit):
			return 1;
		default:
			alert(Logik_RetrieveJS_Msg('BROWSER_WARN'));
			return 1;
	}
}

