/** Teil der INTRANET DES FACHGEBIETS UNTERNEHMENSFüHRUNG UND LOGISTIK DER TU DARMSTADT.-Webseite
Version 1.0
(c) 2011-2012 by SCENOS GbR. Alle Rechte vorbehalten.
*/


/*@cc_on
(function(f){
window.setTimeout = f(window.setTimeout);
window.setInterval = f(window.setInterval);})(function(f){
return function(c,t){
var a = Array.prototype.slice.call(arguments,2);
if(typeof c != "function")
c = new Function(c);
return f(function(){
c.apply(this, a)}, t)}});
@*/
if(!document._getelementsbyxpath && !document.evaluate) {
document._getElementsByXPath = document._getelementsbyxpath = function(expression, parentElement) {
var results = [];
var query = document.evaluate(expression, parentElement || document,
null, XPathResult ? XPathResult.ORDERED_NODE_SNAPSHOT_TYPE : 0, null);
for (var i = 0, length = query.snapshotLength; i < length; i++)
results.push(query.snapshotItem(i));
return results;}} 
(function(){ var c = document.uniqueID && document.compatMode && !window.XMLHttpRequest && document.execCommand; try{ if(!!c) { c("BackgroundImageCache", false, true); }  }catch(e){}; })(); 
Objekt = {
rawtags : [],
erw : function(ziel,quelle,override) {
try {
if(typeof quelle['erwID'] != 'undefined' && quelle['erwID'] == ziel['erwID']) return ziel;
for(var e in quelle) {
if(ziel[e] && !override) continue;
ziel[e] = quelle[e];
ziel[e].isterw = true;}
return ziel;}
catch(f) { return false; }},
kopie : function(q,z,opt) {
if(!is_base(opt)) opt = {};
z = z || (is_array(q) ? [] : {});
prekey = !undef(opt['prekey']) ? opt['prekey'] : '';
postkey = !undef(opt['postkey']) ? opt['postkey'] : '';
for(var e in q) {
try {
if(is_object(q[e]) && !is_func(q[e])) z[prekey+e+postkey] = Objekt.kopie(q[e],{},opt);
else z[prekey+e+postkey] = q[e];}
catch(f) { continue; }}
return z;},
ajoin : function(obj,g,t) {
var s = '';
for (o in obj) s += (s != '' ? t : '')+o+g+obj[o];
return s;},
toQuery : function(obj,opt,noURIenc) {
var q = '';
if(is_base(opt)) {
if(is_array(opt['nicht'])) var nicht = opt['nicht'];
else if(is_string(opt['nicht'])) var nicht = [opt['nicht']];
else var nicht = [];
if(is_string['pre']) var pre = opt['pre'];
else var pre = '';}
else { var pre = opt; opt = {}; }
if(obj instanceof Array) obj = $O(obj);
for(o in obj) {
var tit = (!undef(pre) && pre != false) ? pre+'['+o+']' : o;
var subopt = Objekt.kopie(opt);
subopt['pre'] = tit;
if(typeof obj[o] == 'object')
if(obj[o] instanceof Function || (Window && obj[o] instanceof Window) || (typeof Screen !== 'undefined' && obj[o] instanceof Screen) || obj[o] instanceof RegExp || obj[o] instanceof Screen) continue;
else if(obj[o] instanceof Date || obj[o] instanceof String || obj[o] instanceof Number || obj[o] instanceof Boolean) q += (q != '' ? '&' : '')+tit+'='+(noURIenc ? obj[o] : encodeURIComponent(obj[o]));
else q += (q != '' ? '&' : '')+Objekt.toQuery(obj[o],tit,noURIenc);
else if(is_value(obj[o])) q += (q != '' ? '&' : '')+tit+'='+(noURIenc ? obj[o] : encodeURIComponent(obj[o]));}
return q;},
filter : function(obj,nicht) {
var neu = {};
if(!is_array(nicht)) nicht = [nicht];
for(var i in obj) {
if(nicht.inArray(i)) continue;
if(is_base(obj[i])) neu[i] = Objekt.filter(obj[i],nicht);
else if(is_value(obj)) neu[i] = obj[i];}
return neu;},
keys : function(obj) {
var a = [];
for(k in obj) a.push(k);
return a;},
flip : function(obj) {
var nobj = {};
for(var e in obj) {
if(!is_string(obj[e]) && !is_number(obj[e])) continue;
nobj[obj[e]] = e;}
return nobj;},
setze : function(obj,wert) {
for(var e in obj) obj[e] = wert;
return obj;},
prototypen : {
dom : {
generate_uid : function(i) {
var u = fstat('uid',{c:0});
if(!this.uid) this.uid = 'uid'+(u.c++);
if(i && !this.id) this.id = this.uid;
return this;},
getid : function() {
if(this.id) return this.id;
return this.generate_uid(true).id;},
verstecke : function(opt) {
if(this.style.display && this.style.display != 'none') this.olddisplay = this.style.display;
this.style.display = 'none';
if(typeof opt == 'object' && opt.src) {
$(opt).srctoggle();}
if(this.className == "buttonSubmit") {
if(this.previousSibling.className == "buttonImg") this.previousSibling.style.display = 'none';
if(this.nextSibling.className == "buttonImg") this.nextSibling.style.display = 'none';}
return this;},
zeige : function(opt) {
if(typeof this.olddisplay == 'string') this.style.display = this.olddisplay;
else if(this.getAttribute('olddisplay')) this.style.display = this.getAttribute('olddisplay');
else this.style.display = '';
if(typeof opt == 'object' && opt.src) {
$(opt).srctoggle(true);}
if(this.className == "buttonSubmit") {
if(this.previousSibling.className == "buttonImg") this.previousSibling.style.display = 'inline';
if(this.nextSibling.className == "buttonImg") this.nextSibling.style.display = 'inline';}
return this;},
toggle : function(opt) {
var that = this, z = false;
if(this.style.display == 'none') that.zeige(opt);
else that.verstecke(opt);
return this;},
srctoggle : function(z) {
if(!this.src) return;
var pos = this.getAttribute('srcpos');
var neg = this.getAttribute('srcneg');
if(pos && !neg) { neg = this.src; this.setAttribute('srcneg',neg); }
if(!pos && neg) { pos = this.src; this.setAttribute('srcpos',pos); }
if(pos && z) this.src = pos;
else if(neg && !z) this.src = neg;
return this;},
blenden : function(t,d,verz) {
this.zeigetimer(false);
d = is_number(d) ? d : 500;
verz = is_number(verz) ? verz : 0;
var alt = this.transparenz();
var that = this;
if(d == 0) { setTimeout(that.transparenz.bind(that),verz,t); return; }
d = Math.round(d / Math.abs(alt-t));
var z = 0;
if(alt > t) for(var i = alt; i >= t; i--) { this.zeigetimer(setTimeout(that.transparenz.bind(that),(z * d)+verz,i)); z++; }
else if(alt < t) for(var i = alt; i <= t; i++) { this.zeigetimer(setTimeout(that.transparenz.bind(that),(z * d)+verz,i)); z++; }
return this;},
nureinblenden : function(t,d,verz) {
this.zeigetimer(false);
if(this.style.display == 'none' || this.style.visibility == 'hidden') {
this.transparenz(0);
this.zeige();}
return this.blenden(t,d,verz);},
einblenden : function(t,d,verz) {
this.zeigetimer(false);
this.transparenz(0);
this.zeige();
this.blenden(t,d,verz);
return this;},
ausblenden : function(d,verz) {
this.zeigetimer(false);
d = d || 500;
this.blenden(0,d,verz);
var that = this;
if(!is_number(verz)) verz = 0;
this.zeigetimer(setTimeout(that.verstecke.bind(that),d+50+verz));
return this;},
zeigetimer : function(was) {
if(!is_array(this._zeigetimer)) this._zeigetimer = [];
if(is_bool(was) && was == false) {
for(var i = 0, l = this._zeigetimer.length; i<l; i++) {
clearTimeout(this._zeigetimer[i]);}}
else {
this._zeigetimer.push(was);}},
transformieren : function(b,h,x,y,dauer,typ,bezug) {
b = b || this.offsetWidth;
h = h || this.offsetHeight;
dauer = dauer || 500;
bezug = ['tl','tc','tr','cl','cc','cr','bl','bc','br'].valide(bezug);
x = x || this.offsetLeft;
y = y || this.offsetTop;
var that = this;
var altb = this.offsetWidth, alth = this.offsetHeight, altx = this.offsetLeft, alty = this.offsetTop;
var steps = parseInt(dauer / 10);
for(var i = 0; i <= steps; i++) { 
var bb = altb + (b-altb)*i/steps;
var hh = alth + (h-alth)*i/steps;
var xx = altx + (x-altx)*i/steps;
var yy = alty + (y-alty)*i/steps;
var zeit = typ != 's' ? i : (i < steps/2 ? steps*0.5*Math.sin(Math.PI/2*i/(steps/2)) : steps*(1.5 + 0.5*Math.sin(Math.PI/steps/4*(i-steps))));
setTimeout(that.position.bind(that),zeit*10,bb,hh,xx,yy,zeit);}
return this;},
position : function(b,h,x,y,z) {
$_html('log','B:'+b+', H:'+h+', X: '+x+', Y: '+y+', Z: '+z+'<br />');
this.style.width = b+'px';
this.style.height = h+'px';
this.style.left = x+'px';
this.style.top = y+'px';
return this;},
nfocus : function(c,s) {
s = s || 1;
c = c === true && this.form ? this.form : (S(c) ? S(c) : document);
var fe = ['input','select','textarea'];
var el = [];
if(fe.inArray(this.nodeName.toLowerCase())) { 
if(document.forms[0] && !document.forms[0].atabIndex) {
var ij = 0;
for(var i = 0, il = document.forms.length; i < il; i++) {
document.forms[i].atabIndex = true;
for(var j = 0, jl = document.forms[i].elements.length; j < jl; j++) {
document.forms[i].elements[j].atabIndex = ij++;}
 }}
fe = $O(fe); for(e in fe) el = el.concat($A($a(fe[e],c))); }
else el = $A($a(this.nodeName,c));
var so = [];
for(var e = 0; e < el.length; e++) { so.push([el[e], (el[e].tabIndex ? el[e].tabIndex : 0), (el[e].atabIndex ? el[e].atabIndex : 0)]); }
so.multiSort(1,2);
for(var i = 0, sl = so.length; i < sl; i++) {
if(so[i][0] == this) {
so[(i+s+sl*Math.ceil(Math.abs(s)/sl)) % sl][0].focus();
break;}}
return this;},
scrollToTop : function() { this.scrollTop = 0; return this; },
scrollToBottom : function() { this.scrollTop = this.scrollHeight-this.offsetHeight; return this; },
info_pos : function() {
var l = t = 0;
var obj = this;
if (obj.offsetParent) {
do {
l += obj.offsetLeft;
t += obj.offsetTop;} while (obj = obj.offsetParent);}
return [l,t];},
transparenz : function(t) {
with(this.style) {;
alt = 1;
try{ var alt = opacity;} catch(e) { ; }
if(alt === '') alt = 1;
if(typeof t != 'undefined') {
t = t > 100 ? 100 : (t < 0 ? 0 : t);
opacity = (t/100);
MozOpacity = (t/100);
KhtmlOpacity = (t/100);
filter = "alpha(opacity="+t+")"; }}
return alt * 100;},
zentrieren : function() {
var phoehe = 0, pbreite = 0;
try {
var breite = this.offsetWidth, hoehe = this.offsetHeight;
var phoehe = this.offsetParent.offsetHeight, pbreite = this.offsetParent.offsetWidth;} catch(e) {;}
if(phoehe == 0) phoehe = browser.hoehe();
if(pbreite == 0) pbreite = browser.breite();
style(this.id, 'position','absolute', 'left',Math.round(sigma((pbreite-breite)/2))+'px', 'width',breite+'px', 'top',Math.round(sigma((phoehe-hoehe)/2))+'px', 'height',hoehe+'px');
return this;},
akt : function(what) {
if(this.nodeName == 'SELECT') { return this.options.length > 0 ? (what === true ? this.options[this.selectedIndex > 0 && this.selectedIndex < this.options.length ? this.selectedIndex : 0] : this.options[this.selectedIndex > 0 && this.selectedIndex < this.options.length ? this.selectedIndex : 0].value) : ''; }
if(this.nodeName == 'INPUT' && this.type == 'radio') {
if(!this.name) return false;
var e = document.getElementsByName(this.name);
for (var i = 0, il = e.length; i < il; i++){
if(e[i].nodeName == 'INPUT' && e[i].type == 'radio' && e[i].checked) return e[i].value;}
return false;}
if(this.nodeName == 'INPUT'  || this.nodeName == 'TEXTAREA') { return this.value; }},
istkind : function(obj) {
obj = $(obj);
var that = this;
while(that = that.parentNode) {
if(that == obj) return true;}
return false;},
kinder : function(typ,tiefe,att) {return kinder(this,typ,tiefe,att); },
eltern : function(typ,para) {return eltern(this,typ,para); },
Ieltern : function(typ,para) { return eltern(this,typ,para,true); },
naechster : function(typ) {
var t = this;
while(t = t.nextSibling) {
if(t.nodeName) { if(t.nodeName == typ.toUpperCase()) return t; }
else return null;}
return null;},
sichtbar : function() {
if(this == window || this == document) return true;
if(this.style.visibility == 'hidden' || this.style.display == 'none') return false;
var obj = this;
while(obj = obj.parentNode) { if(!obj.style) break; if(obj.style.visibility == 'hidden' || obj.style.display == 'none') return false; }
return true;},
getByClassName : function(classname) {
if(this.getElementsByClassName) return this.getElementsByClassName(classname);
else if(document._getElementsByXPath) {
var q = ".//*[contains(concat(' ', @class, ' '), ' " + classname + " ')]";
return document._getElementsByXPath(q, this);}
else {
var arr = new Array();
var el = this.getElementsByTagName('*');
var reg = new RegExp("(^|\\s)"+classname+"(\\s|$)");
for(i = 0, j = 0, il = el.length; i < il; i++) {
if(reg.test(el[i].className)) arr[j++] = el[i];}
return arr;}},
addClass : function(cn) {
if(arguments.length > 1) cn = $AA(arguments);
if(is_array(cn)) { cn.walkcall(true,this.addClass,this); return this; }
if(!this.className) this.className = '';
var re = new RegExp("(^|\\s)"+cn+"(\\s|$)",'i')
if(!re.test(this.className)) this.className += (this.className ? ' ' : '')+cn;
return this;},
removeClass : function(cn) {
if(arguments.length > 1) cn = $AA(arguments);
if(is_array(cn)) { cn.walkcall(true,this.removeClass,this); return this; }
if(!this.className) this.className = '';
var re = new RegExp("(^|\\s)"+cn+"(\\s|$)",'gi')
this.className = this.className.replace(re,' ').replace(/ +/,' ').trim();
return this;},
hasClass : function(cn,all) {
if(arguments.length > 2 || arguments.length > 1 && is_bool(arguments[1])) cn = $AA(arguments);
if(is_array(cn)) { 
if(is_bool(cn[cn.length-1])) all = cn.pop();
else all = !!all;
for(var i = 0, il = cn.length; i < il; i++) {
if(this.hasClass(cn,!all) !== all) return !all;}
return all;}
if(!this.className) this.className = '';
var reg = new RegExp("(^|\\s)"+cn+"(\\s|$)",'i');
return reg.test(this.className);},
toggleClass : function(cn) {
if(this.hasClass(cn)) this.removeClass(cn);
else this.addClass(cn);},
hasAttribute : function(an) {
if(this.getAttribute(an) === null) return false;
for(var i = 0, il = this.attributes.length; i < il; i++) {
if(this.attributes[i].nodeName.toUpper() == an.toUpper()) {
return true;}}
return false;},
getAllTextNodes : function() {
var nodes = [];
for(var i = 0, il = this.childNodes.length; i < il; i++) {
if(this.childNodes[i].nodeType == 3) nodes.push(this.childNodes[i]);
else if(this.childNodes[i].childNodes && this.childNodes[i].childNodes.length > 0) nodes = nodes.concat($(this.childNodes[i]).getAllTextNodes());}
return nodes;},
replaceInTextNodes : function(von,nach) {
if((is_string(von) || is_number(von)) && !undef(nach)) von = {von:nach};
nodes = this.getAllTextNodes();
for(var i = 0, il = nodes.length; i < il; i++) nodes[i].nodeValue  = nodes[i].nodeValue.rreplace(von);
return this;},
setze : function(v,w) {
var o = this;
if(is_base(v)) {
for(var e in v) o[e] = v[e];}
else o[v] = w;
return this;},
set : function(v,w) {
return this.setze(v,w);},
on : function(a,b) { $on(this,a,b); return this; },
off : function(a,b) { $off(this,a,b); return this; },
stil : function(v) {
for(var s in v) {
this.style[s] = v[s];}
return this;},
loeschen : function() {
this.parentNode.removeChild(this);},
tagopt : function(tagatt,suptagatt) {
var optionen = jsonobj(this.getAttribute(tagatt));
if(!undef(suptagatt)) {
var ob = this;
while(ob = ob.parentNode) {
if(ob.getAttribute && ob.getAttribute(suptagatt)) {
optionen = Objekt.erw(jsonobj(ob.getAttribute(suptagatt)),optionen);
break;}}}
return optionen;},
appendAllChildren : function(q) {
var i = 0;
while(q.childNodes.length > i) {
if(q.childNodes[0] === this || $(this).istkind(q.childNodes[0])) { i = 1; continue; }
this.appendChild(q.childNodes[i]);}
return this;},
supportsAtt : function(att) {
var id = this.tagName+(this.tagName == 'INPUT' ? this.type : '');
if(!Objekt.rawtags[id]) {
Objekt.rawtags[id] = document.createElement(this.tagName);
if(this.tagName == 'INPUT') {
Objekt.rawtags[id].type = this.type;
if(this.type.toLower() == 'text') Objekt.rawtags[id].maxlength = undefined;}}
return !!(att in Objekt.rawtags[id]);},
erwID : 'dom'},
arrdom : function() {
var obj = new Array();
for(var e in Objekt.prototypen.dom) { obj.push(e+':'+'function() { this._each(Objekt.prototypen.dom.'+e+',arguments); return this; }'); }
for(var f in Objekt.prototypen.domspec) { for(var e in Objekt.prototypen.domspec[f]) obj.push(e+':'+'function() { for(var i = 0, il = this.length; i < il; i++) { if($(this[i]).'+e+' && $(this[i]).'+e+'.apply) $(this[i]).'+e+'.apply(this[i],arguments); } return this; }'); }
return eval('({'+obj.join(',')+'})');},
domspec : {
form : {
toDeepLevelObj : function(vo) {
return this.toX('dlobj',vo);},
toJSON : function(vo) {
return this.toX('obj',vo);},
toQuery : function(vo) {
return this.toX('',vo);},
toX : function(was,vo) {
var f = this, e = f.elements, obj = {}, s = '';
var t_comb = $O($a('sce:formopt',this));
var comb = {};
var nncount = {};
for(var i in t_comb) if(t_comb[i].getAttribute('queryasstring')) comb[t_comb[i].getAttribute('queryasstring')]='';
toXouterloop: for(var i = 0, l = e.length; i < l; i++) {
if(vo && !$(e[i]).sichtbar()) continue;
var n = e[i].name;
var v = $(e[i]).akt();
var nn = false;
if(e[i].nodeName == 'INPUT' || e[i].nodeName == 'TEXTAREA') {
switch (e[i].type) {
case 'submit':
case 'image':
case 'button':
break;
case 'checkbox':
case 'radio':
var nn = e[i].checked ? n : false, vv = e[i].checked ? v : '';
break;
default:
var nn = n, vv = v;}}
else if(e[i].nodeName == 'SELECT') {
var nn = n, vv = v;
if(e[i].getAttribute('ajxopt') && e[i].getAttribute('ajxopt').substr(0,4) == 'alle') {
var trenner = e[i].getAttribute('ajxopt').substr(4);
var opts = $O($a('option',e[i]));
vv = '';
for(var opt in opts) {
vv += (vv ? trenner : '')+opts[opt].value;}}}
else if(e[i].nodeName == 'TEXTAREA') {
var nn = n, vv = v;}
if(nn === false) continue;
if(was == 'obj') obj[nn] = vv;
else if(was == 'dlobj') {
var ann = '';
nn = nn.replace(']','');
nn = nn.split('[');
var to = obj;
var nnl = nn.length;
for(var j = 0; j < nnl; j++) {
if(nn[j] == '') {
if(undef(nncount[ann])) nn[j] = nncount[ann] = 0;
else nn[j] = ++nncount[ann];}
ann += '_'+nn[j];
if(undef(to[nn[j]])) to[nn[j]] = j + 1 >= nnl ? vv : {};
to = to[nn[j]];}
delete(to);}
else {
for(var j in comb) {
if(nn.substr(0,j.length) == j && (nn.length == j.length || nn.substr(j.length,1) == '[')) {
comb[j] += (comb[j] ? '&' : '')+'v'+nn.substr(j.length)+'='+encodeURIComponent(vv);
continue toXouterloop;}}
s += (s ? '&' : '')+nn+'='+encodeURIComponent(vv);}}
if(was == 'obj' || was == 'dlobj') return obj;
for(var j in comb) {
s += (s ? '&' : '')+'scequeryasstring['+encodeURIComponent(j)+']='+encodeURIComponent(comb[j]);}
return s;},
ajaxsubmit : function(obj,opt) {
if(!this.getAttribute('ajaxaction') && !this.getAttribute('action')) return false;
if(this.getAttribute('enctype') && this.getAttribute('target')) {
if(!S(this.getAttribute('target'))) {
var i = document.createElement('iframe');
i.id = this.getAttribute('target');
i.name = i.id;
i.style.display = 'none';
document.body.appendChild(i);}
$(this).addHidden(obj);
$(this).addHidden({'sabiopt':opt,'sabi':1});
this.submit();
return;}
var data = this.toQuery(!undef(opt) ? opt['nursichtbare'] : false);
if(undef(opt)) opt = {};
if(!undef(obj)) data += '&'+Objekt.toQuery(obj);
var ajx = new ajax();
var akt = this.getAttribute('ajaxaction');
akt = akt === null || undef(akt) ? this.action : akt;
ajx.anfrage(akt,opt,data);
return false;},
wertByName : function(name) {
var f = this.toX('obj');
return f[name];},
checkarray : function(name) {
var f = this, e = f.elements, nl = name.length;
var ret = [];
for(var i = 0, l = e.length; i < l; i++) {
if(e[i].nodeName == 'INPUT' && e[i].type == 'checkbox' && e[i].checked && e[i].name.substr(0,nl+1) == name+'[') 
ret.push(e[i].name.substring(nl+1,e[i].name.indexOf(']',nl+1)));}
return ret;},
addHidden : function(obj,pre) {
if(is_array(obj)) obj = $O(obj);
if(!is_base(obj)) return;
for(var e in obj) {
if(is_object(obj[e])) this.addHidden(obj[e],pre ? pre+'['+e+']' : e);
else { 
if(undef(obj[e])) continue;
var inp = document.createElement('input');
inp.type = 'hidden'; inp.setAttribute('type','hidden');
inp.value = obj[e];
inp.addHidden = true;
inp.name = undef(pre) ? e : pre+'['+e+']';
this.appendChild(inp);}}},
rmAddHidden : function() {
var e = $O($a('input',this));
for(var i in e) if(e.addHidden) $(e).loeschen();},
btnsperren : function() {
for(var o = 0, l = this.elements.length; o < l; o++) {
var e = this.elements[o];
if(e.nodeName == 'INPUT' && e.type == 'submit' && e.style.display != 'none') {
var i = e.cloneNode(true);
i.disabled = true;
i.value = "bitte warten...";
e.style.display = 'none';
e.parentNode.insertBefore(i,e);}}}},
tr : {
chktr : function(cls,inv,cb) {
var chk = $AA(this.kinder('input',true,{type:'checkbox'}));
if(chk.length == 0) return this;
this._chktr_cls = cls;
this._chktr_inv = inv;
this._chktr_cb = cb;
this._chktr_chk = chk[0];
$on([this,this._chktr_chk],'click',this._chktr_click);},
_chktr_click : function(e) {
e.stopPropagation();
var tr = $(this.Ieltern('tr'));
if(!tr || !tr._chktr_chk) return;
if(this !== tr._chktr_chk) { tr._chktr_chk.click(); return; }
if(tr._chktr_cb) var what = funcexec(true,tr._chktr_cb,this);
if(what === 'unveraendert') { if(is_function(this.updatenf)) setTimeout(this.updatenf.bind(this),50); return false; }
if(what === 'on') this.checked = true;
if(what === 'off') this.checked = false; 
if(tr._chktr_chk.checked != tr._chktr_inv) tr.addClass(tr._chktr_cls);
else  tr.removeClass(tr._chktr_cls);
if(is_function(this.updatenf)) setTimeout(this.updatenf.bind(this),50);}},
table : {
chktr : function(cls,inv,cb) {
$($AA($a('tr',this))).chktr(cls,inv,cb);},},
input : {
ajaxsubmit : function(obj,opt) {
if(!this.type || this.type != 'submit' && this.type != 'button') { $(this.form).ajaxsubmit(obj,opt); return; }
data = {}; if(this.name) data[this.name] = this.value;
if(!undef(obj)) data = Objekt.kopie(obj,data);
$(this.form).ajaxsubmit(data,opt);},
label : function() {
var labels = this.form.getElementsByTagName('LABEL');
for (var i = 0; i < labels.length; i++) {
if(labels[i].htmlFor == this.id) return labels[i];}
return {};},
_abhaengig : function() {
var el = $O(document.getElementsByName(this.name));
for(var e in el) $on(el[e],'click',this._abh);
this._abh();},
_abh : function() {
var el = $O(document.getElementsByName(this.name));
var abh;
for(var e in el) {
if(abh = el[e].getAttribute('abhaengig')) {
abh = $O(abh.split(' '));
for(var a in abh) { if($(abh[a])) { if(el[e].checked) $(abh[a]).zeige(); else $(abh[a]).verstecke(); } }}}},},
select : {
ajaxsubmit : function(obj,opt) { $(this.form).ajaxsubmit(obj,opt); },
add : function(value,titel,opt) {
if(is_base(titel)) { opt = titel; titel = value; }
if(!is_base(opt)) opt = {};
if(opt.unique) { var unique = opt.unique; delete(opt.unique); }
else unique = false;
if(opt.ueberschreiben) { var ueberschreiben = opt.ueberschreiben; delete(opt.ueberschreiben); }
else ueberschreiben = false;
if(opt.pos) { var pos = opt.pos; delete(opt.pos); }
else pos = false;
var konf = [];
if(unique !== false) for(var i=0, l = this.options.length; i<l; i++) {
switch(unique) {
case 'key': if(this.options[i].value == value) konf.push(i); break;
case 'titel':  if(this.options[i].text == titel) konf.push(i); break;
case 'ausschluss': if(this.options[i].value == value || this.options[i].text == titel) konf.push(i); break;
case true: if(this.options[i].value == value && this.options[i].text == titel) konf.push(i); break;}}
if(konf.length > 0 && ueberschreiben === false) return this;
konf.rnumsort();
for(var i = 0, l = konf.length; i<l; i++) this.options[konf[i]] = null;
if(is_number(pos)) {
apos = pos - konf.count('<',pos);}
else {
var apos = this.options.length;
if(konf.length && ueberschreiben == 'erster') apos = konf.min();
if(konf.length && ueberschreiben == 'letzter') apos = konf.max() - konf.length() + 1;}
var obj = this.insert(new Option(titel,value),apos);
for(i in opt) {
if(i.substr(0,2) == 'on') $on(obj,i.substr(2),opt[i]);
else if(i == stil) $(obj).stil(opt[i]);
else obj[i] = opt[i];}
return this;},
insert : function(opt,pos) {
pos.ingrenzen(0,this.options.length);
for(var i = this.options.length; i > pos; i--) this.options[i] = this.options[i-1];
this.options[pos] = opt;
return this.options[pos];},
remove : function(value) {
for(var i=0, l = this.options.length; i<l; i++) {
if(this.options[i] = null);
i--; l--;}},
sortieren : function() {
var l = this.options.length;
var arr = [];
for(var i=0; i<l; i++) arr[i] = new Option(this.options[i].text,this.options[i].value);
arr.sort(this.sortcomp);
for(i=0; i<l; i++) this.options[i] = new Option(arr[i].text,arr[i].value);},
sortcomp : function(a,b) {
return a.text != b.text ? a.text < b.text ? -1 : 1 : 0;}}}}}
Function.prototype.bind =  function() {
    if (arguments.length < 2 && undef(arguments[0])) return this;
    var __method = this, args = $AA(arguments), object = args.shift();
    return function() {
      return __method.apply(object, args.concat($AA(arguments)));
    }};
