
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
var browserVersion=parseFloat(navigator.appVersion);


jsVersion = 1.1;

Array.prototype.contains = function (elem) {
  var i;
  for (i = 0; i < this.length; i++) {
    if (this[i] == elem) {
      return true;
    }
  }

  return false;
};


        function tablesort(tbl_id, SE) {

         var REG = new RegExp("^(?:[0-9]+\-){"+SE+"}([0-9]+)(?:\-[0-9]+)*$");

         var tbl = document.getElementById(tbl_id);

         if (!tbl) { alert("Tabelle '" + tbl_id + "' nicht gefunden."); return 0; }

         // TBODY suchen
         for (tbX=0; tbX < tbl.childNodes.length; tbX++) {
                 if (tbl.childNodes[tbX].nodeName == "TBODY") {
                         var tbody = tbl.childNodes[tbX];
                         break;
                 }
         }
         if (!tbody) { alert("Keine Tabelle gefunden"); return 0; }

         var sCol=0; var offset=0; var aTr = null;

         for (var aCol = 0; aCol < tbody.childNodes.length; aCol++) {

                 aTr = tbody.childNodes[aCol];
                 if (aTr.nodeName != "TR" && aTr.nodeName != "TH") continue;

                 if (!aTr.getAttribute('SORT')) {
                         if (aTr.getAttribute('SORTLINE')) {
                           for (var aSM = 0; aSM < aTr.childNodes.length; aSM++) {
                               if (aSM==SE) { sClass = "akt"; } else { sClass=""; }
                               aTr.childNodes[aSM].className = sClass;
                           }
                         }
                         offset++;
                         continue;
                 }
                 var regErg = aTr.getAttribute('SORT').match(REG);

                 sCol = regErg[1];


                 if (tausche (tbody,aCol,sCol-1+offset)) aCol--;

         }
      }

      function tausche (par, n1,n2) {

                if (n1 == n2) return 0;

                var weg = par.replaceChild(par.childNodes[n2],par.childNodes[n1])
                if (n2 == par.childNodes.length) {
                   par.appendChild(weg);
                } else {
                   par.insertBefore(weg, par.childNodes[n2]);
                }
                return 1;
      }


function startYoutube(playerID) {

         /*
                 http://code.google.com/intl/de-DE/apis/youtube/js_api_reference.html
                 STATE: unstarted (-1), ended (0), paused (2), buffering (3), playing (1), video cued (5).

         */

         var player = document.getElementById(playerID);
         var state = player.getPlayerState();

         if (state == 3 || state == 1) {
            player.pauseVideo();
         } else {
            player.playVideo();
         }
}
function fixInput(element,typ) {

 oldval = element.value;

 if (typ == "preis") {

       newval = parseDecimal(oldval,2,-1,0,0.99);
  /*
       var regErg = oldval.match(/^(?:[^\d\.,]*)((?:([\d]{0,6})|([\d]{1,3})[^\d]([\d]{3}))(?:[\.,]([\d]{1,2}))?)(?:[^\d]*)$/);
       if (!regErg) return -1;

       newval = 0;
       if (regErg[5].length == 1) regErg[5] *= 10;

       if (regErg[2]) newval += eval(regErg[2]);
       if (regErg[3]) newval += eval(regErg[3]*1000);
       if (regErg[4]) newval += eval(regErg[4]);
       if (regErg[5]) newval += eval(regErg[5]/100);

       newval=runde(newval,2);
   */
 } else { return 0; }

 element.value = newval;
 return 1;

}

