function Undef(o){return typeof(o)=='undefined'||o===''||o==null};
function Def(o){return!Undef(o)};
function Und(o){return typeof(o)=='undefined'};
function isString(o){return Def(o) && typeof(o)=='string'};
function isArray(o){return Def(o) && typeof(o)=='object' && typeof(o.length)=="number"};
function pI(s){return parseInt(s)};
function pB(v,d){return Und(v)?d:v&&v!='false'};
function dw(s){window.document.write(s)};
function dwl(s){window.document.writeln(s)};
function bdump(x) {dw("<!--<pre>"+x+"</pre>-->");};
function dump(x) {dw("<pre>"+x+"</pre>");};
function dumpt(x) {dw("<textarea cols=150 rows=15>"+x+"</textarea>");};
function dumpObj(x) {
    dwl("<pre>");
    for(a in x) dwl(a+" => "+x[a]+"<br>");
    dwl("</pre>");
}
function stristr(s,pat,p1,p2) {
    if (!s || !isString(s) || !isString(pat) || s.length<=pat.length || s.length==0 || pat.length==0) return false;
    if (Undef(p1) || Undef(p2)) return (s.toLowerCase().trim().indexOf(pat.trim().toLowerCase())>=0);
    p1=Math.min(s.length-1,pI(p1));
    p2=Math.min(s.length-p1-1,pI(p2));
    return (s.toLowerCase().trim().substr(p1,p2).indexOf(pat.trim().toLowerCase())>=0);
}
String.prototype.trim = function(s) {
    var x=this;
    if (!Undef(s) && isString(s)) {
        var rExp = new RegExp("^("+s+")*(.*)");
        x=x.replace(rExp,"$2");
        rExp = new RegExp("(.*?)("+s+")*$");
        x=x.replace(rExp,"$1");
    } else {
        x=x.replace(/^\s*(.*)/, "$1");
        x=x.replace(/(.*?)\s*$/, "$1");
    }
    return x;
}
function str_replace(sd,sf,sr,ic){
  if(arguments.length<3||sf==""||sd==""||typeof("".split)!="function")return(sd);if(!(ic))return(sd.split(sf)).join(sr);
  sf=sf.toLowerCase();var rv="";var ix=sd.toLowerCase().indexOf(sf);
  while(ix>-1){rv+=sd.substring(0,ix)+sr;sd=sd.substring(ix+sf.length);ix=sd.toLowerCase().indexOf(sf);};return(rv+sd);
};
function Array_push() {
  var A_p = 0
  for (A_p = 0; A_p < arguments.length; A_p++) {
    this[this.length] = arguments[A_p]
  }
  return this.length
}

if (typeof Array.prototype.push == "undefined") {
  Array.prototype.push = Array_push
}

function Array_shift() {
  var A_s = 0
  var response = this[0]
  for (A_s = 0; A_s < this.length-1; A_s++) {
    this[A_s] = this[A_s + 1]
  }
  this.length--
  return response
}

if (typeof Array.prototype.shift == "undefined") {
  Array.prototype.shift = Array_shift
}
var bugRiddenCrashPronePieceOfJunk = (navigator.userAgent.indexOf('MSIE 5.2') != -1 	&& navigator.userAgent.indexOf('Mac') != -1);

var DHTML = false, DOM = false, MSIE4 = false, NS4 = false, OP = false;

