// TOOLBOX ---------------------------------------------------- //
//	End Click Propagation
//	Init Container
//	Explode							<== Deprecated !!
//	Check Container Dimensions
//	Count Array and Subarray
//	GET Selected Option
//	Set Bookmark
//	Check Date
//	Change Language
//	Extend/ Shrink Displayarea
//	Swap Line Background Color
//	Show Local Time
//	Read/ Write Cookie
//	Show Login/ Logout Button
//	Newsticker
//	Notification
//	Discover Quantity
//	Set Element (Box) Position
//	Add onLoad
//	odmMessage
//	Manage Tasks
//	Supervision Menu
//	Sort/ Select Statistics and Listings

// Define GLOBAL Objects
if (typeof JSdbg=="undefined") JSdbg=new Object();
if (typeof GLO=="undefined") GLO=new Object(); 
if (typeof GLO.T=="undefined") GLO.T=new Object(); 
if (typeof TSK=="undefined") {
	TSK={dbg: 90, ctl: {}, win: {}, btn: {}, idx: new Array() }
	// Definition
	TSK.ctl.swpcmp={win: "swpcmp", sts: "hide"};
	TSK.ctl.nwssch={win: "nwssch", sts: "hide"};
	TSK.ctl.mngdsc={win: "mngdsc", sts: "hide"};
	TSK.ctl.cmpwki={win: "cmpwki", sts: "hide"};
	TSK.ctl.adrsel={win: "adrsel", sts: "hide", acc: false, adrnbr: 0};
	TSK.ctl.pgehlp={win: "pgehlp", sts: "hide"};
	TSK.ctl.odm={win: "odm", sts: "inactive"};
	// Window
	TSK.win.dft={cnt: {}, cnt0: {}, cnt00: {}, cnt00_hdr: {}, cnt00_close: {}, cnt1: {} };
	TSK.win.swpcmp={cnt: {id: "CNTswpcmp"} };
	TSK.win.mngdsc={cnt: {id: "CNTdsc"} };
	TSK.win.cmpwki={cnt: {id: "CNTwiki"} };
	TSK.win.adrsel={cnt: {id: "CNTadr"} };
	TSK.win.pgehlp={cnt: {id: "CNThelp"} };
	TSK.win.odm={cnt: {id: "CNTodm"} };
	// Button
	TSK.btn.dft={cnt0: {className: "task_cnt0 hand", style: {display: "none", position: "absolute", left: "0px", top: "0px", height: "19px"} }, cnt1: {className: "task_cnt1"}, btn_l: {className: "task_btn_l", alt: ""}, btn_r: {className: "task_btn_r", alt: ""}, btn: {className: "task_btn",  style: {display: ""} } };
	TSK.btn.swpcmp={cnt0: {id: "tsk_swpcmp", onclick: "showCNTswpcmp();"} };
	TSK.btn.nwssch={cnt0: {id: "tsk_nwssch", onclick: "showCNTmsg();"}, btn_sup: {className: "CNTntf"}  };
	TSK.btn.mngdsc={cnt0: {id: "tsk_mngdsc", onclick: "showCNTdsc();"}, btn_sup: {className: "CNTdscqua"}  };
	TSK.btn.cmpwki={cnt0: {id: "tsk_cmpwki", onclick: "showCNTcmpwki();"} };
	TSK.btn.adrsel={cnt0: {id: "tsk_adrsel", onclick: "showCNTadrsel('taskbar');"}, btn_img: {src: "../../images/adr_1.png", width: "17", height: "14", alt: ""} };
	TSK.btn.pgehlp={cnt0: {id: "tsk_pgehlp", onclick: "showCNTpgehlp();"}, btn_text: ": ?"};
	TSK.btn.odm={cnt0: {id: "tsk_odm", onclick: "showCNTodm();"}, btn_text: "..." };
}

// ### Newsticker
function onload_odmNws() { init_OnLC("odmNws"); OnLC.odmNws.load_XMLHttp("text&&../../scripts/odm/get_odmnws.php?lng="+GLO.lng+"&&nws_start"); }
// ### Move Element
function onload_odmEmov() { init_OnLC("odmEmov"); OnLC.odmEmov.load_script("end_Emov&&../../scripts/get_emov.js"); }
// ### Notifications
function onload_odmNTF()  { init_OnLC("odmNTF"); ntf_init(); }
// ### Discover
function odmDSC() { init_OnLC("odmDSC"); dsc_start(); DSC_load(); }
function DSC_load () { OnLC.odmDSC.load_XMLHttp("text&&../../odm/discover.php?lng="+GLO.lng+"&"+GLO.dscqry+"&&dsc_start"); }
// ### Discover Quantity
function onload_odmDSCqua()  { init_OnLC("odmDSCqua"); dscqua_init(); }
//
// END CLICK PROPAGATION -------------------------------------
function end_clk_propagation(evt) { if (!evt) var evt=window.event; evt.cancelBubble=true; if (evt.stopPropagation) evt.stopPropagation(); }
//
// Discover Start Sequence --------------------------------------
function dsc_start() {
	if (arguments.length) {
		var odm=arguments[0].req.responseText.split("&&");
		document.getElementById("onlcode").innerHTML=odm[0];
		document.getElementById("CNTdsc_hdr").innerHTML=odm[1];
		document.getElementById("CNTdsc1").innerHTML=odm[2];
	DSC_clc_layer2();
	}
	if (typeof EFlr!="undefined") return; dsc_init();
}
// Discover Initilization -----------------------------------------
function dsc_init() {
	EFlr=new Object();
//	if (document.getElementById("CNTdsc").style.visibility=="visible") document.getElementById("CNTdsc").style.visibility="hidden";
	document.getElementById("onlcode").innerHTML="";
	document.getElementById("CNTdsc_hdr").innerHTML="";
	document.getElementById("CNTdsc1").innerHTML="";
//	showCNTdsc();
}