function runde(x, n) {
  if (n < 1 || n > 14) return false;
  var e = Math.pow(10, n);
  var k = (Math.round(x * e) / e).toString();
  if (k.indexOf('.') == -1) k += '.';
  k += e.toString().substring(1);
  return k.substring(0, k.indexOf('.') + n+1);
}


 function uExec (url,uInputID) {

          // Version 1.2, 13.9.2008, 20:00
          // Neue Umsetzung mit optionaler uInputID welche ausgewertet als uInput übergeben wird

          var d=new Date()
          url += '&uExecTC=' + d.getTime();

          if (uInputID) url += '&uInput=' + encodeURI(document.getElementById(uInputID).value);

          var oHead = document.getElementsByTagName('HEAD').item(0);
          var oScript= document.createElement('script');
          oScript.type = 'text/javascript';
          oScript.src=url;
          oHead.appendChild( oScript);

 }

var iPopup = new Array();


        function checkString(inputstr,needle) {
          if (!needle.length) { return 1; }
          var inputstr = inputstr.toLowerCase();
          var needle = needle.toLowerCase();
          var parts = needle.split(' ');
          for (p=0;p<parts.length; p++) {
               apart = parts[p];
               if (inputstr.indexOf(apart) == -1) { return 0; }
          }

          return 1;
        }

function getDisplayStatus (objektID,status) {
         var obj = document.getElementById(objektID);
         if (!obj) return -1;
         if (obj.style.display == "block") return 1;
         if (obj.style.display == "none") return 0;
}


function changeDisplayStatus (objektID,status) {
         var obj = document.getElementById(objektID);
         if (!obj) return 0;
         if (status == 2 && obj.style.display == "block") status = 0;
         if (status == 2 && obj.style.display == "none") status = 1;
         if (status == 2) status = 0;
         if (status == 0) obj.style.display = "none";
         if (status == 1) obj.style.display = "block";
         return status;
}

function switchDisplay (objektID, status, styp) {
//alert(objektID);
        // Ersatz für changeDisplayStatus (14.09.08) (C) BUDZE
         var obj = document.getElementById(objektID);
         if (!obj) return 0;

         if (isIE || !styp) styp = "block";
         var modi = new Array("none",styp);

         // automatischer Wechsel
        if (status == 2) {
            if (obj.style.display == modi[0]) {
               status = 1;
             } else {
               status = 0;
            }
         }
        obj.style.display = modi[status];
         return status;
}


function uebertrageListe(srcID,dstID) {
        var splitSymb = '|';

        var src = document.getElementById(srcID);
        var dst = document.getElementById(dstID);
        for(var i=0;i<src.length; i++) {
            var aktItem = src.options[i];
            if  (aktItem.selected) {
                 var paste_val=aktItem.value;
                 var paste_text=aktItem.text;

                 if (splitSymb) {
                     var tmp=paste_val.split(splitSymb);
                     paste_val = tmp[0];
                     paste_text = tmp[1];
                 }
                 var ok=1;
                 for(var n=0;n<dst.length; n++) { if (dst.options[n].value == paste_val) { ok=0; break;} }
                 if (ok) dst.options[dst.options.length]= new Option(paste_text,paste_val,false,false);
            }
         }
}


function select_all(objID) {
        obj = document.getElementById(objID);
        for(var i=0; i<obj.length; i++) {
                 obj.options[i].selected=true;
         }
}
function delete_selection(objID) {
        var del=0;

        obj = document.getElementById(objID);
         var max=obj.length;
        for(var i=del; i<max; i++) {

                 if (obj.options[del].selected) {
                         obj.options[del] = null;
                        del--;
                }

                 del++;
         }
}

function fadeOpacity(objektID,setOp,stepOp,destOp,stepW) {

         var obj = document.getElementById(objektID);
         obj.style.filter='Alpha(opacity='+setOp+')';
         obj.style.opacity=setOp/100;

         if (setOp == destOp) { return 1; }
         setTimeout('fadeOpacity(\"'+objektID+'\",'+(setOp+stepOp)+','+stepOp+','+destOp+','+stepW+');',stepW);

}

