// TOOLBOX ---------------------------------------------------- //
//	Set Bookmark
//	Check Date
//	Open Popup
//	Change Language
//	Extend/ Shrink Displayarea
//	Show Local Time
//	Read/ Write Cookie
//	Show Login/ Logout Button
//	Newsticker
//	Set Element (Box) Position
//	Add onLoad
//	odmMessage

// 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(); 

// ### 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"); }
// ### scT LOG
function onload_odmLog() { document.getElementById("onlcode").innerHTML+="<div id='scT_logf'></div>"; scT_pub="ddbst-en"; init_OnLC("odmLog"); OnLC.odmLog.load_script("scT_log&&https://www.scou-t.com/scripts/log/log_fn.js&&scT_log"); }

// 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); }
// 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); }
//
// Open PPP Window --------------------------------------------
function popup(lng,id,typ,fld) {
	var url="http://www.ddbst.com/"+lng+"/ddbst/ppp.php?id="+id+"&typ="+typ+"&fld="+fld;
	var win="ppp112"; var ppp_w=375, ppp_h=300;
	var w=screen.availWidth; var h=screen.availHeight; var pos_l=(w-ppp_w)/2, pos_t=(h-ppp_h)/2;
	ppp=window.open(url,win,"width="+ppp_w+",height="+ppp_h+",scrollbars=yes,screenx="+pos_l+",screeny="+pos_t+",top="+pos_t+",left="+pos_l);
	if (ppp) { if (window.focus) ppp.focus(); } else show_odm('','msg0025','noresize');
	return false;
}
//
// 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ärz","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"; }
}
// 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="../ddbst/Login.php"; logtxt.innerHTML=logtxt_in; }
	u=rd_cookie("user");
	if (c && !u) { logusr.innerHTML=logtxt_usr; if(usrhref_exists) usrhref.href="../ddbst/Login.php"; }
	else if (u) { logusr.innerHTML=u; if(usrhref_exists) usrhref.href="../ddbst/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);
}
//
// 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;
	}
}
// 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; } }