// INIT Container ----------------------------------------------
function init_cnt() {
	var dbg=false;
//if (GLO.lng=="fa") dbg=true;
	if (typeof CNT=="undefined") CNT=new Object();
	// GET Win Dimensions
	Wdim=new get_Wdim();
//if (dbg) alert("BODY.margin: "+parseInt(document.body.style.margin.replace("px","")));
if (dbg) shw_prop(Wdim.cont);
if (dbg) shw_prop(Wdim.win);
	CNT.dim=new Object();
	// CONTAINER Outer Height/ Width
//alert("Header.h: "+document.getElementById("header").offsetHeight+" Footer.h: "+document.getElementById("footer").offsetHeight);
//alert("CNTall.h: "+document.getElementById("CNTall").offsetHeight);
	CNT.dim.h=Wdim.win.h-parseInt(document.body.style.margin.replace("px",""))*2-document.getElementById("header").offsetHeight-document.getElementById("footer").offsetHeight;
//alert("CNT.dim.h: "+CNT.dim.h);
	if (Wdim.win.w<document.body.offsetWidth) CNT.dim.w=Wdim.win.w-parseInt(document.body.style.margin.replace("px",""))*2-3;
	else CNT.dim.w=document.body.offsetWidth-parseInt(document.body.style.margin.replace("px",""))*2-3;
//if (dbg) alert("CNT.dim.w: "+CNT.dim.w);
//	document.getElementById("CNTall").style.width=CNT.dim.w+"px";
	if (GLO.mdl!="mdl_toolx") document.getElementById("CNTall").style.height=CNT.dim.h+"px";
	CNT.dim.h2=CNT.dim.h-document.getElementById("CNTtop").offsetHeight-document.getElementById("CNTbot").offsetHeight-2;
//alert("CNTdim.h: "+CNT.dim.h+" CNTdim.h2: "+CNT.dim.h2);
	// CONTAINER Inner Height/ Width

	if (GLO.mdl!="mdl_toolx") {
		document.getElementById("CNTnav").style.height=(CNT.dim.h2)+"px";
		document.getElementById("CNTinfo").style.height=(CNT.dim.h2)+"px";
		document.getElementById("CNTmsg").style.height=(CNT.dim.h2)+"px";
	}
	else if (CNT.dim.h>document.getElementById("CNTall").offsetHeight) document.getElementById("CNTinfo").style.height=(CNT.dim.h2)+"px";

	// --- new Wdim - CNTall.w could change Wdim
	Wdim=new get_Wdim();
//if (dbg) shw_prop(Wdim.cont);
//if (dbg) shw_prop(Wdim.win);
//if (dbg) alert("offsetWidth: "+document.body.offsetWidth);
//if (dbg) shw_prop(Wdim.scrollbar);
	// GET Scrollbar Y
	CNT.scrollbar_y=Wdim.win.w-document.body.offsetWidth;
//if (dbg) alert("Scrollbar y: "+CNT.scrollbar_y);
	var msg_w=0;
	if (GLO.mdl!="mdl_toolx") msg_w=document.getElementById("CNTmsg").offsetWidth;
//	var info_w=parseInt(CNT.dim.w)-document.getElementById("CNTnav").offsetWidth-msg_w-CNT.scrollbar_y-0;
	var info_w=parseInt(CNT.dim.w)-document.getElementById("CNTnav").offsetWidth-msg_w-0;
//document.getElementById("onlcode").innerHTML="CNT.dim.w: "+CNT.dim.w+"<br>CNT.nav.w: "+document.getElementById("CNTnav").offsetWidth+"<br>CNT.msg.w: "+msg_w+"<br>CNT.info.w: "+info_w+"<br>CNT.scrollbar_y: "+CNT.scrollbar_y;

//if (dbg) info_w-=20;
//	if (CNT.scrollbar_y) document.getElementById("CNTall").style.width=(CNT.dim.w-CNT.scrollbar_y)+"px";
	document.getElementById("CNTinfo").style.width=info_w+"px";

	// CALCULATE Dimensions of  Overlay Container 2
	var layer2_h=Wdim.win.h-2;
	var layer2_w=CNT.dim.w-CNT.scrollbar_y;
	var l2=document.getElementById("CNT_layer2");
	l2.style.top="0px"; l2.style.left="0px";
	l2.style.width=layer2_w+"px"; l2.style.height=layer2_h+"px";

	var y=0; var x=0; var h=layer2_h; var w=layer2_w;
	
	// CENTER Box: Notification Status has changed
	DSC_ctr_boxelm(x,y,w,h,"CNTntfchksum");

}
// CHECK Container Dimensions ---------------------------------
function check_cnt_dim() {
	Wdim=new get_Wdim();
//	var otto="CONT.w: "+Wdim.cont.w+" - WIN.w: "+Wdim.win.w+" OffsetWidth: "+document.body.offsetWidth+"<br>";
//	otto+="SCROLLBAR: "+Wdim.scrollbar.x+" - SCROLLBAR.y: "+Wdim.scrollbar.y+" - OLD-SCROLLBAR.y: "+CNT.scrollbar_y+"<br>";
	if ((CNT.scrollbar_y && !Wdim.scrollbar.y) || (!CNT.scrollbar_y && Wdim.scrollbar.y)) init_cnt();
}
// ----------------------------------------------------------
// Layer2
// ----------------------------------------------------------
// Layer2 BOX - Visibility ---------------------------------------
function CNT_layer2_box() {
	if (CNT.layer2_box) { 
		document.getElementById("CNT_layer2").style.visibility="hidden";
		document.getElementById(CNT.layer2_box).style.visibility="hidden";
		delete(CNT.layer2_box);
	}
	if (arguments.length) {
		CNT.layer2_box=arguments[0];
		document.getElementById("CNT_layer2").style.visibility="visible";
		document.getElementById(CNT.layer2_box).style.visibility="visible";
	}
}
// 
// CALCULATE Dimensions of  Overlay Container 2 ------------------
function CNT_clc_layer2() {
}
// CENTER Box Element -----------------------------------------
function DSC_ctr_boxelm(x,y,w,h,id) {
	var d=document.getElementById(id); var elm=new get_Edim(d);
	var top=Math.floor(y+((h-elm.offset.h)/2)); var left=Math.floor(x+((w-elm.offset.w)/2));
	if (top<20) top=20;
	d.style.top=top+"px"; d.style.left=left+"px";
}
// EXPLODE String ---------------------------------------------
function explode(d,v) { var a=new Array(); if(!v) return(a); var i=s=0; while(1) { e=v.indexOf(d,s); if (e<0) break; a[i++]=v.substring(s,e); s=e+1; } if (s<v.length) a[i]=v.substring(s); else if (s==v.length) a[i]=""; return(a); }
// COUNT Array -----------------------------------------------
function count(a) { var i=0; for (var property in a) i++; return(i); }
//
// GET Selected Option ----------------------------------------
// !Arg 2: return(value), Arg 2=idx: return(index)
function get_selopt(id) { var opt=document.getElementById(id).options; for (var i=0; i<opt.length; i++) { if (opt[i].selected) break; }; if (arguments.length<2) return(opt[i].value); else return(i); }
//
// Bookmark Us ------------------------------------------------
function bmk() {
	// IE (also OPERA - but without functionality)
	if (navigator.appName=='Microsoft Internet Explorer') { window.external.AddFavorite(document.location, document.title); }
        else if (navigator.appName=='Netscape') { alert("After pushing OK: Hit CTRL+D to add a bookmark to this page."); }
}
//
// Check Date -------------------------------------------------
function chk_date(date) { if(!date) return false; dt_fmt=/^([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/\d{2}$/; return dt_fmt.test(date); }
//
// Show Date --------------------------------------------------
function shw_dat(lng) {
	var cl_dat=new Date(); 
	var yyyy=cl_dat.getYear(); var wd=cl_dat.getDay(); var mm=cl_dat.getMonth(); var dd=cl_dat.getDate(); var h=cl_dat.getHours(); var m=cl_dat.getMinutes();
	if (yyyy<1000) yyyy+=1900; if (dd<10) dd="0"+dd; if (h < 10) h="0"+h; if (m < 10) m="0"+m; var t=", "+h+":"+m;
	switch(lng) {
	case "de":
		var d_a=new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
		var m_a=new Array("Januar","Februar","M峺","April","Mai","Juni","Juli","August","September","October","November","Dezember");
		document.write(d_a[wd]+", "+dd+"."+m_a[mm]+" "+yyyy+t);
		break;
	case "en":
		var d_a=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
		var m_a=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
		document.write(d_a[wd]+", "+m_a[mm]+" "+dd+", "+yyyy+t);
		break;
	case "es":
		var d_a=new Array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado");
		var m_a=new Array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
		document.write(d_a[wd]+", "+dd+" de "+m_a[mm]+" de "+yyyy+t);
		break;
	}
}
//
// Round to Decimal Point -------------------------------------
function rnd_dec(val,rnd) { if (!val || !rnd) return(val); else return(Math.round(val*Math.pow(10,rnd))/Math.pow(10,rnd)); }
//
// New Language -----------------------------------------------
function newlng(id,lng) {
	var selobj=document.getElementById(id); flr="/"+lng+"/";
	for (i=0; i<selobj.options.length; i++) { if (selobj.options[i].selected) window.location=window.location.href.replace(flr, "/"+selobj.options[i].value+"/"); }
}
//
// Extend/ Shrink ---------------------------------------------
function extshr(id) {
	if (!document.getElementById(id+"_Iext").style.display) { document.getElementById(id+"_Iext").style.display="none"; document.getElementById(id+"_Ishr").style.display=""; document.getElementById(id+"_D").style.display=""; }
	else { document.getElementById(id+"_Iext").style.display=""; document.getElementById(id+"_Ishr").style.display="none"; document.getElementById(id+"_D").style.display="none"; }
}
// Swap Line Background ----------------------------------------
function swp_lbgc(line) { if (typeof line.bgColorOld=="undefined") var bgColorOld="#BBFFBB"; else var bgColorOld=line.bgColorOld; line.bgColorOld=line.style.backgroundColor; line.style.backgroundColor=bgColorOld; }
// Show Local Time --------------------------------------------
function shw_lcl_time(tmzo,fmt,id) {
	window.setTimeout("shw_lcl_time('"+tmzo+"',"+fmt+",'"+id+"')",1000);
	var t_lcl=new Date();
	// ? Preselected Timezone
	if (tmzo=="local") var ms=t_lcl.getTime(); else var ms=t_lcl.getTime()+(t_lcl.getTimezoneOffset()*60000)+tmzo*3600000;
	var t=new Date(ms); var hh=t.getHours(); var mm=t.getMinutes(); var ss=t.getSeconds();
	var t_cur=((hh<10)?"0":"")+hh; if (fmt==12) { var t_cur=""+((hh>12)?hh-12:hh); if(hh==0)t_cur="12"; } t_cur+=((mm<10)?":0":":")+mm; t_cur+=((ss<10)?":0":":")+ss; if (fmt==12) t_cur+=(hh>=12)?"pm":"am";
	if (document.getElementById(id)) document.getElementById(id).innerHTML=t_cur; 
}
// READ Cookie ------------------------------------------------
function rd_cookie(name) {
	var c=""+document.cookie; var p_n=c.indexOf(name); if (p_n==-1) return "";
	var p_c=c.indexOf(';',p_n); if (p_c==-1) p_c=c.length;
	return unescape(c.substring(p_n+name.length+1,p_c));
}
// Write Cookie -----------------------------------------------
function wrt_cookie(name,val,unit,unit_val) {
	if (unit=="" || unit_val=="") document.cookie=escape(name)+"="+escape(val)+"; path=/"; // SESSION Cookie
	else { // Persistent Cookie (Units: YY,MM,DD,hh,mm)
		var expDat=new Date (); unit_val=unit_val / 1;
		switch (unit) {
		case "YY": var yy= expDat.getYear(); if (yy < 1000) yy=yy+1900; expDat.setyear(yy+unit_val); break; // Some browsers give years since 1900/ some since 0
		case "MM": expDat.setMonth(expDat.getMonth()+unit_val); break;
		case "DD": expDat.setDate(expDat.getDate()+unit_val); break;
		case "hh": expDat.setHours(expDat.getHours()+unit_val); break;
		case "mm": expDat.setMinutes(expDat.getMinutes()+unit_val); break;
		default: alert ("Invalid Time Unit parameter for Write Cookie()"); break;
		} 
		document.cookie=escape(name)+"="+escape(val)+"; expires="+expDat.toGMTString()+"; path=/";
	}
}
// SET LOGin/ LOGout Button -----------------------------------
function login_out(logtxt_in,logtxt_out,logtxt_usr,winopnr) {
	var usrhref_exists=true;
	if (typeof(winopnr)!="undefined") {
		var logref=opener.document.getElementById("logref"); var logtxt=opener.document.getElementById("logtxt"); var logusr=opener.document.getElementById("logusr");
		if (!opener.document.getElementById("usrhref")) { usrhref_exists=false; }
		else { var usrhref=opener.document.getElementById("usrhref"); }
	}
	else {
		var logref=document.getElementById("logref"); var logtxt=document.getElementById("logtxt"); var logusr=document.getElementById("logusr");
		if (!document.getElementById("usrhref")) { usrhref_exists=false; }
		else { var usrhref=document.getElementById("usrhref"); }
	}
	c=rd_cookie("temp");
	if (c) { logref.href="../../scripts/log/logout.php"; logtxt.innerHTML=logtxt_out; }
	else { logref.href="../"+GLO.mainflr+"/Login.php"; logtxt.innerHTML=logtxt_in; }
	u=rd_cookie("user");
	if (c && !u) { logusr.innerHTML=logtxt_usr; if(usrhref_exists) usrhref.href="../"+GLO.mainflr+"/Login.php"; }
	else if (u) { logusr.innerHTML=u; if(usrhref_exists) usrhref.href="../"+GLO.mainflr+"/User.php"; }
}
//
// Newsticker -------------------------------------------------
// News Start Sequence
function nws_start() {
	if (arguments.length) {
		var odm=arguments[0].req.responseText.split("&&");
		document.getElementById("onlcode").innerHTML=odm[0];
		document.getElementById("news_text").innerHTML=odm[1];
	}
	if (typeof ENws!="undefined") return; nws_init(); if (!ENws["nws_offset"].length) return; ENws["timeout"]=setTimeout('nws_scrl()',4000);
}
// News Initilization
function nws_init() {
	ENws=new Object(); ENws["offsetTop"]=false; ENws["stop"]=false; ENws["nws_offset"]=new Array(); var ot=document.getElementById("news_text").offsetTop;
	for(var i=0;;i++) { if (!document.getElementById("nws_"+i)) break; ENws["nws_offset"][i]=document.getElementById("nws_"+i).offsetTop+ot; }
	if (!ENws["nws_offset"].length) return; ENws["offsetTop"]=ot; ENws["adjust"]=ENws["nws_offset"][0]*2;
}
// News Direction: Forward/ Backward
function nws_dir(dir) {
	if (typeof ENws=="undefined") nws_init(); if (!ENws["nws_offset"].length) return; ENws["stop"]=true;
	var t=document.getElementById("news_text"); var h=t.offsetTop?t.offsetTop:t.style.pixelTop;
	for(var i=0;i<ENws["nws_offset"].length;i++) { var j=ENws["nws_offset"][i]+h-ENws["adjust"]; if (j>=0) break; }
	if (i==ENws["nws_offset"].length) i=0;
	if (dir=="up") { if (!j) i++; if (i==ENws["nws_offset"].length) i=0; } else { i--; if (i<0) i=ENws["nws_offset"].length-1; }
	ENws["offsetTop"]=-ENws["nws_offset"][i]+ENws["adjust"]; t.style.top=ENws["offsetTop"];
	ENws["stop"]=false; if (ENws["timeout"]) { clearTimeout(ENws["timeout"]); ENws["timeout"]=""; }
	ENws["timeout"]=setTimeout('nws_scrl("start")',2000);
}
// News Scroll
function nws_scrl() {
	if (GLO.EnwsStop) return; else if (ENws["stop"]) { ENws["timeout"]=setTimeout('nws_scrl()',300); return; }
	var t=document.getElementById("news_text"); if (!t.innerHTML) return;
	var h=t.offsetHeight?t.offsetHeight:t.style.pixelHeight;
	
	if (ENws["offsetTop"]<-h) ENws["offsetTop"]=ENws["nws_offset"][0]; ENws["offsetTop"]--; t.style.top=ENws["offsetTop"];
	ENws["timeout"]=setTimeout('nws_scrl()',100);
}
//
// Notification ------------------------------------------------
// Notification Start Sequence
function ntf_start() {
//alert("NTF Check: "+NTF.ntfchk+"msec");
	if (arguments.length) {
		var odm=arguments[0].req.responseText.split("&&"); var qua=parseInt(odm[1]); var ntfchksum=parseInt(odm[2]);
//alert(odm[0]+": "+odm[1]);
		if (!qua) {
			document.getElementById("CNTmsg_news").className="ac2_0";
			set_task_btn_attr("nwssch","");
			document.getElementById("news_ntf").innerHTML="";
			document.getElementById("tsk_nwssch_btn_sup").innerHTML="";
		}
		else {
			document.getElementById("CNTmsg_news").className="ac_ntf";
			set_task_btn_attr("nwssch","ylw");
			document.getElementById("news_ntf").innerHTML=qua;
			document.getElementById("tsk_nwssch_btn_sup").innerHTML=qua;
		}
		srt_tsk();
		if (NTF.qua>=0 && qua>NTF.qua && (ntfchksum!=NTF.ntfchksum && NTF.ntfchksum>=0)) ntf_alarm();
		NTF.qua=qua; NTF.ntfchksum=ntfchksum;
	}
//	if (ntf_refresh) { ntf_refresh=false; ntf_load(); } 	else			remove NTF[refresh] 
	if (NTF.ntfchk) NTF.timeout=setTimeout('ntf_load()',NTF.ntfchk);
}
// Notification Initialization
function ntf_init() { NTF=new Object(); NTF.ntfchk=parseInt(GLO.nws_ntfchk)*1000; NTF.qua=-1; NTF.ntfchksum=-1; ntf_load(); }
// Notification Load
function ntf_load() { OnLC.odmNTF.load_XMLHttp("text&&../../odm/odmntf.php&&ntf_start"); }
// Notification SET Alarm
function ntf_alarm() {
	if (!CNT.layer2_box) CNT_layer2_box("CNTntfchksum");
	document.getElementById("CNT_layer2").innerHTML='<embed height="1px" width="1px" src="../../sounds/alarm_0.wav"></embed>';
	NTF.alarm_timeout=setTimeout('ntf_alarm()',30000);
	window.focus();
}
// Notification STOP Alarm
function ntf_stop_alarm() { CNT_layer2_box(); if (NTF.alarm_timeout) { clearTimeout(NTF.alarm_timeout); delete(NTF.alarm_timeout); } }
//
// Discover - Get Quantity of Folder Entries ------------------------
// Discover Quantity Start Sequence
function dscqua_start() {
//alert("DSC Quantity Check: "+DSC.quachk+"msec");
	if (arguments.length) {
		var odm=arguments[0].req.responseText.split("&&"); var flr=parseInt(odm[1]); var fle=parseInt(odm[2]);
		document.getElementById("tsk_mngdsc_btn_sup").innerHTML="";
		if (flr) document.getElementById("tsk_mngdsc_btn_sup").innerHTML=flr+" / ";
		if (flr || fle) document.getElementById("tsk_mngdsc_btn_sup").innerHTML+=fle;
//document.getElementById("onlcode").innerHTML=odm[3];
		srt_tsk();
	}
	if (TSK.ctl.mngdsc.refresh_qua) { TSK.ctl.mngdsc.refresh_qua=false; dscqua_load(); }
	else if (DSC.quachk) DSC.quatimeout=setTimeout('dscqua_load()',DSC.quachk);
}
// Discover Quantity Initilization
function dscqua_init() { DSC=new Object(); DSC.quachk=parseInt(GLO.dsc_quachk)*1000; dscqua_start(); }
// Discover Quantity Load
function dscqua_load() { var qry=""; if (GLO.dscqry) qry="?"+ GLO.dscqry; OnLC.odmNTF.load_XMLHttp("text&&../../odm/get_odmdscqua.php"+qry+"&&dscqua_start");  }
//
// Set Element (Box) Position ---------------------------------
function set_Epos(elm_rel,box,box_x_rel,box_y_rel,box_margin) {
// Arg: elm_rel=Relating Element; box=Box; box_y_rel,obj=Relative Position of Box to Element; box_margin
	if (chk_Emov(box.id) || arguments.length<3) { onmousedown_init_Emov(box.id); return; }

	// GET Dimensions of the Relating Element
	var elm=new get_Edim(elm_rel);
	// GET Dimensions of the Box
	var boxdim=new get_Edim(box);

	// Get XY - Position Absolute
	// --- Calculate Box fitting l,r,t,b for later use
	var box_space_l=elm.space.l+box_x_rel;
	var box_space_t=elm.space.t-box.offsetHeight-box_margin;
	var box_space_r=elm.space.r-box_x_rel-box.offsetWidth;
	var box_space_b=elm.space.b-box.offsetHeight-box_y_rel;
	if (JSdbg.posbox) { alert("Box Space l: "+box_space_l+" Space t: "+box_space_t+" Space r: "+box_space_r+" Box Space b: "+box_space_b); }

	// Calculate left-right Position
	var new_x; var new_y;
	// --- Win too small=>Box to left side
	if (Wdim.win.w<box.offsetWidth+box_margin) { new_x=elm.pos.x-elm.space.l; if (JSdbg.posbox) { alert ("NEW (Win too small=>Box to left side) - new_x: "+new_x); }	}
	// --- enough space
	else if (box_space_l>box_margin && box_space_r>box_margin) { new_x=elm.pos.x+box_x_rel;	if (JSdbg.posbox) { alert ("NEW (enough space) - new_x: "+new_x); } }
	// --- leftmax + BoxMargin
	else if (box_space_l<=box_margin) { new_x=elm.pos.x-elm.space.l+box_margin; if (JSdbg.posbox) { alert ("NEW (leftmax + BoxMargin) - new_x: "+new_x); } }
	// --- rightmax -Box - BoxMargin
	else if (box_space_r<=box_margin) { new_x=elm.pos.x+elm.space.r-box.offsetWidth-box_margin; if (JSdbg.posbox) { alert ("NEW (rightmax -Box - BoxMargin) - new_x: "+new_x); } }
	else { new_x=elm.pos.x; alert("Error: odm PosX"); }

	// Calculate top Position
	// --- enough space
	if (box_space_b>0) { new_y=elm.pos.y+box_y_rel; if (JSdbg.posbox) alert("NEW (enough space) - new_y: "+new_y);
	}
	// --- Space above
	else if (box.offsetHeight+box_margin<elm.space.t) { new_y=elm.pos.y-box.offsetHeight-box_margin; if (JSdbg.posbox) alert("NEW (Space above) - new_y: "+new_y); }
	// --- not enough space
	else { new_y=elm.pos.y+box_y_rel; if (JSdbg.posbox) alert("NEW (not enough space) - new_y: "+new_y); }

	// GET Relative Position
	new_x-=boxdim.pos.x-box.offsetLeft; new_y-=boxdim.pos.y-box.offsetTop;

	box.style.left=new_x+"px"; box.style.top=new_y+"px";

	// Release Mousedown
	onmousedown_init_Emov(box.id);
}
function onmousedown_init_Emov(boxid) { if (self["init_Emov"]) document.getElementById(boxid).onmousedown=init_Emov; else setTimeout("onmousedown_init_Emov('"+boxid+"')",10); }
//
// CHECK Emov Object ------------------------------------------
function chk_Emov(id) {
	// Create Object Emov
	if (typeof Emov=="undefined") {
		if (JSdbg.Emov) document.getElementById(JSdbg.Emov_prot).innerHTML+='<u>Crt Emov</u> ';
		Emov=new Object();
	}
	else if (JSdbg.Emov) document.getElementById(JSdbg.Emov_prot).innerHTML+="<br>Emov[prop]: "+get_prop(Emov);
	if (typeof Emov.id_curr!="undefined") Emov.id_curr=false;

	if (typeof Emov[id]!="undefined") return true;
	else {
		if (JSdbg.Emov) document.getElementById(JSdbg.Emov_prot).innerHTML+=' <u>Crt Emov['+id+']</u> ';
		Emov[id]=new Object(); // Base Object
		Emov[id].cursor0=new Object(); // Start Position
		Emov[id].delta=new Object(); // Delta Position: Cursor/Element
		Emov[id].cursor=new Object(); // Current Position
		Emov[id].dragarea=new Array(); // Dragarea
		Emov[id].drop=new Object(); // DropCoord
		Emov[id].zIndex=document.getElementById(id).style.zIndex; // SAVE zIndex
	}
	return false;
}
//
// GET Element Dimensions -------------------------------------
function get_Edim(elm) {
	// GET WinDimensions
	if (!is_set("Wdim")) Wdim=new get_Wdim();

	this.id=elm.id; this.pos=new Object();

	// Get Offset Width and Height
	this.offset=new Object(); this.offset.w=get_Estyle(elm,"offsetWidth"); this.offset.h=get_Estyle(elm,"offsetHeight");
	// IE Bug: Catch Missing Values
//	if (elm.currentStyle) { this.offset.w=elm.currentStyle.width.replace("px",""); this.offset.h=elm.currentStyle.height.replace("px",""); }
//	else { this.offset.w=elm.offsetWidth; this.offset.h=elm.offsetHeight; }

	// GET Absolute Position
	if (elm.offsetParent) {
		this.pos.x=elm.offsetLeft; this.pos.y=elm.offsetTop;
		while (elm=elm.offsetParent) { this.pos.x+=elm.offsetLeft; this.pos.y+=elm.offsetTop; }
	}

	// Scroll information (how much)
	this.scroll=new Object();
	this.scroll.x=document.documentElement.scrollLeft || document.body.scrollLeft;
	this.scroll.y=document.documentElement.scrollTop || document.body.scrollTop;

	// Get x Space left/right; Get y Space top/bottom
	this.space=new Object();
	this.space.l=this.pos.x-this.scroll.x; this.space.r=Wdim.win.w+this.scroll.x-this.pos.x;
	this.space.t=this.pos.y-this.scroll.y; this.space.b=Wdim.win.h+this.scroll.y-this.pos.y;

	if (JSdbg.Edim) {
		alert("Element pos.x: "+this.pos.x+" pos.y: "+this.pos.y);
		alert("Element scroll.x: "+this.scroll.x+" scroll.y: "+this.scroll.y);
		alert("Element space.l: "+this.space.l+" space.r: "+this.space.r+" space.t: "+this.space.t+" space.b: "+this.space.b);
	}
}
function get_Estyle(elm,attr) {
	// IE Bug: Catch Missing Values
	if (elm.currentStyle) { 
		switch (attr) {
		case "offsetTop": return elm.currentStyle.top.replace("px","")*1;
		case "offsetLeft": return elm.currentStyle.left.replace("px","")*1;
		case "offsetWidth": return elm.currentStyle.width.replace("px","")*1;
		case "offsetHeight": return elm.currentStyle.height.replace("px","")*1;
		}
	}
	else return elm[attr];
}
// GET Window Dimensions --------------------------------------
function get_Wdim() {
	this.cont=new Object();
	// Content Dimensions
	// => Firefox
	if (window.innerHeight && window.scrollMaxY) { this.cont.w=window.innerWidth+window.scrollMaxX; this.cont.h=window.innerHeight+window.scrollMaxY; }
	// => all but Explorer Mac
	else if (document.body.scrollHeight > document.body.offsetHeight) { this.cont.w=document.body.scrollWidth; this.cont.h=document.body.scrollHeight; } 
	// => Explorer 6 Strict, Mozilla (not FF), Safari
	else { this.cont.w=document.body.offsetWidth; this.cont.h=document.body.offsetHeight; }

	// Window dimensions (IE incl. scrollbar)
	this.win=new Object();
	this.win.w=self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
	this.win.h=self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

	// Window Scrollbar 0:1
	this.scrollbar=new Object();
	this.scrollbar.x=(this.cont.w<=this.win.w)?0:1; this.scrollbar.y=(this.cont.h<=this.win.h)?0:1;

	if (JSdbg.Wdim) {
		alert('this Content (with Scroll) cont.W: ' + this.cont.w + ' cont.H: ' + this.cont.h);
		alert("this win.W: "+this.win.w+" win.H: "+this.win.h);
		alert("this scrollbar.x: "+this.scrollbar.x+" scrollbar.y: "+this.scrollbar.y);
	}
}
//
// GET Cursor Position ----------------------------------------
function get_Cpos(evt,coord) {
	evt=evt || window.event;
	if (coord=="x") {
		if (evt.pageX) return evt.pageX;
		else if (evt.clientX)return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft) - (document.documentElement.clientLeft || 0) - (document.body.clientLeft || 0); else return 0;
	}
	else if (coord=="y") {
		if (evt.pageY) return evt.pageY;
		else if (evt.clientY)return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) - (document.documentElement.clientTop || 0) - (document.body.clientLeft || 0); else return 0;
	}
}
// GET Element Style ------------------------------------------
function get_ElmStyle(elm,attr) {
	var x = document.getElementById(elm);
	if (x.currentStyle) var y=x.currentStyle[attr];
	else if (window.getComputedStyle) var y=document.defaultView.getComputedStyle(x,null).getPropertyValue(attr);
	return y;
}
// CHECK Doc Element declared ---------------------------------
function is_set(id) { if (!document.getElementById(id)) return(false); else return(true); }
//
// SHOW/ Print Available Properties ---------------------------
function shw_prop(obj) { var s=""; for (var property in obj) { if (obj[property]) s+="\n "+property+" = "+obj[property]; } alert(s); }
function prt_prop(obj,id) { if (arguments.length<3) var addto="="; else var addto=arguments[2]; if (addto=="=") document.getElementById(id).innerHTML=get_prop(obj,"<br>"); else document.getElementById(id).innerHTML+=get_prop(obj,"<br>")+"<br>"; }
function get_prop(obj) {
	var lvl=0; var nline="\n"; if (arguments.length>1) nline=arguments[1]; if (arguments.length>2) lvl=arguments[2]; var lvl_n=lvl+1; var s="";
	for (var prop in obj) {
		var space=""; for (var i=0;i<lvl;i++) space+="- "; if (nline=="<br>") s+=nline+space+"<b>"+prop+"</b>"; else s+=nline+space+prop;
		if (typeof obj[prop]=="object") s+=get_prop(obj[prop],nline,lvl_n); else if (nline=="<br>") s+=" = "+rpl_HTMLchr(obj[prop]); else s+=" = "+obj[prop];
	} return(s);
}
// REPLACE special HTML Chararcter (<>) -----------------------
function rpl_HTMLchr(text) { if (!text) return; text=""+text; var text_rpl=text.replace(/</g,"&#60"); return text_rpl.replace(/>/g,"&#62"); }
//-------------------------------------------------------------
// ADD ONLOAD
//-------------------------------------------------------------
function add_onload(fn) {
	var time=0; if (arguments.length>1) { time=arguments[1]; } var fn_old=window.onload;
	if (typeof window.onload!="function") { window.onload=function () { setTimeout(fn,time); } }
	else { window.onload = function() { if (fn_old) { fn_old(); } setTimeout(fn,time); } }
}
//
// Initialize Onload Control ----------------------------------
function init_OnLC(id) {
	if (typeof OnLC=="undefined") { 
		OnLC=new Object(); OnLC.img=new Array();
		OnLC.prot=
'<div style="border: 1px solid #900000; margin-top: 5px; padding-top: 20px; padding: 5px"><b>Preload Control (<span id="OnLC_id"></span>)</b><br>\
<div class="Text" id="OnLC_p0" style="color: #008000; padding-left: 3px; padding-right: 3px"></div>\
<div class="Text" id="OnLC_p1" style="color: #008000; padding-left: 3px; padding-right: 3px"></div>\
<div class="Text" id="OnLC_p2" style="color: #008000; padding-left: 3px; padding-right: 3px"></div>\
<div class="Text" id="OnLC_p3" style="color: #008000; padding-left: 3px; padding-right: 3px"></div>\
</div>';
	}
	if (!OnLC[id]) OnLC[id]=new get_OnLC(id);
	if (arguments.length>1) OnLC[id].onload=arguments[1]; if (arguments.length>2) OnLC[id].onerror=arguments[2];

}
//
// GET OnLC Object --------------------------------------------
function get_OnLC(id) {
// object: p0=id,p1=[onload fn],p2=[onerror fn]
// load_img: p0=[img[,img]]
// load_script: p0=[fn for state],p1=script,p2=[onload fn]
// load_XMLHttp: p0=(xml|text),p1=source,p2=onload fn,p3=[onerror fn]
	this.id=id; this.total={qua:0,done:0,err:0}
	this.img={qua:0,done:0,err:0,prc:function() { if (!this.done) return 0; else return Math.ceil((this.done/this.qua)*100); } }
	this.script={qua:0,done:0,err:0,prc:function() { if (!this.done) return 0; else return Math.ceil((this.done/this.qua)*100); } }
	this.XMLHttp={qua:0,done:0,err:0,prc:function() { if (!this.done) return 0; else return Math.ceil((this.done/this.qua)*100); } }
	this.load_img=preload_img; this.load_script=preload_script; this.load_XMLHttp=get_XMLHttp;
	if (JSdbg.OnLC) document.getElementById(JSdbg.OnLC_prot).innerHTML+=OnLC.prot.replace(/OnLC_/g,"OnLC_"+id+"_");
}
//
// PRELOAD Images ---------------------------------------------
function preload_img() {
	this.total.qua+=arguments.length; this.img.qua+=arguments.length; var id=this.id; var j=OnLC.img.length;
	for (var i=0; i<arguments.length; i++) { OnLC.img[j]=document.createElement("img"); OnLC.img[j].onload=function() { onload_sts(id,this.src,"img",1,this); }; OnLC.img[j].onerror=function() { onload_sts(id,this.src,"img",0,this); }; OnLC.img[j++].src=arguments[i]; }
}
//
// PRELOAD Script ---------------------------------------------
function preload_script() {
	this.total.qua+=arguments.length; this.script.qua+=arguments.length; var id=this.id; var head=document.getElementsByTagName('head')[0];
	for (var i=0; i<arguments.length; i++) {
		var str=arguments[i]; var arg=str.split("&&"); var onld_fn=oner=""; if (arg.length>2) { var onld_fn=arg[2]; } if (arg.length>3) { var oner_fn=arg[3]; }
		var script=document.createElement('script'); script.type='text/javascript'; script.src=arg[1]; head.appendChild(script);
		chk_scriptstate(this.id,arg[1],arg[0],onld_fn,oner_fn,100);
	}
}
function chk_scriptstate(id,src,fn,onld_fn,oner_fn,time) {
	if (fn=="") onload_sts(id,src,"script",1);
	else if (typeof self[fn]=="function") { onload_sts(id,src,"script",1); exc_fn(onld_fn); }
	else if (time>2400) { onload_sts(id,src,"script",0); exc_fn(oner_fn); }
	else { time+=100; setTimeout("chk_scriptstate('"+id+"','"+src+"','"+fn+"','"+onld_fn+"','"+oner_fn+"',"+time+")",time); }
}
function exc_fn(fn) {
	if (fn && typeof self[fn]=="function") { if (arguments.length==1) self[fn](); else self[fn](arguments[1]); }
}
//
// GET XMLHttp ------------------------------------------------
function get_XMLHttp() {
	var nj=this.XMLHttp.qua; var j=nj; var id=this.id; this.total.qua+=arguments.length; this.XMLHttp.qua+=arguments.length; 
	for (var i=0; i<arguments.length; i++) { var arg=arguments[i].split("&&"); var oner_fn; if (arg.length>3) oner_fn=arg[3]; this.XMLHttp[j]={idx:j++,id:this.id,typ:arg[0],url:arg[1],onload:arg[2],onerror:oner_fn} }
	for (; nj<this.XMLHttp.qua; nj++) { opn_XMLHttp(this.XMLHttp[nj],id); }
}
//
// OPEN XMLHttpRequest Instance -------------------------------
function opn_XMLHttp(onlc,id) {
	var XMLHttp;
	try { XMLHttp=new XMLHttpRequest(); } // Mozilla / Safari / IE7
	catch (e) { // IE
		var XMLHTTP_IDS=new Array('MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP' ); 	var success=false;
		for (var i=0;i < XMLHTTP_IDS.length && !success; i++) { try { XMLHttp=new ActiveXObject(XMLHTTP_IDS[i]); success=true; } catch (e) {} }
		if (!success) { throw new Error('Unable to create XMLHttpRequest.'); }
	}
	onlc.req=XMLHttp; onlc.req.open("GET",onlc.url); onlc.req.onreadystatechange=function () { chk_XMLHttp_state(id,onlc.idx); }; onlc.req.send(null);
}
//
// CHECK XMLHttp-Request State --------------------------------
//  State: 0=Uninitialized, 1=loading, 2=Loaded, 3=Waiting, 4=Complete
function chk_XMLHttp_state(id,i) {
	if (OnLC[id].XMLHttp[i].req.readyState == 4) {
		if ((OnLC[id].XMLHttp[i].req.status != 200 && OnLC[id].XMLHttp[i].req.status != 304) || (OnLC[id].XMLHttp[i].typ!="text" && OnLC[id].XMLHttp[i].typ!="xml")) { onload_sts(id,OnLC[id].XMLHttp[i].url,"XMLHttp",0); exc_fn(OnLC[id].XMLHttp[i].onerror,OnLC[id]); }
		else { onload_sts(id,OnLC[id].XMLHttp[i].url,"XMLHttp",1); exc_fn(OnLC[id].XMLHttp[i].onload,OnLC[id].XMLHttp[i]); }
	}
	else if (JSdbg.OnLC) { document.getElementById("OnLC_"+id+"_p3").innerHTML+="-Onload XMLHttp["+i+"]): "+OnLC[id].XMLHttp[i].req.readyState+"; "; }
}
//
// ONLOAD Status ------------------------------------------------
function onload_sts(id,src,type,sts) {
	if (arguments.length>0 && OnLC[id].total.qua) {
		OnLC[id].total.done++; OnLC[id][type].done++; if (!sts) OnLC[id][type].err++;
		if (JSdbg.OnLC) {
			document.getElementById("OnLC_"+id+"_id").innerHTML=id;
			document.getElementById("OnLC_"+id+"_p0").innerHTML="Total Elements: "+OnLC[id].total.qua+" [e"+OnLC[id].total.err+"]<br>";
			document.getElementById("OnLC_"+id+"_p1").innerHTML="";
			var wrt_sts=function(id,type,text) { if (type.qua) document.getElementById("OnLC_"+id+"_p1").innerHTML+="Onload "+text+" ("+type.done+"/"+type.qua+" [e"+type.err+"]): "+type.prc()+"%<br>"; }
			wrt_sts(id,OnLC[id].img,"Images"); wrt_sts(id,OnLC[id].script,"Scripts"); wrt_sts(id,OnLC[id].XMLHttp,"XMLHttp");
			if (!sts) document.getElementById("OnLC_"+id+"_p2").innerHTML+="<br>Failure ("+type+"): "+src;
			// IE Bug: Catch permanent onload for last image
			if (arguments.length>4) { arguments[4].onload=""; arguments[4].onerror=""; }
		}
	}
	if (OnLC[id].total.qua==OnLC[id].total.done) { if (!OnLC[id].err) { exc_fn(OnLC[id].onload); }else if (OnLC[id].err) exc_fn(OnLC[id].onerror); }
}
//-------------------------------------------------------------
// odm Message
//-------------------------------------------------------------
var odmM_focus=false; var odmM_static=false; var odmM_msg=false;
//
// Show Visible/ Invisible onDemand Message Box --------------
// Par:	obj=RefObj Box,	msgnbr=constant "msg" concat with message number, resize=for resizing browser
function show_odmM(obj, msgnbr, resize) {
	odmM_static=false; close_odmM(); var box=document.getElementById('odmM');
	if ((box.style.visibility=="hidden" && resize=="noresize") || (box.style.visibility!="hidden" && resize=="resize")) {
		// Initialize Move Element // JSdbg.posbox=true; JSdbg.Edim=true; JSdbg.Wdim=true; JSdbg.Emov=true; JSdbg.Emov_prot='odmMtxt'; JSdbg.Emov_prot2='odmMmsg'; 
		set_Epos(obj,box,-150,30,20); Emov[box.id].dragarea[0]="rect,2,2,max,16"; Emov[box.id].dragarea[1]="-elm,odmMclose";
		odmM_focus=true; document.getElementById('odmMmsg').style.display="none"; document.getElementById('odmMload').style.display=""; box.style.visibility="visible";
		setTimeout("get_odmM_msg('"+msgnbr+"')",1500);
	}
}
//
// Get onDemand Message ---------------------------------------
function get_odmM_msg(msgnbr) {
	if (!odmM_focus) return;
	else if (odmM_msg==msgnbr) show_odmM_msg();
	else { init_OnLC("odmM"); OnLC.odmM.load_XMLHttp("text&&../../scripts/odm/get_odmmsg.php?lng="+GLO.lng+"&msg="+msgnbr+"&&show_odmM_msg"); }
}
//
// Show onDemand Message --------------------------------------
function show_odmM_msg() {
	if (arguments.length) {
		var odm=arguments[0].req.responseText.split("&&");
		document.getElementById('odmMhdr').innerHTML=odm[1]; document.getElementById('odmMtxt').innerHTML=odm[2]; odmM_msg=document.getElementById('odmMnbr').innerHTML=odm[0];
	}
	odmM_static=true; if (!odmM_focus) return;
	setTimeout("document.getElementById('odmMload').style.display='none'",50); setTimeout("document.getElementById('odmMmsg').style.display=''",100);
}
//
// Close on Demand Message Box --------------------------------
function close_odmM() { if (!odmM_static) { box=document.getElementById('odmM'); msg=document.getElementById('odmMmsg'); box.style.visibility="hidden"; msg.style.display="none"; odmM_focus=false; } }
//-------------------------------------------------------------
// Manage on Demand Container
//-------------------------------------------------------------
// HIDE Container on Demand -----------------------------------
function hideCNTodm() {
	document.getElementById("CNTodm").style.visibility="hidden";
	shw_win("odm","hide");
}
// SHOW Container on Demand ----------------------------------
function showCNTodm() {
	if (TSK.ctl.odm.sts=="show") {
		if (TSK.idx[0]=="odm") hideCNTodm();
		else shw_win("odm","show");
	}
	else {
		var box=document.getElementById("CNTodm");
		var top=30;
		var left=20;
		var w=Math.round(Wdim.win.w/3*2);
		var h=Wdim.win.h-top-60;
		box.style.width=w+"px";
		box.style.height=h+"px";
		document.getElementById("CNTodm1").style.height=(h-document.getElementById("CNTodm00").offsetHeight)+"px";
		// Initialize Move Element
		//JSdbg.posbox=true; JSdbg.Edim=true; JSdbg.Wdim=true; JSdbg.Emov=true; JSdbg.Emov_prot=box.id+"_prot"; JSdbg.Emov_prot2=box.id+"_prot2"; 
		set_Epos(document.getElementById("header"),box,0,top,left); box.style.visibility="visible";
		Emov[box.id].dragarea[0]="rect,2,2,max,17"; Emov[box.id].dragarea[1]="-elm,CNTodmclose";
//		Emov[box.id].ondrop=check_cnt_dim;
		Emov[box.id].ondrop=new Function("ondropCNT('odm');");
		shw_win("odm","show");
	}
}
// ONDROP Container --------------------------------------------
function ondropCNT(cnt) {
	if (cnt && TSK.idx[0]!=cnt) shw_win(cnt,'show');
	check_cnt_dim();
}
//-------------------------------------------------------------
// Manage DISCOVER Container
//-------------------------------------------------------------
// HIDE Container Discover -------------------------------------
function hideCNTdsc() {
	document.getElementById("CNTdsc").style.visibility="hidden";
	shw_win("mngdsc","hide");
}
// SHOW Container Discover ------------------------------------
function showCNTdsc() {
	if (TSK.ctl.mngdsc.sts=="show") {
		if (TSK.idx[0]=="mngdsc") hideCNTdsc();
		else shw_win("mngdsc","show");
	}
	else {
		var box=document.getElementById("CNTdsc");
		var CNTdsc00=document.getElementById("CNTdsc00");
		var CNTdscframe=document.getElementById("CNTdscframe");
		var top=30;
		var left=20;
		var w=Math.round(Wdim.win.w/3*2);
		var h=Wdim.win.h-top-60;
		box.style.width=w+"px";
		box.style.height=h+"px";
		document.getElementById("CNTdsc1").style.height=(h-CNTdsc00.offsetHeight)+"px";
		// Initialize Move Element
		//JSdbg.posbox=true; JSdbg.Edim=true; JSdbg.Wdim=true; JSdbg.Emov=true; JSdbg.Emov_prot=box.id+"_prot"; JSdbg.Emov_prot2=box.id+"_prot2"; 
		set_Epos(document.getElementById("header"),box,0,top,left); box.style.visibility="visible";
		Emov[box.id].dragarea[0]="rect,2,2,max,17"; Emov[box.id].dragarea[1]="-elm,CNTdscclose";
//		Emov[box.id].ondrop=check_cnt_dim;
		Emov[box.id].ondrop=new Function("ondropCNT('mngdsc');");
		if (CNTdscframe.style.display=="none") {
			CNTdscframe.src="../../odm/discover.php?lng="+GLO.lng+"&"+GLO.dscqry;
			CNTdscframe.style.width = w+"px";
			CNTdscframe.height = (h-CNTdsc00.offsetHeight)+"px";
			CNTdscframe.style.display=""
		}
		shw_win("mngdsc","show");
	}
}
//-------------------------------------------------------------
// Manage Tasks
//-------------------------------------------------------------
// ADD Supervision Token
function add_sv_tkn(src) {
	if (src.indexOf("?")<0) src+="?"; else src+="&"; src+="tkn="+MD5(rd_cookie("temp"))+"&cmp="+GLO.cmp;
	return(src);
}
//
// CREATE Task -------------------------------------------------
function crt_task(elm) {
TSK.dbg=0;
	if (TSK.dbg) alert("Language RtoL: "+GLO.lngrtl);
	if (elm="*all") for (elm in TSK.ctl) crt_task_sub(elm);
	else crt_task_sub(elm);
	if (TSK.dbg) alert(document.getElementById("tasks").innerHTML);
	srt_tsk();
}
//
// CREATE Task -------------------------------------------------
function crt_task_sub(elm) {
	if (TSK.btn[elm].cnt0.id) {
		crt_task_button(TSK.btn[elm]);
		// Show Button
		if (TSK.ctl[elm].sts=="hide") document.getElementById(TSK.btn[elm].cnt0.id).style.display="";
		else if (TSK.ctl[elm].sts=="show") TSK.btn[elm].onclick();
	}
	else alert("ERROR - Taskmanagement (Button): Container ID is missing");
}
//
// CREATE Task Button -------------------------------------------
function crt_task_button(child) {
	// Default
	var dft=TSK.btn.dft;

	// Container Shell 0
	var cnt0=document.createElement("div");
	if (dft.cnt0) for (var elm in dft.cnt0) cnt0[elm]=crt_task_attr(dft.cnt0[elm],elm,cnt0); // --- Default Attributes
//shw_prop(cnt0[elm]); }
	for (var elm in child.cnt0) cnt0[elm]=crt_task_attr(child.cnt0[elm],elm,cnt0); // --- Task Specific Attributes
// shw_prop(cnt0[elm]); }
	var box=document.getElementById("tasks");
	box.appendChild(cnt0);
//alert(child.cnt0.id); shw_prop(document.getElementById(child.cnt0.id));
if (TSK.dbg) alert("Container Shell 0");

	// Container Shell 1
	var cnt1=document.createElement("div"); gen_task_ids(child,"cnt1");
	if (dft.cnt1) for (var elm in dft.cnt1) cnt1[elm]=crt_task_attr(dft.cnt1[elm],elm,cnt1); // --- Default Attributes
	for (var elm in child.cnt1) cnt1[elm]=crt_task_attr(child.cnt1[elm],elm,cnt1); // --- Task Specific Attributes
//	var cnt0=document.getElementById(child.cnt0.id);
	cnt0.appendChild(cnt1);
//var x=cnt0.firstChild;
//alert("nodeType: "+x.nodeType+"; nodeName: "+x.nodeName);
//shw_prop(cnt1);

	// Background Image Left
	var btn_l=document.createElement("span"); gen_task_ids(child,"btn_l");
	if (dft.btn_l) for (var elm in dft.btn_l) btn_l[elm]=crt_task_attr(dft.btn_l[elm],elm,btn_l); // --- Default Attributes
	for (var elm in child.btn_l) btn_l[elm]=crt_task_attr(child.btn_l[elm],elm,btn_l); // --- Task Specific Attributes
	cnt1.appendChild(btn_l);
if (TSK.dbg) alert("Button BGImage Left");

	// Button: Label - Container
	var btn=document.createElement("span"); gen_task_ids(child,"btn");
	if (dft.btn) for (var elm in dft.btn) btn[elm]=crt_task_attr(dft.btn[elm],elm,btn); // --- Default Attributes
	for (var elm in child.btn) btn[elm]=crt_task_attr(child.btn[elm],elm,btn); // --- Task Specific Attributes
	cnt1.appendChild(btn);
if (TSK.dbg) alert("Button Container");

	// --- Image or Text
	if ((child.btn_img || child.btn_text) && (!child.btn || !child.btn.id)) { alert("ERROR - Taskmanagement (Button): Button ID is missing"); return; }
	if (child.btn && child.btn.id) {
		// --- Image
		if (child.btn_img) {
			var btn_img=document.createElement("img"); gen_task_ids(child,"img");
			if (dft.btn_img) for (var elm in dft.btn_img) cnt[elm]=crt_task_attr(dft.btn_img[elm],elm,btn_img); // --- Default Attributes
			for (var elm in child.btn_img) btn_img[elm]=crt_task_attr(child.btn_img[elm],elm,btn_img); // --- Task Specific Attributes
//			var btn=document.getElementById(child.btn.id);
			btn.appendChild(btn_img);
		}
if (TSK.dbg) alert("Button Image");
		// --- Text
		if (child.btn_text) { 
//child.cnt1.id=child.cnt0.id+"_text"; 
btn.innerHTML=child.btn_text; }
if (TSK.dbg) alert("Button Text");
		// --- SUP
		if (child.btn_sup) {
			var btn_sup=document.createElement("sup"); gen_task_ids(child,"btn_sup");
			if (dft.btn_sup) for (var elm in dft.btn_sup) cnt[elm]=crt_task_attr(dft.btn_sup[elm],elm,btn_sup); // --- Default Attributes
			for (var elm in child.btn_sup) btn_sup[elm]=crt_task_attr(child.btn_sup[elm],elm,btn_sup); // --- Task Specific Attributes
//			var btn=document.getElementById(child.btn.id);
			btn.appendChild(btn_sup);
		}
if (TSK.dbg) alert("Button SUP");
	}

	// Background Image Right
	var btn_r=document.createElement("span"); gen_task_ids(child,"btn_r");
	if (dft.btn_r) for (var elm in dft.btn_r) btn_r[elm]=crt_task_attr(dft.btn_r[elm],elm,btn_r); // --- Default Attributes
	for (var elm in child.btn_r) btn_r[elm]=crt_task_attr(child.btn_r[elm],elm,btn_r); // --- Task Specific Attributes
	cnt1.appendChild(btn_r);
if (TSK.dbg) alert("Button BGImage Left");
}
//
// GENERATE Task IDs -------------------------------------------
function gen_task_ids(child,elm) {
	if (!child[elm]) child[elm]=new Object();
	child[elm].id=child.cnt0.id+"_"+elm;
}
//
// SET Task Attribute --------------------------------------------
function crt_task_attr(tsk,elm,obj) {
//alert(elm);
	if (typeof tsk=="object") for (var elm2 in tsk) {
		// Language: right to left
		if (!GLO.lngrtl) obj[elm][elm2]=tsk[elm2];
		else obj[elm][elm2.replace("left","right")]=tsk[elm2].replace("left","right");
		if (TSK.dbg) alert("obj["+elm+"]["+elm2+"]="+tsk[elm2]);
	}
	else {
		switch(elm) {
		case "onclick":
			obj[elm]=new Function(tsk);
//if (typeof Emov[id].ondrop=="string") self[Emov[id].ondrop](id); else if (typeof Emov[id].ondrop=="function") Emov[id].ondrop();
			if (TSK.dbg) alert("obj["+elm+"]="+obj[elm]);
			break;
		default:
			obj[elm]=tsk;
			if (TSK.dbg) alert("obj["+elm+"]="+tsk);
			break;
		}
	}
	return(obj[elm]);	
}
//
// SORT Tasks ------------------------------------------------
function srt_tsk() {
	var lngdir="left"; if (GLO.lngrtl) lngdir="right";
	var pos=3;
	for (elm in TSK.ctl) {
		var btn=document.getElementById(TSK.btn[elm].cnt0.id);
		if (TSK.ctl[elm].sts=="hide") {
			btn.style[lngdir]=pos+"px";
			if (TSK.dbg) alert("Display ("+TSK.btn[elm].cnt0.id+"):"+" Display: "+btn.style.display+"; Width: "+btn.offsetWidth);
			pos=pos+btn.offsetWidth+3;
			btn.style.display="";
		}
		else if (TSK.ctl[elm].sts=="show") {
			btn.style[lngdir]=pos+"px";
			if (TSK.dbg) alert("Display ("+TSK.btn[elm].cnt0.id+"):"+" Display: "+btn.style.display+"; Width: "+btn.offsetWidth);
			pos=pos+btn.offsetWidth+3;
			btn.style.display="";
		}
		else if (TSK.ctl[elm].sts=="inactive") btn.style.display="none";
	}
}
//
// SORT Tasks Button Attributes ----------------------------------
function set_task_btn_attr(elm,typ) {
	var id0="tsk_"+elm;
	if (typ) typ="_"+typ;
	document.getElementById(id0+"_btn").className="task_btn"+typ;
	document.getElementById(id0+"_btn_l").className="task_btn_l"+typ;
	document.getElementById(id0+"_cnt1").className="task_cnt1"+typ;
	document.getElementById(id0+"_btn_r").className="task_btn_r"+typ;
}
//
// SHOW Window ----------------------------------------------
function shw_win(elm,ctl) {

//alert(ctl);

	// SHOW - Set first level
	if (ctl=="hide") {
		for (var e in TSK.idx) if (TSK.idx[e]==elm) { TSK.idx.splice(e,1); break; }
//alert("e: "+e+"; TSK.idx[e]: "+TSK.idx[e]+"; TSK.idx.length: "+TSK.idx.length);
		if (TSK.idx.length && e=="0") {
//alert("set new first layer");
			TSK.ctl[TSK.idx[0]].sts="show";
			set_task_btn_attr(TSK.idx[0],"focus");
		}
		// SET New Attribute
		TSK.ctl[elm].sts=ctl;
		// Attributes
		set_task_btn_attr(elm,"");
	}
	// SHOW - Set first level
	else if (ctl=="show") {
		// SET Window Layer
		document.getElementById(TSK.win[elm].cnt.id).style.zIndex="900";
		if (TSK.idx.length) {
			if (TSK.dbg) alert("TSK.idx[0]: "+TSK.idx[0]);
			set_task_btn_attr(TSK.idx[0],"");
			for (var e in TSK.idx) {
				if (TSK.dbg) alert(TSK.idx[e]);
				if (TSK.dbg) alert("TSK.win[TSK.idx[e]].cnt.id: "+TSK.win[TSK.idx[e]].cnt.id);
				if (TSK.idx[e]!=elm) document.getElementById(TSK.win[TSK.idx[e]].cnt.id).style.zIndex=(899-e);
				else TSK.idx[e]=false;
			}
			for (var e in TSK.idx) {
//alert(e+": "+TSK.idx[e]); 
				if (!TSK.idx[e]) {
//alert(e+": "+TSK.idx[e]+" - remove");
					TSK.idx.splice(e,1);
					break;
				}
			}
		}
		// New First Element 
		TSK.idx.unshift(elm);
		// SET New Attribute
		TSK.ctl[elm].sts=ctl;
		set_task_btn_attr(elm,"focus");
	}

	// Sort Tasks
	srt_tsk();
//shw_prop(TSK.idx);
}
//-------------------------------------------------------------
// HIDE/ SHOW Task Container / Windows
//-------------------------------------------------------------
// HIDE Container Help -----------------------------------------
function hideCNTpgehlp() {
	document.getElementById("CNThelp").style.visibility="hidden";
	shw_win("pgehlp","hide");
}
// SHOW Container Help -----------------------------------------
function showCNTpgehlp(query) {
	if (TSK.ctl.pgehlp.sts=="show") {
		if (TSK.idx[0]=="pgehlp") hideCNTpgehlp();
		else shw_win("pgehlp","show");
	}
	else {
		var box=document.getElementById("CNThelp");
		var top=40;
		var left=50;
		var w=Math.round(Wdim.win.w/3*2);
		var h=Wdim.win.h-top-60;
		box.style.width=w+"px";
		box.style.height=h+"px";
		// Initialize Move Element
		//JSdbg.posbox=true; JSdbg.Edim=true; JSdbg.Wdim=true; JSdbg.Emov=true; JSdbg.Emov_prot=box.id+"_prot"; JSdbg.Emov_prot2=box.id+"_prot2"; 
		set_Epos(document.getElementById("header"),box,0,top,left); box.style.visibility="visible";
		Emov[box.id].dragarea[0]="rect,2,2,max,17"; Emov[box.id].dragarea[1]="-elm,CNThelpclose";
//		Emov[box.id].ondrop=check_cnt_dim;
		Emov[box.id].ondrop=new Function("ondropCNT('pgehlp');");
		// Load Help iframe
		var src=GLO.helpurl; if (arguments.length && query) src+=query; else src+=GLO.helpquery;
		document.getElementById("CNThelpframe").src=add_sv_tkn(src);
		document.getElementById("CNThelpframe").style.display="";
		shw_win("pgehlp","show");
	}
}
// HIDE Container Company Wiki ---------------------------------
function hideCNTcmpwki() {
	document.getElementById("CNTwiki").style.visibility="hidden";
	shw_win("cmpwki","hide");
}
// SHOW Container Company Wiki ---------------------------------
function showCNTcmpwki(query) {
	if (TSK.ctl.cmpwki.sts=="show") {
		if (TSK.idx[0]=="cmpwki")  hideCNTcmpwki();
		else shw_win("cmpwki","show");
	}
	else {
		var box=document.getElementById("CNTwiki");
		var top=30;
		var left=20;
		var w=Math.round(Wdim.win.w/3*2);
		var h=Wdim.win.h-top-60;
		box.style.width=w+"px";
		box.style.height=h+"px";
		// Initialize Move Element
		//JSdbg.posbox=true; JSdbg.Edim=true; JSdbg.Wdim=true; JSdbg.Emov=true; JSdbg.Emov_prot=box.id+"_prot"; JSdbg.Emov_prot2=box.id+"_prot2"; 
		set_Epos(document.getElementById("header"),box,0,top,left); box.style.visibility="visible";
		Emov[box.id].dragarea[0]="rect,2,2,max,17"; Emov[box.id].dragarea[1]="-elm,CNTwikiclose";
//		Emov[box.id].ondrop=check_cnt_dim;
		Emov[box.id].ondrop=new Function("ondropCNT('cmpwki');");
		// Load Wiki iframe
		var src=GLO.cmpwki; if (arguments.length && query) src+=query; else src+=GLO.wikiquery;
		document.getElementById("CNTwikiframe").src=add_sv_tkn(src);
		document.getElementById("CNTwikiframe").style.display="";
		shw_win("cmpwki","show");
	}
}
// HIDE Container Swap Company --------------------------------
function hideCNTswpcmp() {
	document.getElementById("CNTswpcmp").style.visibility="hidden";
	shw_win("swpcmp","hide");
}
// SHOW Container Swap Company --------------------------------
function showCNTswpcmp() {
	if (TSK.ctl.swpcmp.sts=="show") {
		if (TSK.idx[0]=="swpcmp") hideCNTswpcmp();
		else  shw_win("swpcmp","show");
	}
	else {
		var box=document.getElementById("CNTswpcmp");
		box.style.display="";
//		var top=70; var left=70; box.style.width="400px";
		var top=30; var left=20; box.style.width="525px";
		// Initialize Move Element
		//JSdbg.posbox=true; JSdbg.Edim=true; JSdbg.Wdim=true; JSdbg.Emov=true; JSdbg.Emov_prot=box.id+"_prot"; JSdbg.Emov_prot2=box.id+"_prot2"; 
		set_Epos(document.getElementById("header"),box,0,top,left); box.style.visibility="visible";
		Emov[box.id].dragarea[0]="rect,2,2,max,17"; Emov[box.id].dragarea[1]="-elm,CNTswpcmpclose";
//		Emov[box.id].ondrop=check_cnt_dim;
		Emov[box.id].ondrop=new Function("ondropCNT('swpcmp');");
		shw_win("swpcmp","show");
	}
}