function scrollBackground() {

         // Version 2, 19.12.2007, 17:00
         // Fix für Safari

         if (iPopup.length == 0) return 0;


         if (strictMode == 0) {
                var bodyEle = document.body;
         } else {
                 var bodyEle = document.documentElement;
         }

         var obj_bg = document.getElementById('DCBG');
         var obj_if = document.getElementById('DCCFRAME');
         var obj_ctr = document.getElementById('DCFRAME_CONTROL');

         if (self.innerWidth) {
             var totalWidth = self.innerWidth;
             var totalHeight = self.innerHeight;
         } else {
             var totalWidth = bodyEle.clientWidth;
             var totalHeight = bodyEle.clientHeight;
         }

         obj_bg.style.top = bodyEle.scrollTop + 'px'; obj_bg.style.height='100%';
         obj_bg.style.left = bodyEle.scrollLeft + 'px'; obj_bg.style.width='100%';

         obj_if.style.left = ( bodyEle.scrollLeft + (totalWidth-iPopup[1])/2 )+ 'px';
         obj_if.style.top = ( bodyEle.scrollTop + (totalHeight-iPopup[2])/2 ) + 'px';

         obj_ctr.style.left = parseInt(obj_if.style.left) + 'px' ;
         obj_ctr.style.top = ( parseInt(obj_if.style.top)-22) + 'px';
}

function remInnerPopup() {
         var obj_bg = document.getElementById('DCBG');
         var obj_if = document.getElementById('DCCFRAME');
         var obj_ctr = document.getElementById('DCFRAME_CONTROL');

         window.clearTimeout(iPopup[0]);

         obj_if.src='NULL';
         obj_if.style.display = "none";
         obj_ctr.style.display = "none";

         fadeOpacity('DCBG',70,-35,0,50);
         setTimeout('document.getElementById(\"DCBG\").style.display = \"none\";',150);

         iPopup = new Array();

}

function innerPopup(src,width,height,scrollable) {
         var obj_bg = document.getElementById('DCBG');
         var obj_if = document.getElementById('DCCFRAME');
         var obj_ctr = document.getElementById('DCFRAME_CONTROL');

         /*if (scrollable) {obj_if.scrolling='yes'; } else {obj_if.scrolling='no';}*/

         obj_if.src=(src);
         iPopup[1] = width;
         iPopup[2] = height;

         obj_if.style.width=width + 'px';
         obj_if.style.height=height + 'px';
         obj_ctr.style.width=width + 'px';
         scrollBackground();

         obj_bg.style.display = "block";
         iPopup[0] = setTimeout('document.getElementById(\"DCCFRAME\").style.display = \"block\"; document.getElementById(\"DCFRAME_CONTROL\").style.display = \"block\";',700);

         fadeOpacity('DCBG',0,20,80,50);
}


function convert2bool(val) {
         if (val==0 || val=='') return 0;
         return 1;
}

function turnbool(val) {
         if (val) return 0;
         return 1;
}

function isIdent (str1,str2) {
         if (str1==str2) return 1;
         return 0;
}

function trim(s) {
         while (s.substring(0,1) == ' ')
                s = s.substring(1,s.length);
         while (s.substring(s.length-1,s.length) == ' ')
                s = s.substring(0,s.length-1);
         return s;
}
function urlencode (url) {
         return escape(url);
}

/*
function getPosition(element) {
         var elem=element,tagname='',x=0,y=0;
         while ((typeof(elem)=='object')&&(typeof(elem.tagName)!='undefined')) {
                 y+=elem.offsetTop;
                 x+=elem.offsetLeft;
                 tagname=elem.tagName.toUpperCase();
                 if (tagname=='BODY') elem=0;
                 if (typeof(elem)=='object')
                        if (typeof(elem.offsetParent)=='object')
                            elem=elem.offsetParent;
         }
         position=new Object();
         position.x=x;
         position.y=y;
         position.h=element.offsetHeight;
         position.w=element.offsetWidth;

         return position;
}
*/
function getPosition (element) {

         // FIX: 23.3.2009, 10:00
         // IE7 Bug mit Strict (elem.offsetTop is NULL)

         // FIX: 28.8.2008, 14:30
         // Keine Negativen Offsets (Opera Bug)

         var elem=element,tagname='',x=0,y=0;
         while ((typeof(elem)=='object')&& elem != null &&(typeof(elem.tagName)!='undefined')) {
                 y += Math.max(0,elem.offsetTop);
                 x += Math.max(0,elem.offsetLeft);

                 tagname=elem.tagName.toUpperCase();
                 if (tagname=='BODY')
                         elem=0;
                 if (typeof(elem)=='object' && typeof(elem.offsetParent)=='object')
                         elem=elem.offsetParent;
         }
         position=new Object();
         position.x=x;
         position.y=y;
         position.h=element.offsetHeight;
         position.w=element.offsetWidth;

         return position;
}