function dtrue() { return true; }
function dfalse() { return false; }
var func_static = new Object();
function $(e) {
if(arguments.length > 1) e = $A(arguments);
if(e instanceof Array) return e.each($).loesche(false);
if(typeof e != 'object') { 
if(!document.getElementById(e) || e == null) return false;
e = document.getElementById(e);}
else if(e == null || e.nodeType != 1 && e !== window && e !== document) return false;
if(e['erwID'] == 'dom') return e;
Objekt.erw(e,Objekt.prototypen.dom);
if(typeof e.nodeName == 'string' && Objekt.prototypen.domspec[e.nodeName.toLowerCase()]) Objekt.erw(e,Objekt.prototypen.domspec[e.tagName.toLowerCase()]);
return e;}
function $simple(e) { return S(e); }
function S(e) {
if(typeof e != 'object') { 
if(!document.getElementById(e) || e == null) return false;
e = document.getElementById(e);}
else if(e == null || e.nodeType != 1 && e !== window && e !== document) return false;
return e;}
function $n(n) { if(document.getElementsByName(n)[0]) return document.getElementsByName(n)[0]; return false; }
function $s(e) { try{ return typeof e != 'object' ? document.getElementById(e).style : e.style; } catch(e) { return {}; } }
function $a(e,w) { if(!undef(w)) { if(S(w) && S(w).getElementsByTagName) return S(w).getElementsByTagName(e); return []; } return document.getElementsByTagName(e); }
function $A(e) { if(e instanceof Array) return e; var a = new Array(); for(var i = 0, l = e.length; i < l; i++) { a[i] = e[i]; } return a; }
function $keys(e) { var k = []; for(i in e) k.push(i); return k; }
function $AA(e) { if(e instanceof Array) return e; if(typeof e == 'string' || typeof e == 'boolean' || typeof e == 'number') return [e]; if(typeof e == 'object' && e.length) return $A(e); return []; }
function $O(e) { if(!(e instanceof Array)) e = $AA(e); var r = {}; for(var i = 0, il = e.length; i < il; i++) { r[i] = e[i]; } return r; }
function $body() { return $a('body')[0]; }
function $html() { var a = arguments; for(var i = 0, l = a.length; i < l; i+=2) { if($(a[i]) && a[i+1]) $(a[i]).innerHTML = a[i+1]; else if($(a[i])) $(a[i]).innerHTML = ''; } }
function $_html() { var a = arguments; for(var i = 0, l = a.length; i < l; i+=2) { if(S(a[i]) && S(a[i]).appendChild && a[i+1]) { var c = document.createElement($(a[i]).nodeName == 'TABLE' || $(a[i]).nodeName == 'TBODY' || $(a[i]).nodeName == 'THEAD' || $(a[i]).nodeName == 'TFOOTER' ? 'table' : 'div'); c.innerHTML = a[i+1]; for(var j = 0, jl = c.childNodes.length; j < jl; j++) S(a[i]).appendChild(c.childNodes[0]); delete(c); } } }
function $Ehtml() {
var a = arguments; 
for(var i = 0, l = a.length; i < l; i+=2) { 
if(S(a[i]) && S(a[i]).parentNode && a[i+1]) { 
ziel = $(a[i]);
switch(ziel.parentNode.nodeName) {
case 'TABLE':
var neu = document.createElement('TABLE');
break;
case 'TBODY':
case 'THEAD':
case 'TFOOT':
var neu1 = document.createElement('TABLE');
var neu = document.createElement(ziel.parentNode.nodeName);
neu1.appendChild(neu);
break;
default:
var neu = document.createElement('DIV');}
neu.innerHTML = a[i+1];
while(neu.childNodes.length > 0) { var tmpnode = neu.childNodes[0]; ziel.parentNode.insertBefore(tmpnode,ziel); jsexec(tmpnode); }
ziel.loeschen();}}}
function sigma(x) { if(x > 0) return x; return 0; };
function bcall() { var a = $A(arguments); var f = a.shift(); var obj = a.shift(); return f.apply(obj,a); }
function undef(e) { return typeof e === 'undefined'; }
function is_bool(e) { return e === true || e === false; }
function is_undef(e) { return typeof e === 'undefined'; }
function is_func(e) { return typeof e === 'function'; } function is_function(e) { return is_func(e); }
function is_array(e) { return typeof e === 'object' && e instanceof Array; }
function is_string(e) { return typeof e === 'string' || typeof e === 'object' && e instanceof String;  }
function is_object(e) { return typeof e === 'object' }
function is_base(e) { return typeof e === 'object' && !(is_node(e) || e instanceof Function || (typeof Window !== 'undefined' && e instanceof Window) || (typeof Screen !== 'undefined' && e instanceof Screen) || e instanceof RegExp || e instanceof Screen || e instanceof Date || e instanceof String || e instanceof Number || e instanceof Boolean); }
function is_value(e) { return is_string(e) || is_array(e) || is_base(e) || is_number(e) || is_bool(e) }
function is_node(e) { return typeof Node === 'object' ? e instanceof Node : typeof e === 'object' && typeof e.nodeType === 'number' && typeof e.tagName === 'string'; }
function is_element(e,chk) { var ok = (typeof HTMLElement === 'object' ? e instanceof HTMLElement : typeof e === 'object' && e.nodeType === 1 && typeof e.tagName === 'string'); if(!ok) return false; return chk ? e.tagName == chk : ok; }
function is_argument(e) { return typeof e === 'object' && typeof e.length == 'number' && e.callee; }
function is_collection(e) { return typeof e === 'object' && typeof e.length == 'number' && e.item; }
function is_number(e) { return typeof e === 'number'; }
function is_date(e) { return typeof e === 'object' && e instanceof Date; }
function is_daterange(e) { return typeof e === 'object' && e instanceof DateRange; }
function mkobj(e) { return typeof e != 'object' ? {} : e; }
function download(datei) {
var jetzt = new Date();
var iframe = $O($a('iframe'));
for(var i in iframe) if(iframe[i].isDownloadFrame && iframe[i].isDownloadFrame + 240*1000 < jetzt.getTime()) $(iframe[i]).loeschen();
var iframe = document.createElement('iframe');
iframe.src = datei;
iframe.style.display = 'none';
iframe.isDownloadFrame = jetzt.getTime();
document.body.appendChild(iframe);}
function popup(datei) {
window.open(datei,'_blank');}
Objekt.erw(Array.prototype, {
inArray : function(wert,streng) {
var arr = this, key, streng = !!streng;
for (key in arr) if ((streng && arr[key] === wert) || (!streng && arr[key] == wert)) return true;
return false;},
valide : function(wert) {
for(var i = this.length-1; i >= 0; i--) {
if(this[i] === wert) return this[i];}
return this[i];},
each : function(f) {
for(var i = this.length - 1; i >= 0; i--) {
this[i] = f(this[i]);}
return this;},
_each : function() {
var a = $A(arguments);
a[1] = a[1] || null;
if(typeof a[0] !== 'function') return;
for(var i = this.length - 1; i >= 0; i--) {
a[0].apply(this[i],a[1]);}},
loesche : function(arr) {
if(typeof arr != 'array') arr = [arr];
for(var i = this.length - 1; i >= 0; i--) {
for(var wert in arr) { if(this[i] === arr[wert]) this.splice(i,1); }}
return this;},
walkcall : function() {
var args = $AA(arguments);
var f = args.shift();
var ref = null;
if(f === true) {
f = args.shift();
ref = args.shift();}
for(var i = 0, il = this.length; i < il; i++) {
funcexec.apply(null,(ref ? [true,f,ref,this[i]] : [f,this[i]]).concat(args));}
return this;},
uniform : function() {
var arr = [];
for(var l = this.length, i = 0; i < l; i++) {
arr = arr.concat(is_object(this[i]) && typeof this[i].length == 'number' ? $A(this[i]).uniform() : this[i]);}
return arr;},
loop : function(find,step,springe) {
if(undef(step)) step = 1;
if(undef(springe)) springe = true;
for(var i = 0, il = this.length - 1; i <= il; i++) {
if(this[i] == find) {
var item = springe ? (i+step+this.length*Math.abs(step)) % this.length : Math.min(Math.max(0,i+step),this.length);
return this[item];}}
return this[0];},
summe : function(op,bed) {
if(undef(op)) {
for(var i=0,sum=0; i<this.length; sum+=this[i++]);
return sum;}
var c = 0;
for(var i=0; i<this.length; i++) {
switch(op) {
case '<': if(this[i] < bed) c += this[i]; break;
case '<=': if(this[i] <= bed) c += this[i]; break;
case '>': if(this[i] > bed) c += this[i]; break;
case '>=': if(this[i] >= bed) c += this[i]; break;
case '=': case '==': if(this[i] == bed) c += this[i]; break;
case '===': if(this[i] === bed) c += this[i]; break;
case '!=': case '<>': if(this[i] != bed) c += this[i]; break;}}
return c;},
max : function() { return Math.max.apply({},this); },
min : function() { return Math.min.apply({},this); },
count : function(op,bed) {
if(undef(op)) return this.length;
var c = 0;
for(var i=0; i<this.length; i++) {
switch(op) {
case '<': if(this[i] < bed) c++; break;
case '<=': if(this[i] <= bed) c++; break;
case '>': if(this[i] > bed) c++; break;
case '>=': if(this[i] >= bed) c++; break;
case '=': case '==': if(this[i] == bed) c++; break;
case '===': if(this[i] === bed) c++; break;
case '!=': case '<>': if(this[i] != bed) c++; break;}}
return c;},
numsort : function() { this.sort(function(a,b) {return a - b;}); },
rnumsort : function() {this.sort(function(a,b) {return a - b;}).reverse(); },
multiSort : function() {
for(var i = arguments.length - 1; i >= 0; i--) {
this.sort(function(a,b) {
if(!a[i] && !b[i]) return 0;
if(!a[i]) return -1;
if(!b[i]) return 1;
return a[i] == b[i] ? 0 : (a[i] < b[i] ? -1 : 1);});}
return this;},
process : function(v,n) {
for(var i = 0, l = this.length; i<l; i++) {
if(!undef(v) && v !== null && v != false) this[i] = v+this[i];
if(!undef(n) && v !== null && n != false) this[i] += n;}
return this;},
pad : function(wielang,womit) {
if(this.length >= wielang) return this;
if(undef(womit)) womit = false;
for(var i=this.length; i < wielang; i++) {
this.push(womit);}
return this.toString();},
setze : function(werte,modus) {
modus = ['schleife','leer','letzter'].valide(modus);
if(modus == 'leer') {
if(is_array(werte)) werte.push({});
else if(is_base(werte)) for(var i in werte) if(is_array(werte[i])) werte[i].push(undefined);}
var j = -1;
for(var i = 0, l = this.length; i<l; i++) {
j++;
if(is_array(werte)) {
if(modus == 'leer' && j >= werte.length-1) continue;
for(var k in werte[modus == 'schleife' ? j % werte.length : Math.min(j,werte.length-1)]) {
if(k.search(/^style\./) >= 0) this[i].style[k.replace(/^style\./,'')] = werte[j][k];
else this[i][k] = werte[j][k];}}
else if(is_base(werte)) {
for(var k in werte) {
if(k.search(/^style\./) >= 0)  {
if(is_array(werte[k])) { if(modus == 'leer' && j >= werte[k].length-1) continue; this[i].style[k.replace(/^style\./,'')] = werte[k][modus == 'schleife' ? j % werte[k].length : Math.min(j,werte[k].length-1)]; }
else this[i].style[k.replace(/^style\./,'')] = werte[k];}
else {
if(is_array(werte[k])) { if(modus == 'leer' && j >= werte[k].length-1) continue; this[i][k] = werte[k][modus == 'schleife' ? j % werte[k].length : Math.min(j,werte[k].length-1)]; }
else this[i][k] = werte[k];
if(k != 'innerHTML' && $(this[i]).supportsAtt(k)) {
if(is_array(werte[k])) this[i].setAttribute(k,werte[k][modus == 'schleife' ? j % werte[k].length : Math.min(j,werte[k].length-1)]);
else this[i].setAttribute(k,werte[k]);}}}}}
return this;}});
Objekt.erw(Array.prototype,Objekt.prototypen.arrdom());
Objekt.erw(String.prototype, {
trim : function() {
var x=this;
x=x.replace(/^\s*(.*)/, "$1");
x=x.replace(/(.*?)\s*$/, "$1");
return x;},
pad : function(len,ch,pos) {
ch = undef(ch) ? ' ' : ch;
pos = ['links','rechts'].valide(pos);
if(this.length >= len) return this;
if(pos == 'links') return ch.repeat(len-this.length)+this;
else return this+ch.repeat(len-this.length);},
repeat : function(anzahl) {
var t = '';
for(var i = 1; i <= anzahl; i++) t += this;
return t;},
toLower : function() { return this.toLowerCase(); },
toUpper : function() { return this.toUpperCase(); },
toFloat : function() {
return parseFloat(this.replace(/[^\-,0-9]/g,'').substr(0,1) == '-' ? -1 : 1) * parseFloat(this.replace(/[^,0-9]/g,'').replace(',','.'));},
numberFormat : function(s,d,t) {
return parseFloat(this).numberFormat(s,d,t);},
rreplace : function(o) {
if(!is_base(o)) return this;
var x = this;
for(var e in o) X = x.replace(e,o[e]);
return x;},
strtr : function(repl) {
var str = this;
for(var i = str.length-1; i >= 0; i--) {
if(i < str.length) {
var ch = str[i]+str[i+1];
if(ch in repl) str = str.substr(0,i)+repl[ch]+str.substr(i+2);}
var ch = str[i];
if(ch in repl) str = str.substr(0,i)+repl[ch]+str.substr(i+1);}
return str;
    }});