// Hide Container MSG: News/ Search -----------------------------
function hideCNTmsg() {
	if (typeof ENws!="undefined") ENws['stop']=true;
	document.getElementById("tsk_nwssch").style.display="";
	document.getElementById("CNTmsg").className="CNTmsg2";
	wrt_cookie("set","nwssch:hide;","","");
	TSK.ctl.nwssch.sts="hide";
	srt_tsk();
	init_cnt("std");
}
// Show Container MSG: News/ Search -----------------------------
function showCNTmsg() {
	document.getElementById("CNTmsg").className="CNTmsg";
	document.getElementById("CNTmsg").style.display="";
	wrt_cookie("set","nwssch:inactive;","","");
	TSK.ctl.nwssch.sts="inactive";
	srt_tsk();

	init_cnt(GLO.mdl);
	onload_odmNws();
	if (typeof ENws!="undefined") ENws['stop']=false;
}
//-------------------------------------------------------------
// SORT/ SELECT Statistics and Listings
//-------------------------------------------------------------
//
// SORT Selection --------------------------------------------
function sort_sel(fld,lst_id) {
	if (lst_id) lst_id='_'+lst_id;
	if (document.getElementById("sort"+lst_id).value!=fld) {
		document.getElementById("sort"+lst_id).value=fld;
		document.getElementById("sortdir"+lst_id).value="ASC";
	}
	else if (document.getElementById("sortdir"+lst_id).value=="ASC") document.getElementById("sortdir"+lst_id).value="DESC";
	else document.getElementById("sortdir"+lst_id).value="ASC";
	if (typeof sbm_search!="undefined" && sbm_search) document.Ssta.search.click();
	else document.Ssta.submit();
}
//
// SET Selection Start -----------------------------------------
function set_sel_start(pge) {
	var f=document[GLO.pgeselfrm]; var qpp2=f.qpp;
	if (qpp2.tagName=="INPUT") f.start.value=qpp2.value*(pge-1);
	else {
		for (var i=0; i<qpp2.options.length; i++) if (qpp2.options[i].selected) break;
		f.reset();
		f.start.value=qpp2.options[i].value*(pge-1); qpp2.options[i].selected=true;
	}
	f.submit();
}
//-------------------------------------------------------------
// SORT/ SELECT Statistics and Listings
//-------------------------------------------------------------
//
// Open PPP Window -------------------------------------------
function popup(size,url,evt) {
	// GET Window Name by Session Cookie
	var win_nbr=rd_cookie("ppp_win"); if (!win_nbr) win_nbr=1; else win_nbr=parseInt(win_nbr)+1;
	wrt_cookie("ppp_win",win_nbr,"",""); var win="popup_"+win_nbr; 
	if (size=="middle") {
		var ppp_w=Math.floor(screen.availWidth*0.8), ppp_h=Math.floor(screen.availHeight*0.8);
		var pos_x=Math.floor(screen.availWidth/ppp_w); var pos_y=Math.floor(screen.availHeight/ppp_h);
	}
	else {
		var ppp_w=375, ppp_h=300;
		var max_w=screen.availWidth; var max_h=screen.availHeight;
		var x=get_Cpos(evt,"x"); var y=get_Cpos(evt,"y");
		var pos_x=50+x; if (pos_x>(max_w-ppp_w)) pos_x=50;
		var pos_y=50+y; if (pos_y>(max_h-ppp_h)) pos_y=50;
	}
	ppp=window.open(url,win,"width="+ppp_w+",height="+ppp_h+",scrollbars=yes,screenx="+pos_x+",screeny="+pos_y+",top="+pos_y+",left="+pos_x);
	if (ppp) { if (window.focus) ppp.focus(); }
	return true;
}