function changeEnabledVal (objektID,status) {
         var obj = document.getElementById(objektID);
         if (!obj) return 0;
         if (status == 0) obj.disabled = true;
         if (status == 1) obj.disabled = false;
         return status;
}

function changeClass (objektID,classname) {
         var obj = document.getElementById(objektID);
         obj.className=classname;
}

function changeArrayDisplayStatus (objektID,arrayElement,anzElemente) {
         for (n=0; n < anzElemente; n++) {
              objekt_disp = document.getElementById(objektID+"_"+n).style;
              if (n != arrayElement || objekt_disp.display == "block") {
                  objekt_disp.display = "none";
              } else {
                  objekt_disp.display = "block";
              }
         }
         return 0;
}

function multiCheck (start,newVal) {

         var objs = start.elements;
         for (var i = 0; i < objs.length; i++) {
                tagname=objs[i].tagName.toUpperCase();
                type=objs[i].type.toUpperCase();
                 if (tagname=='INPUT' && type == 'CHECKBOX') {
                             objs[i].checked = newVal;
                 }
         }

}

function checkAll(formname,tagval,val) {
         var objs = document.forms[formname].elements;
         for (var i = 0; i < objs.length; i++) {
         if (objs[i].tag == tagval)
             objs[i].checked = val;
         }
}

function checkAll3(formname,tagval,val) {
         var objs = document.getElementsByTagName(tagval);
         for (var i = 0; i < objs.length; i++) {
              if (objs[i].tag == tagval)
                  objs[i].checked=val;
         }
}

function checkAll2(oname,val) {
         for (var i=0;i<object.length;i++) {
              var e = object.elements[i];
              if (e.name != oname)
                  e.checked =true;
         }
}


function JSGetSwfVer(i) {
        if (navigator.plugins != null && navigator.plugins.length > 0) {
                if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
                        var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
                      var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
                        descArray = flashDescription.split(" ");
                        tempArrayMajor = descArray[2].split(".");
                        versionMajor = tempArrayMajor[0];
                        versionMinor = tempArrayMajor[1];
                        if ( descArray[3] != "" ) {
                                tempArrayMinor = descArray[3].split("r");
                        } else {
                                tempArrayMinor = descArray[4].split("r");
                        }
                      versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
            flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
              } else {
                        flashVer = -1;
                }
        }
        else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
        else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
        else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
        else {

                flashVer = -1;
        }
        return flashVer;
}

function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) {
        reqVer = parseFloat(reqMajorVer + "." + reqRevision);
        for (i=25;i>0;i--) {
                if (isIE && isWin && !isOpera) {
                        versionStr = VBGetSwfVer(i);
                } else {
                        versionStr = JSGetSwfVer(i);
                }
                if (versionStr == -1 ) {
                        return false;
                } else if (versionStr != 0) {
                        if(isIE && isWin && !isOpera) {
                                tempArray         = versionStr.split(" ");
                                tempString        = tempArray[1];
                                versionArray      = tempString .split(",");
                        } else {
                                versionArray      = versionStr.split(".");
                        }
                        versionMajor      = versionArray[0];
                        versionMinor      = versionArray[1];
                        versionRevision   = versionArray[2];

                        versionString     = versionMajor + "." + versionRevision;   // 7.0r24 == 7.24
                        versionNum        = parseFloat(versionString);
                        if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {
                                return true;
                        } else {
                                return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );
                        }
                }
        }
}