Objekt.erw(Number.prototype, {
numberFormat : function(st,dsep,tsep) {
n = !isFinite(+this) ? 0 : +this;
st = !isFinite(+st) ? 0 : Math.abs(st);
var tsep = undef(tsep) ? ',' : tsep;
var dsep = undef(dsep) ? ',' : dsep;
n = (st > 0) ? n.toFixed(st) : Math.round(n).toFixed(st);
var neg = n < 0;
n = Math.abs(n).toFixed(st);
var nn = n.split('.');
n = '';
for(var i = nn[0].length - 1; i >= 0; i--) {
n = nn[0][i]+(n.length && (n.length + 1) % 4 == 0 ? tsep : '')+n;}
return (neg ? '-' : '')+n+(st > 0 ? dsep+nn[1] : '');},
ingrenzen : function(u,o) {
var z = this;
if(u !== false && z < u) z = u;
if(o !== false && !undef(o) && z > o) z = 0;
return z;}});
Objekt.erw(Date.prototype, {
getDayOfYear : function() {
var base = new Date(this.getFullYear(),0,1);
return Math.ceil((this - base) / 86400000);},
getDaysInMonth : function() {
return 32 - new Date(this.getFullYear(), this.getMonth(), 32).getDate();},
getDayOfWeek : function() {
return (this.getDay()+6) % 7 + 1;},
getWeekOfYear : function() {
var base = new Date(this.getFullYear(),0,1);
var woche = Math.floor((this.getDayOfYear() + 1 + (base.getDayOfWeek() - 8)) / 7);
if(base.getDayOfWeek() <= 4) woche++;
return woche;},
isLeapYear : function() {
return (this.getFullYear() % 4) == 0 && ((this.getFullYear() % 100) != 0 || (this.getFullYear() % 400 == 0)) ? 1 : 0;},
addieren : function(y,m,d,h,i,s) {
return new Date(this.getFullYear()+makeInt(y),this.getMonth()+makeInt(m),this.getDate()+makeInt(d),this.getHours()+makeInt(h),this.getMinutes()+makeInt(i),this.getSeconds()+makeInt(s));},
kopie : function() {
var d = new Date();
d.setTime(this.getTime());
return d;},
setze : function(y,m,d,h,i,s,ms) {
var heute = new Date();
if(!undef(y) && y !== false) this.setYear(y === true ? heute.getYear() : y);
if(!undef(m) && m !== false) this.setMonth(m === true ? heute.getMonth() : m);
if(!undef(d) && d !== false) this.setDate(d === true ? heute.getDate() : d);
if(!undef(h) && h !== false) this.setHours(h === true ? heute.getHours() : h);
if(!undef(i) && i !== false) this.setMinutes(i === true ? heute.getMinutes() : i);
if(!undef(s) && s !== false) this.setSeconds(s === true ? heute.getSeconds() : s);
if(!undef(ms) && ms !== false) this.setMilliseconds(ms === true ? heute.getMilliseconds() : ms);
return this;},
parsen : function(str) {
var treffer;
if((treffer = str.match(/^([0-9]{2,2}?)([0-9]{2,2})\-([0-1][0-9])\-([0-3][0-9])(?: ([0-2][0-9])\:([0-5][0-9])(?:\:([0-5][0-9]))?)?$/)).length > 0) {
if(!undef(treffer[5])) var datum = new Date(treffer[1].length > 0 ? treffer[1]+treffer[2] : (makeInt(treffer[2]) > 40 ? 1900 : 2000) + parseInt(treffer[2]),makeInt(treffer[3])-1,makeInt(treffer[4]),makeInt(treffer[6]),makeInt(treffer[7]),makeInt(treffer[8]));
else var datum = new Date(treffer[1].length > 0 ? treffer[1]+treffer[2] : (makeInt(treffer[2]) > 40 ? 1900 : 2000) + parseInt(treffer[2]),makeInt(treffer[3])-1,makeInt(treffer[4]));}
else if((treffer = str.match(/^([0-2][0-9])\:([0-5][0-9])(?:\:([0-5][0-9]))?$/)).length > 0) {
var datum = new Date(0,0,0,makeInt(treffer[6]),makeInt(treffer[7]),makeInt(treffer[8]));}
else if((treffer = str.match(/^([0-9]{1,2})\.([0-9]{1,2}).([0-9]{0,2}?)([0-9]{2,2})(?:\s+([0-9]{1,2}):([0-9]{2,2}):?([0-9]{0,2}))?$/)).length > 0) {
if(!undef(treffer[5])) var datum = new Date(treffer[3].length > 0 ? treffer[3]+treffer[4] : (makeInt(treffer[4]) > 40 ? 1900 : 2000) + parseInt(treffer[4]),makeInt(treffer[2])-1,makeInt(treffer[1]),makeInt(treffer[6]),makeInt(treffer[7]),makeInt(treffer[8]));
else var datum = new Date(treffer[3].length > 0 ? treffer[3]+treffer[4] : (makeInt(treffer[4]) > 40 ? 1900 : 2000) + parseInt(treffer[4]),makeInt(treffer[2])-1,makeInt(treffer[1]));}
this.setTime(datum.getTime());
return this;},
format : function(format) {
var repl = {j : this.getDate().toString(),
d : this.getDate().toString().pad(2,'0','links').toString(),
D : this.vars.de.wochentagekurz[(this.getDay()+6) % 7],
l : this.vars.de.wochentage[(this.getDay()+6) % 7],
N : this.getDayOfWeek().toString(),
m : (this.getMonth()+1).toString().pad(2,'0','links').toString(),
n : (this.getMonth()+1).toString(),
F : this.vars.de.monate[this.getMonth()],
M : this.vars.de.monatekurz[this.getMonth()],
Y : this.getFullYear().toString(),
H : this.getHours().toString().pad(2,'0','links').toString(),
g : ((this.getHours() % 12) == 0 ? 12 : this.getHours() % 12).toString(),
h : ((this.getHours() % 12) == 0 ? 12 : this.getHours() % 12).toString().pad(2,'0','links').toString(),
G : this.getHours().toString(),
a : this.getHours() >= 12 ? 'pm' : 'am',
A : this.getHours() >= 12 ? 'PM' : 'AM',
i : this.getMinutes().toString().pad(2,'0','links').toString(),
s : this.getSeconds().toString().pad(2,'0','links').toString()};
if(format === true || is_string(format) && format.indexOf('t') >= 0) repl['t'] = this.getDaysInMonth();
if(format === true || is_string(format) && format.indexOf('L') >= 0) repl['L'] = this.isLeapYear().toString();
if(format === true || is_string(format) && format.indexOf('W') >= 0) repl['W'] = this.getWeekOfYear();
if(format === true || is_string(format) && format.indexOf('z') >= 0) repl['z'] = this.getDayOfYear();
if(format === false || format === true) return repl;
return format.strtr(repl);},
vars :  { de : {wochentage :['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'],
wochentagekurz :['Mo','Di','Mi','Do','Fr','Sa','So'],
monate :['Januar','Februar','MÃ¤rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],
monatekurz :['Jan','Feb','Mrz','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'] }}});
function DateRange(date1,date2) {
this.setze(date1,date2);}
DateRange.prototype.setze = function(date1,date2) {
this.von = is_date(date1) ? new Date(date1.getTime()) : new Date();
this.bis = is_date(date2) ? new Date(date2.getTime()) : new Date(this.von.getTime());
this.von.setze(false,false,false,0,0,0,0);
this.bis.setze(false,false,false,0,0,0,0);
if(this.von.getTime() > this.bis.getTime()) {
var temp = new Date(this.von.getTime());
this.von = new Date(this.bis.getTime());
this.bis = new Date(temp.getTime());}}
DateRange.prototype.enthaelt = function(da) {
var t = new Date(da.getFullYear(),da.getMonth(),da.getDate());
return (t.getTime() >= this.von.getTime() && t.getTime() <= this.bis.getTime());}
DateRange.prototype.format = function(f,trenner) {
if(undef(f)) f = 'd.m.Y';
if(undef(trenner)) trenner = '-';
return this.von == this.bis ? this.von.format(f) : this.von.format(f)+trenner+this.bis.format(f);}
DateRange.prototype.cformat = function(f,trenner,trennerf) {
formatvorlagen = { 'd.m.Y' : ['d1.m1.Y1','d1./d2.m1.Y1','d1.-d2.m1.Y1','d1.m1./d2.m2.Y1','d1.m1.-d2.m2.Y1','d1.m1.Y1/d2.m2.Y2','d1.m1.Y1-d2.m2.Y2'] }
if(undef(f)) f = 'd.m.Y';
if(undef(trenner)) trenner = '-';
if(undef(trennerf)) trennerf = '/';
if(!is_base(f) && f in formatvorlagen) f = formatvorlagen[f];
if(!is_array(f)) return this.von.format(f);
var repl = Objekt.kopie(this.bis.format(false),Objekt.kopie(this.von.format(false),{},{postkey:1}),{postkey:2});
var index = 0;
var offset = 0;
if(this.von.addieren(0,0,1).getTime() == this.bis.getTime()) offset = -1;
if(this.von.getTime() == this.bis.getTime()) index = 0;
else if(this.von.getFullYear() == this.bis.getFullYear() && this.von.getMonth() == this.bis.getMonth()) index = 2;
else if(this.von.getFullYear() == this.bis.getFullYear()) index = 4;
else index = 6;
return f[index+offset].strtr(repl);}
DateRange.prototype.verschmelzen = function(dr) {
var t1 = this.von.getTime() < dr.von.getTime() ? this : dr;
var t2 = this.von.getTime() < dr.von.getTime() ? dr : this;
if(t1.von.getTime() == t2.von.getTime() && t1.bis.getTime() == t2.bis.getTime()) return true;
if(t1.bis.getTime() >= t2.von.addieren(0,0,-1).getTime()) return new DateRange(t1.von,new Date(Math.max(t1.bis.getTime(),t2.bis.getTime())));
return false;}
DateRange.prototype.kopie = function() {
return new DateRange(new Date(this.von.getTime()),new Date(this.bis.getTime()));}
function DateRangeCollection() {
this.dateranges = [];
for(var i=0, j=arguments.length; i < j; i++) {
this.hinzufuegen(arguments[i]);}}
DateRangeCollection.prototype.hinzufuegen = function(dr,dr2) {
if(is_date(dr)) dr = new DateRange(dr,dr2);
if(!is_daterange(dr)) return false;
var erg = false;
for(var i = 0, j = this.dateranges.length; i < j; i++) {
var t = this.dateranges[i].verschmelzen(dr);
if(is_daterange(t)) { 
this.dateranges.splice(i,1);
this.hinzufuegen(t.kopie()); 
return;}
else erg |= t;}
if(this.dateranges.length == 0 || !erg) this.dateranges.push(dr.kopie());
this.dateranges.sort(function(a,b){return a.von.getTime()-b.von.getTime();});}
DateRangeCollection.prototype.loeschen = function(dr,dr2) {
if(is_date(dr)) dr = new DateRange(dr,dr2);
if(!is_daterange(dr)) return false;
for(var i = 0, j = this.dateranges.length; i < j; i++) {
var akt = this.dateranges[i];
if(dr.von.getTime() <= akt.von.getTime() && dr.bis.getTime() >= akt.bis.getTime()) {
this.dateranges[i] = false;}
else if(dr.von.getTime() > akt.von.getTime() && dr.bis.getTime() < akt.bis.getTime()) {
this.dateranges[i] = [new DateRange(akt.von,dr.von.addieren(0,0,-1)),new DateRange(dr.bis.addieren(0,0,1),akt.bis)];}
else if(dr.von.getTime() <= akt.von.getTime() && dr.bis.getTime() >= akt.von.getTime()) {
this.dateranges[i] = new DateRange(dr.bis.addieren(0,0,1).getTime(),akt.bis.getTime());}
else if(dr.von.getTime() <= akt.bis.getTime() && dr.bis.getTime() >= akt.bis.getTime()) {
this.dateranges[i] = new DateRange(akt.von.getTime(),dr.von.addieren(0,0,-1).getTime());}}
this.dateranges = this.dateranges.uniform().loesche(false);
this.dateranges.sort(function(a,b){return a.von.getTime()-b.von.getTime();});}
DateRangeCollection.prototype.enthaelt = function(da) {
for(var i = 0, j = this.dateranges.length; i < j; i++) {
if(this.dateranges[i].enthaelt(da)) return true;}
return false;}
DateRangeCollection.prototype.format = function(f,rangetrenner,eintragstrenner) {
if(undef(eintragstrenner)) eintragstrenner = '; ';
var t = [];
for(var i = 0, j = this.dateranges.length; i < j; i++) {
t.push(this.dateranges[i].format(f,rangetrenner));}
return t.join(eintragstrenner);}
DateRangeCollection.prototype.cformat = function(f,eintragstrenner) {
if(undef(eintragstrenner)) eintragstrenner = '; ';
var t = [];
for(var i = 0, j = this.dateranges.length; i < j; i++) {
t.push(this.dateranges[i].cformat(f));}
return t.join(eintragstrenner);}
function parseDate(str,m,d,h,i,j) {
if(makeInt(m) > 0) {
return new Date(str,m-1,makeInt(d),makeInt(h),makeInt(i),makeInt(j));}
else {
var datum = new Date();
return datum.parsen(str);}}
function makeInt(wert) {
wert = parseInt(wert);
if(isNaN(wert)) wert = 0;
return wert;}
function define() {
if(!arguments[0]) return false;
var obj = arguments[0];
for(var i = 1, il = arguments.length -1; i<il; i++) {
if(undef(obj[arguments[i]])) obj[arguments[i]] = i + 1 >= il ? arguments[i+1] : {};
obj = obj[arguments[i]];}
return obj;}
function function_exists(f) {
if (is_string(f)) return typeof this.window[f] == 'function';
return (f instanceof Function);}
function funcexec() {
var args = $AA(arguments);
if(!args.length) return null;
var autoweiter = (args[args.length-1] === true);
if(autoweiter) autoweiter = args.pop();
var f = args.splice(0,1)[0];
var ref = null;
if(f === true) {
f = args.splice(0,1)[0];
ref = args.splice(0,1)[0];}
if(undef(f)) return f;
else if(is_func(f)) return f.apply(ref,args);
else if(is_string(f) && f.indexOf('(') < 0) {
try { eval('var a = '+f); }
catch(e) { var notex = true; }
if(autoweiter && (notex || !is_func(a))) {
if(!is_array(funcexec.todo)) {
funcexec.todo = [];
funcexec.doall = function() { var arr = funcexec.todo; funcexec.todo = []; window.clearInterval(funcexec.itv); funcexec.itv = null; for(var i = 0, l = arr.length; i<l; i++) { funcexec.apply(null,arr[i]); } };}
if(undef(funcexec.itv) || funcexec.itv === null) funcexec.itv = window.setInterval(funcexec.doall,1000);
funcexec.todo.push($AA(arguments));
return null;}
else return a.apply(ref,args);}
else if(is_string(f)) {
try { eval('var a = function() { '+f+' }'); }
catch(e) { return eval(f); }
return a.apply(ref,$AA(arguments));}
else if(is_array(f)) return f.walkcall.apply(ref,$AA(arguments));}
function funcexec_array(f,arr,a,b,c) {
if(f === true) { f = [f,arr,a]; arr = b; a = c; }
else f = [f];
if(is_array(arr) || is_argument(arr)) f = f.concat($AA(arr));
if(arr === true || a == true) f = f.concat([true]);
funcexec.apply(null,f);}
function safeeval(t) {
try { return eval(t); }
catch(e) { return null; }}
browser = {
hoehe : function() {
if(window.innerHeight) return window.innerHeight;
if(document.body.clientHeight) return document.body.clientHeight;
if(document.documentElement.clientHeight) return document.documentElement.clientHeight;
return 0;},
breite : function() {
if(window.innerWidth) return window.innerWidth;
if(document.body.clientWidth) return document.body.clientWidth;
if(document.documentElement.clientWidth) return document.documentElement.clientWidth;
return 0;}}
function $on(obj,event,aktion) {
if(is_array(obj)) {
for(var i = 0, l = obj.length; i<l; i++) $on(obj[i],event,aktion);
return;}
if(is_array(event)) {
for(var i = 0, l = event.length; i<l; i++) $on(obj,event[i],aktion);
return;}
if(is_object(event)) {
for(var e in event) { $on(obj,e,event[e]);  }
return;}
if(is_array(aktion)) {
for(var i = 0, l = aktion.length; i<l; i++) $on(obj,event,aktion[i]);
return;}
obj = $simple(obj);
if(obj === false || !aktion) return false;
if(!obj._strevents) obj._strevents = {};
if(is_string(aktion) && aktion.replace(/[a-z0-9_\$]/g,'').length > 0) {
if(!obj.__on_c) obj.__on_c = 0;
if(!obj.__on_sf) obj.__on_sf = {};
if(obj._strevents[aktion] > 0) return;
var c = obj.__on_c++;
eval('obj.__on_sf[c] = function() {'+aktion+'}');
var string = aktion;
aktion = obj.__on_sf[c];}
else if(is_string(aktion)) {
try { eval('var a = '+aktion); }
catch(e) {
if(!is_array($on.todo)) {
$on.todo = [];
$on.doall = function() { var arr = $on.todo; $on.todo = []; window.clearInterval($on.itv); $on.itv = null; for(var i = 0, l = arr.length; i<l; i++) { $on(arr[i]['obj'],arr[i]['event'],arr[i]['aktion']); } };}
if(undef($on.itv) || $on.itv == null) $on.itv = window.setInterval($on.doall,1000);
return $on.todo.push({'obj':obj,'event':event,'aktion':aktion});}
aktion = a;}
if (!aktion._evID) aktion._evID = ++$on.evID;
try {
var aktionen = obj._events[event];
if (!aktionen) {
aktionen = obj._events[event] = {};
if (obj["on" + event]) aktionen[0] = obj["on" + event];}}
catch(e) { 
obj._events = new Object(); 
var aktionen = obj._events[event] = new Object; 
if (obj["on" + event]) aktionen[0] = obj["on" + event];}
aktionen[aktion._evID] = aktion;
if(is_string(string)) obj._strevents[string] = aktion._evID;
if(undef($on.ex)) {
$on.ex = function(event) {
var r = true;
event = event || $on.ex_w3c(window.event);
if(!event.target && window.hEvent) event.target = window.hEvent.srcElement ? window.hEvent.srcElement : window.hEvent.originalTarget;
if(event.pageX) {
event.absoluteX = event.pageX; event.absoluteY = event.pageY; }
else{
event.absoluteX = event.clientX + document.documentElement.scrollTop;
event.absoluteY = event.clientY + document.documentElement.scrollTop; }
var aktionen = this._events[event.type];
for (var i in aktionen) {
this._ev = aktionen[i];
if(this._ev(event) === false) r = false;}
return r;};
$on.ex_w3c = function (event) {
event = event || {};
event.preventDefault = $on.ex_w3c.preventDefault;
event.stopPropagation = $on.ex_w3c.stopPropagation;
return event;};
$on.ex_w3c.preventDefault = function() { this.returnValue = false; };
$on.ex_w3c.stopPropagation = function() { this.cancelBubble = true; };
$on.evID = 2;}
obj["on" + event] = $on.ex;}
function $ison(obj,event,aktion) {
if(!aktion || !aktion._evID) return false;
return(obj._events && obj._events[event] && obj._events[event][aktion._evID]);}
function $off(obj,event,aktion) {
if(!aktion._evID) return false;
if (obj._events && obj._events[event]) delete obj._events[event][aktion._evID];}
function stopDefault(e) {
    if (e && e.preventDefault) {
        e.preventDefault();
    }
    else {
        window.event.returnValue = false;
    }
    return false;}
function cssondemand(url,redo) {
var stat = fstat('cssondemand',{urls:new Array(),c:0});
if(url === true) { stat.urls.walkcall(cssondemand,true,false); return; }
if(url && stat.urls.inArray(url) && redo === false) {
var alt = url ? S('cssod'+url) : false;
if(alt && $(alt).loeschen) $(alt).loeschen();
stat.urls.loesche(url);}
if(!url || stat.urls.inArray(url) && !redo) return;
if(url && !stat.urls.inArray(url)) stat.urls.push(url);
var alt = S('cssod'+url);
var css = document.createElement('link');
css.setAttribute('id','cssod'+url);
css.setAttribute('type','text/css');
css.setAttribute('rel','stylesheet');
css.setAttribute('href',url+(url.indexOf('?') > 0 ? '&' : '?')+'cssondemand='+(stat.c++));
document.body.appendChild(css);
if(alt) alt.parentNode.removeChild(alt);}
function jsondemand(url,text) {
var stat = fstat('jsondemand',{urls:new Array(),c:0});
if(url === true) { stat.urls.walkcall(jsondemand,true,false); return; }
if(url && stat.urls.inArray(url) && text === false) {
var alt = url ? S('jsod'+url) : false;
if(alt && $(alt).loeschen) $(alt).loeschen();
stat.urls.loesche(url);}
if(url && stat.urls.inArray(url) && text !== true) return;
if(url && !stat.urls.inArray(url)) stat.urls.push(url);
var alt = url ? S('jsod'+url) : false;
var js = document.createElement('script');
js.setAttribute('id','jsod'+((url) ? url : new Date().getTime()));
js.setAttribute('type','text/javascript');
if(url !== false) js.setAttribute('src',url+(url.indexOf('?') > 0 ? '&' : '?')+'jsondemand='+(stat.c++));
else if(typeof text != 'undefined') js.text = text;
var bodyTag = document.getElementsByTagName('body')[0];
bodyTag.appendChild(js);
if(alt) alt.parentNode.removeChild(alt);}
function jsexec(obj) {
obj = $(obj); if(!obj) return;
var s = obj.getElementsByTagName('script');
for(var i = 0, sl = s.length; i < sl; i++) {
if(s[i].src) jsondemand(s[i].src);
else jsondemand(false,s[i].innerHTML);}
var s = obj.getElementsByTagName('link');
for(var i = 0, sl = s.length; i < sl; i++) {
if(s[i].getAttribute('rel') == 'stylesheet') cssondemand(s[i].getAttribute('href'));}}
function loeschbest(text) {
if(text == '') { text = 'die Auswahl'; }
return window.confirm('Sind Sie sicher, dass Sie '+text+' wirklich lÃ¶schen wollen?');}
function altzeigen() {
for (var i = 0, il = arguments.length; i < il; i=i+2) {
if($(arguments[i+1])) {
if($(this).akt() == arguments[i]) $(arguments[i+1]).zeige();
else $(arguments[i+1]).verstecke();}}}
function fstat(funktionsname) {
if(typeof fstat[funktionsname] != 'object') fstat[funktionsname] = new Object;
if(arguments.length > 1) for(var variable in arguments[1]) if(typeof fstat[funktionsname][variable] == 'undefined') fstat[funktionsname][variable] = arguments[1][variable];
return fstat[funktionsname];}
function nelement() {
var args = $AA(arguments);
if(args.length < 2 || typeof args[0] != 'string') return false;
var tag = args.shift().toLowerCase();
var parent = $(args[0]) ? $(args.shift()) : $body();
var before = $(args[0]) ? $(args.shift()) : false;
var return_all = is_bool(args[args.length-1]) || is_number(args[args.length-1]) ? args.pop() : false;
var style = is_base(args[args.length-1]) ? args.pop() : false;
var ret = new Array;
var multitude = 0;
for (var i = 0, il = args.length; i < il; i++) {
if (typeof args[i] == 'string') {
for(var j = 0; j <= multitude; j++) {
if(j == 0 && multitude > 0) continue;
var div = document.createElement(tag);
if(args[i] != '') div.setAttribute("id", args[i]+(j == 0 ? '' : j));
if(is_string(style.display)) if(style.display) div.style.display = style.display;
else div.style.display = "none";
parent.appendChild(div);
if(style !== false) $(div).stil(style);
if(j > 0 && !return_all) ret.push(args[i] != '' ? args[i]+j : $(div));
if(return_all) ret.push($(div));}
var multitude = 0;}
if(typeof args[i] == 'number') {
var multitude = args[i];}}
return is_number(return_all) ? ret[return_all-1] : ret;}
function style(t,s) {
if(typeof s != 'object') return false;
var t = $AA(t);
for(var i = 0, il = t.length; i < il; i++) {
if(!S(t[i])) continue;
for(var e in s)S(t[i]).style[e] = s[e];}}
function scrollpos() {
var stat = fstat('scrollpos',{marker:new Object()});
var y = 0;
var x = 0;
if(self.pageYOffset) {
y = self.pageYOffset;
x = self.pageXOffset;}
else if (document.documentElement && document.documentElement.scrollTop){
y = document.documentElement.scrollTop; 
x = document.documentElement.scrollLeft; }
else if (document.body) {
y = document.body.scrollTop;
x = document.body.scrollLeft;}
if(arguments.length >= 1 && (typeof arguments[0] == 'number' || arguments[0] instanceof Array && arguments[0].length > 0)) {
if(arguments[0] instanceof Array) 
window.scrollTo(arguments[0][1],arguments[0][0]);
else { if(arguments.length >= 2 && typeof arguments[1] == 'number') 
window.scrollTo(arguments[1],arguments[0]);
else
window.scrollTo(x,arguments[0]);}}
if(arguments.length >= 2 && typeof arguments[0] == 'string' && typeof arguments[1] == 'boolean' && arguments[1] == true) {
if(!stat['marker'][arguments[0]]) return false;
window.scrollTo(stat['marker'][arguments[0]][1],stat['marker'][arguments[0]][0]);}
else if(arguments.length >= 1 && typeof arguments[0] == 'string') {
stat['marker'][arguments[0]] = [y,x];}
return [y,x];}
function htmleditor(cont,opt) {
cont = (!$(cont)) ? $(document) : $(cont);
opt = mkobj(opt);
var textareas = cont.getByClassName(opt['ck'] ? 'ckeditor' : 'htmleditor');
var re = /(^|\s)htmltb_([a-z0-9]+)/i;
var re1 = /(^|\s)htmltbt(\s|$)/;
for(var i = 0, tl = textareas.length; i < tl; i++) {
var obj = $(textareas[i]);
if($(obj).display == 'none') continue;
var edit = opt['ck'] ? new CKeditor(obj.id) : new FCKeditor(obj.id);
if(opt.toolbar) edit.ToolbarSet = opt.toolbar;
else if(re.test(obj.className)) {
var e = re.exec(obj.className);
edit.ToolbarSet = e[2];}
edit.imageoptions = 'dasistderpfad';
if(opt.toolbartoggle || re1.test(obj.className)) edit.Config['ToolbarStartExpanded'] = false;
edit.BasePath = opt['ck'] ? "/skripte/ckeditor/" : "/skripte/fckeditor/" ;
edit.ReplaceTextarea();
obj.removeClass(opt['ck'] ? 'ckeditor' : 'htmleditor');}
if(!opt['ck']) {
opt['ck'] = true;
htmleditor(cont,opt);}}
function forminit() { init(); }
function siblings(obj,typ,tiefe,attr) {
tiefe = tiefe || 0;
if(tiefe < 0) { var rtiefe = true; tiefe = Math.abs(tiefe); }
else var rtiefe = tiefe;
typ = typ || false;
if(typ === true) typ = obj.nodeName.toLowerCase();
var sibs = new Array();
for (var i = 0; i <= tiefe; i ++) obj = obj.parentNode;
if(typeof obj == 'undefined') return sibs;
return kinder(obj,typ,rtiefe,attr);}
function kinder(obj,typ,tiefe,attr) {
if(obj instanceof Array) {
var ret = [];
for(var i = 0, objl = obj.length; i < objl; i++) ret = ret.concat(kinder(obj[i],typ,tiefe,attr));
return ret;}
if(tiefe === true && undef(attr) && is_array(typ)) {
var ret = [];
for(var i = 0, typl = typ.length; i < typl; i++) ret = ret.concat(S(obj) ? S(obj).getElementsByTagName(typ[i] === true ? S(obj).nodeName.toLowerCase() : typ[i]) : []);
return ret;}
if(tiefe ===  true && undef(attr)) return S(obj) ? S(obj).getElementsByTagName(typ === true ? S(obj).nodeName.toLowerCase() : typ) : [];
if(document._getElementsByXPath) {
var xpath = (obj == document ? '' : '.')+'/';
if(is_number(tiefe)) for(var i = 0, il = Math.abs(tiefe); i < il; i++) xpath += '*/';
if(tiefe < 0 || tiefe === true) xpath += '/';
if(is_array(attr)) attr = Objekt.setze(Objekt.flip($O(attr)));
var at = '';
if(is_base(attr)) for(var e in attr) att += (att.length ? ' and ' : '')+'@'+e+(attr[e] === true ? '' : (attr[e] === false ? '=\'\'' : '=\''+attr[e]+'\''));
typ = $AA(typ);
var ex = '';
for(var i = 0, il = typ.length; i < il; i++) ex += (ex.length ? ' || ' : '')+xpath+typ[i]+(at.length ? '['+at+']' : '');
return document._getElementsByXPath(ex,obj);}
try {
obj = $(obj);
tiefe = tiefe || 0;
var mindest = typeof tiefe == 'number' && tiefe < 0;
tiefe = typeof tiefe == 'number' ? Math.abs(tiefe) : tiefe;
typ = typ || false;
if(typ === true) typ = obj.nodeName.toLowerCase();
if(typeof typ == 'string') typ = [typ];
if(typ instanceof Array) { for(var i = 0, tl = typ.length; i < tl; i++) { typ[i] = typ[i].toLowerCase(); } }
if(attr instanceof Array) {
var attr_ = {}; for(var i = 0, l = attr.length; i < l; i++) attr_[attr[i]] = true; attr = attr_;}
var sibs = new Array();
try{ var _sibs = obj.childNodes; }
catch (fehler) { return sibs; }
ol: for(var i = 0; i < _sibs.length; i++) {
var name = _sibs[i].nodeName.toLowerCase();
if(name.substr(0,1) == '#' || !(typ === false || typ.inArray(name) || tiefe > 0 || tiefe === true)) continue;
if(tiefe == 0 && typeof attr == 'object') {
for(var e in attr) {
var att = _sibs[i].getAttribute(e);
if(typeof attr[e] == 'boolean' && (attr[e] == (typeof att == 'undefined' || att == null))) continue ol;
if(typeof attr[e] != 'boolean' && att !== attr[e]) continue ol;}}
sibs.push(_sibs[i]);}
if(tiefe == 0) return sibs;
_sibs = sibs;
var sibs = new Array();
for(var i = 0; i < _sibs.length; i++) {
sibs = sibs.concat(kinder(_sibs[i],typ,tiefe === true || mindest && tiefe <= 1 ? true : (tiefe-1)*(mindest ? -1 : 1),attr)); }
if(tiefe === true) {
ol: for(var i = 0; i < _sibs.length; i++) {
var name = _sibs[i].nodeName.toLowerCase();
if(typ !== false && !typ.inArray(name)) continue;
if(typeof attr== 'object') {
for(var e in attr) {
var att = _sibs[i].getAttribute(e);
if(typeof attr[e] == 'boolean' && (attr[e] == (typeof att == 'undefined' || att == null))) continue ol;
if(typeof attr[e] != 'boolean' && att !== attr[e]) continue ol;}}
sibs.push(_sibs[i]);}}
return sibs;}
catch(e) {
return [];}}
function eltern(el,typ,attr,self) {
typ = typ.toUpperCase();
if(self !== true) if(!(el = el.parentNode)) return false;
do {
if(el.nodeName == typ) {
if(typeof attr == 'object') {
for(var e in attr) {
if(e == 'className') {
var reg = new RegExp("(^|\\s)"+attr[e]+"(\\s|$)");
if(!reg.test(e.className)) continue;}
else {
var att = el.getAttribute(e);
if(typeof attr[e] == 'boolean' && (attr[e] == (typeof att == 'undefined' || att == null))) continue;
if(typeof attr[e] != 'boolean' && att !== attr[e]) continue;}}}
return $(el);}}
while(el = el.parentNode);
return false;}
function htmldecode(v) {
var htmdecode=document.createElement('textarea');
htmdecode.innerHTML = v; v = htmdecode.value;
return v;}
function jsonobj(json) {
try {
if(!json.substr) return {};
if(json.substr(0,1) != '{') json = '{'+json+'}';
var obj = eval("("+json+")");
if(typeof obj != 'object') obj = {};
return obj;}
catch (fehler) { return new Object(); }}
function jsonarr(json) {
try {
if(!json.substr) return {};
if(json.substr(0,1) != '[') json = '['+json+']';
var obj = eval("("+json+")");
if(is_array(obj)) obj = [];
return obj;}
catch (fehler) { return new Array(); }}
function showobj(obj,len) {
var i = 0;
for(var e in obj) {
i++;
alert(e+' : '+obj[e]);
if(len && i > len) break;}}
function showobjel(obj,tr) {
var t = '';
var tr = undef(tr) ? '\n' : tr;
for(var e in obj) {
t += e+tr;}
alert(t);}
function showarr(arr,len,was) {
for(var i = 0, l = arr.length; i < l && (!len || i < len); i++) {
if(was === true) showobj(arr[i]);
else if(was) alert(i+'['+was+'] : ['+(typeof arr[i][was])+'] '+arr[i][was]);
else alert(i+' : ['+(typeof arr[i])+'] '+arr[i]);}}
function redozebratbl(el,typ,off) {
if(is_number(typ)) { off = typ; typ = false; }
typ = typ || 'tr';
if(!$(el) || !$(el).kinder) return;
var kinder = $O($(el).kinder(typ));
var i = off ? 1 : 0;
for(var e in kinder) {
if(kinder[e].style && kinder[e].style.display == 'none') continue;
if(i % 2 == 0) $(kinder[e]).addClass('highlight');
else $(kinder[e]).removeClass('highlight');
i++;}}
drag = {
objekt : false,
aktiv : false,
floatobj : null,
startdrag : function() {},
dragging : function() {},
update : function(e) {
if(floatobj === null) return;
floatobj.left = (e.absoluteX + 15) + "px";
floatobj.top = (e.absoluteY + 15) + "px";
var dg = objekt.getAttribute('sce:drag');
var i = 0;
var obj;
if(obj = e.currentTarget) {
do {
var func = jsonobj(obj.getAttribute('sce:ddo'));
if(func[dg]) {
funcexec(func[objekt.getAttribute('sce:drag')],objekt,obj,true,i);
$(obj).off('mouseout',drag.mouseout,objekt,obj,false,i++);}}
while (obj = obj.parentNode);}},
drop : function(e) {
if(floatobj !== null && (obj = e.currentTarget)) { 
var dg = objekt.getAttribute('sce:drag');
var i = 0;
do {
var func = jsonobj(obj.getAttribute('sce:ddd'));
if(func[dg]) funcexec(func[objekt.getAttribute('sce:drag')],objekt,obj,false,i++);}
while (obj = obj.parentNode);}
enddrag();},
enddrag : function() {}}