if (document.getElementById) {
  DHTML = true;
  DOM = true;
} else {
  if (document.all) {
    DHTML = true;
    MSIE4 = true;
  } else {
    if (document.layers) {
      DHTML = true;
      NS4 = true;
    }
  }
}
if (window.opera) {
  OP = true;
}
// selfhtml dhtml lib //
function getElement(Mode, Identifier, ElementNumber) {
  var Element,ElementList;
  if (DOM) {
    if (Mode.toLowerCase() == "id") {
      if (typeof document.getElementById(Identifier) == "object") {Element = document.getElementById(Identifier);} else { Element = false; };return Element;
    };
    if (Mode.toLowerCase() == "name") {
      ElementList = document.getElementsByName(Identifier);
      if (!ElementNumber) return ElementList;
      if (typeof ElementList == "object" || (OP && typeof ElementList == "function")) {Element = ElementList[ElementNumber];} else {Element = false;};return Element;
    };
    if (Mode.toLowerCase() == "tagname") {
      ElementList = document.getElementsByTagName(Identifier);
      if (!ElementNumber) return ElementList;
      if (typeof ElementList == "object" || (OP && typeof ElementList == "function")) {Element = ElementList[ElementNumber];} else {Element = false;};return Element;
    };return null;
  };
  if (MSIE4) {
    if (Mode.toLowerCase() == "id") {
      if (typeof document.all[Identifier] == "object") {Element = document.all[Identifier];} else {Element = false;};return Element;
    };
    if (Mode.toLowerCase() == "tagname") {
      if (typeof document.all.tags(Identifier) == "object") {
        if (!ElementNumber) return document.all.tags(Identifier);
        Element = document.all.tags(Identifier)[ElementNumber];
      } else { Element = false;};
      return Element;
    };
    if (Mode.toLowerCase() == "name") {
      if (typeof document[Identifier] == "object") {Element = document[Identifier];} else {Element = false;};return Element;
    };
    return false;
  };
  if (NS4) {
    if (Mode.toLowerCase() == "id" || Mode.toLowerCase() == "name") {
      if (typeof document[Identifier] == "object") {Element = document[Identifier];} else {Element = false;};return Element;
    };
    if (Mode.toLowerCase() == "index") {
      if (typeof document.layers[Identifier] == "object") {Element = document.layers[Identifier];} else {Element = false;};return Element;
    };
    return false;
  };
  return false;
}
function getContent (Mode, Identifier, ElementNumber) {
  var Content; var Element = getElement(Mode, Identifier, ElementNumber);
  if (!Element) { return false;};
  if (DOM && Element.firstChild) {if (Element.firstChild.nodeType == 3) { Content = Element.firstChild.nodeValue; } else { Content = "";};return Content;};
  if (MSIE4) { Content = Element.innerText; return Content; };
  return false;
}
function getAttribute (Mode, Identifier, ElementNumber, AttributeName) {
  var Attribute;var Element = getElement(Mode, Identifier, ElementNumber);
  if (!Element) {return false;};
  if (DOM || MSIE4) { Attribute = Element.getAttribute(AttributeName); return Attribute; };
  if (NS4) { if (typeof Element[ElementNumber] == "object") { Attribute = Element[ElementNumber][AttributeName];} else { Attribute = Element[AttributeName]};return Attribute;};
  return false;
}
function setContent (Mode, Identifier, ElementNumber, Text) {
  var Element = getElement(Mode, Identifier, ElementNumber);
  if (!Element) {return false;};if (DOM && Element.firstChild) {Element.firstChild.nodeValue = Text;return true;};
  if (MSIE4) {Element.innerText = Text;return true;};
  if (NS4) {Element.document.open(); Element.document.write(Text); Element.document.close(); return true;};
}
function getStyleObject(objectId) {
    // cross-browser function to get an object's style object given its id
    if(document.getElementById && document.getElementById(objectId)) {
      return document.getElementById(objectId).style; // W3C DOM
    } else if (document.all && document.all(objectId)) {
      return document.all(objectId).style; // MSIE 4 DOM
    } else if (document.layers && document.layers[objectId]) {
      return document.layers[objectId]; // NN 4 DOM.. note: this won't find nested layers
    } else { return false; };
}
function changeObjectVisibility(objectId, newVisibility) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) { styleObject.visibility = newVisibility;return true; } else {return false;}; // we couldn't find the object, so we can't change its visibility
    return false;
}
function moveObject(objectId, newXCoordinate, newYCoordinate) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) { styleObject.left = newXCoordinate;styleObject.top = newYCoordinate;return true; } else { return false;}; // we couldn't find the object, so we can't very well move it
    return false;
}
function openTestWindow(TestContent, width, height) {
  TestContent = (!TestContent || !isString(TestContent) || !TestContent.length)?"" : TestContent;
  width = (width && parseInt(width))?width:300;
  height = (height && parseInt(height))?height:250;
  var testWin = window.open('', 'testWin', 'width='+(parseInt(width)+5)+',height='+(parseInt(height)+5)+',toolbar=0,status=0,scrollbars=0,location=0,menubar=0,resizable=1');
  testWin.document.close();
  testWin.document.open();
  testWin.document.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//DE"'
        +'"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'
        +'<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">'
        +'<head>'
        +'  <title>Test Window</title>'
        +'  <style type="text/css">body {margin: 0px};</style>'
        +'  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />'
        +'</head>'
        +'<body>'
        +'<p><a href="#" title="fenster schliessen" onclick="window.close();return false;">Fenster schliessen</a></p>'
        +'<p>'+TestContent+'</p>'
        +'</body>'
        +'</html>');
  testWin.document.close();
  testWin.focus();
}
// usage : addEvent(window, 'load', foo);
function addEvent(obj, evType, fn, useCapture){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be attached");
  }
}
function removeEvent(obj, evType, fn, useCapture){
  if (obj.removeEventListener){
    obj.removeEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.detachEvent){
    var r = obj.detachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be removed");
  }
}