function aTrim(s) {

  v = h = '';
  c = s;

  while (c.substring(0,1) == ' ') {
    v += c.substring(0,1);
    c = c.substring(1,c.length);
  }
  while (c.substring(c.length-1,c.length) == ' ') {
    h += c.substring(c.length-1,c.length);
    c = c.substring(0,c.length-1);
  }
  return new Array(v,c,h);
}

function parseDecimal (input,komma,standard,extMode,minVal,maxVal) {
  if (typeof komma === 'undefined') komma = 2;
  if (typeof standard === 'undefined'){
         if (typeof minVal != 'undefined') standard = Math.max(minVal,0);
         if (typeof maxVal != 'undefined') standard = Math.min(maxVal,standard);
  }
  if (typeof extMode === 'undefined') extMode = 0;

  // Trim String
  // Inhalt besteht nur noch aus Zahlen und Punkten
  // Das letzte Zeichen kann kein Punkt sein
  input = input.replace(/^[^\d\.,]*?((\-(?=\d))?[\d\.,]*\d).*$/, '$1');
  input = input.replace(/^([\.,].*)$/, '0$1');

  var input_alt = input;
  var isNeg = 0;
  var isErr = 0;
  input = input.replace(/^\-(.*)$/, '$1');
  if (input != input_alt) isNeg = 1;

  var regErg = input.match(/^(\d{0,3}?)([\.,])?(\d{0,3}?)([\.,])?(\d+)$/);
  if (!regErg) {
    isErr = 1;
  } else {
    var z3 = regErg[1];
    var t2 = regErg[2];
    var z2 = regErg[3];
    var t1 = regErg[4];
    var z1 = regErg[5];

    var wert=0;
    if (!t1.length) {
      //Blanke Zahl
      wert += eval(z1);
    } else if (((t1 != t2) && t2.length) || (t1 != t2 && (z1.length != 3 || komma >= 3))) {
      //mit Nachkomma
      if (z3.length && z2.length != 3) {
        isErr = 1;
      } else {
        wert += eval(0+'.'+z1);
        if (z2.length) wert += eval(z2);
        if (z3.length) wert += eval(z3)*1000;
      }
    } else {
      // 2 gleiche Trennzeichen
      if ((z3.length && z2.length != 3) || (z2.length && z1.length != 3)) {
        isErr = 1;
      } else {
        wert += eval(z1);
        if (z2.length) wert += eval(z2)*1000;
        if (z3.length) wert += eval(z3)*1000*1000;
      }
    }
  }

  if (isNeg) wert *= -1;

  if (typeof minVal != 'undefined') wert = Math.max(minVal,wert);
  if (typeof maxVal != 'undefined') wert = Math.min(maxVal,wert);

  if (isErr) wert = standard;

  // ist numerisch?
  if (String(wert).match(/^[\-]?[\d\.]+$/)) {
    if (extMode) return number_format(wert,komma,',','.');
    return number_format(wert,komma,'.','');
  }
  return wert;
}

function number_format(number, decimals, sym_dezimal, sym_tausend) {
  var n = !isFinite(+number) ? 0 : +number,
  prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
  sep = (typeof sym_tausend === 'undefined') ? '.' : sym_tausend, dec = (typeof sym_dezimal === 'undefined') ? ',' : sym_dezimal,
  s = '',
  toFixedFix = function (n, prec) { var k = Math.pow(10, prec); return '' + Math.round(n * k) / k; };

  s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');

  if (s[0].length > 3)
    s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);

  if ((s[1] || '').length < prec) {
     s[1] = s[1] || '';
     s[1] += new Array(prec - s[1].length + 1).join('0');
  }
  return s.join(dec);
}