var Tooltip = {
  followMouse: true,
  overlaySelects: false,  // iframe shim for select lists (ie win)
  offX: 8,
  offY: 12,
  tipID: "tooltip",
  tipClass: "form_tooltip",
  showDelay: 100,
  hideDelay: 200,
  ovTimer:0,
  ready:false,
  timer:null,
  tip:null,
  shim:null,
  supportsOverlay:false,
    
  init: function() {
    if(document.createElement&&document.body&&typeof document.body.appendChild!="undefined") {
      var el=document.createElement("DIV");
      el.id=this.tipID;
      el.className=this.tipClass;
      el.style.visibility="hidden";
      document.body.appendChild(el);
      this.supportsOverlay=this.checkOverlaySupport();
      this.ready=true;
    }
  },
  
  show: function(e,msg) {
    if(this.timer) {
      clearTimeout(this.timer);
      this.timer=0;
    }
    if(!this.ttready) return;
    this.tip=document.getElementById(this.tipID);
    if(this.followMouse) dw_event.add(document,"mousemove",this.trackMouse,true);
    this.writeTip("");
    this.writeTip(msg);
    viewport.getAll();
    this.handleOverlay(1,this.showDelay);
    this.positionTip(e);
    this.timer=setTimeout("Tooltip.toggleVis('"+this.tipID+"', 'visible')",this.showDelay);
  },
  
  writeTip: function(msg) {
    if(this.tip&&typeof this.tip.innerHTML!="undefined") this.tip.innerHTML=msg;
  },
  
  positionTip: function(e) {
    if(this.tip&&this.tip.style) {
      var x=e.pageX?e.pageX:e.clientX+viewport.scrollX;
      var y=e.pageY?e.pageY:e.clientY+viewport.scrollY;
/*
      if(x+this.tip.offsetWidth+this.offX>viewport.width+viewport.scrollX) {
        x=x-this.tip.offsetWidth-this.offX;if(x<0)x=0;
      } 
      else 
*/
      { 
        x=x+this.offX;
      }
      if(y+this.tip.offsetHeight+this.offY>viewport.height+viewport.scrollY) {
        y=y-this.tip.offsetHeight-this.offY;
        if(y<viewport.scrollY)y=viewport.height+viewport.scrollY-this.tip.offsetHeight;
      } else y=y+this.offY;
      this.tip.style.left=x+"px";
      this.tip.style.top=y+"px";
      this.tip.style.position="absolute";
      this.tip.style.zIndex="4";
    }
    this.positionOverlay();
  },
  
  hide: function() {
    if(this.timer) {
      clearTimeout(this.timer);
      this.timer=0;
    }
    this.handleOverlay(0,this.hideDelay);
    this.timer=setTimeout("Tooltip.toggleVis('"+this.tipID+"', 'hidden')",this.hideDelay);
    if(this.followMouse)dw_event.remove(document,"mousemove",this.trackMouse,true);
    this.tip=null;
  },
  
  toggleVis: function(id,vis) {
    var el=document.getElementById(id);
    if(el) el.style.visibility=vis;
  },
  
  trackMouse: function(e) {
    e=dw_event.DOMit(e);
    Tooltip.positionTip(e);
  },
  
  checkOverlaySupport: function() {
    if(navigator.userAgent.indexOf("Windows")!=-1 &&
       typeof document.body!="undefined" &&
       /* typeof document.body.insertAdjacentHTML!="undefined" && */
       !window.opera &&
       navigator.appVersion.indexOf("MSIE 5.0")==-1)return true;
    else return false;
  },
  
  handleOverlay: function(bVis,d) {
    if(this.overlaySelects&&this.supportsOverlay) {
      if(this.ovTimer) {
        clearTimeout(this.ovTimer);
        this.ovTimer=0;
      }
      switch(bVis) {
        case 1:
          if(!document.getElementById('tipShim')) {
            document.body.insertAdjacentHTML("beforeEnd",'<iframe id="tipShim" src="about:blank" style="position:absolute;left:0;top:0;z-index:500;visibility:hidden" scrolling="no" frameborder="0"></iframe>');
          }
          this.shim=document.getElementById('tipShim');
          if(this.shim&&this.tip) {
            this.shim.style.width=this.tip.offsetWidth+"px";
            this.shim.style.height=this.tip.offsetHeight+"px";
          }
          this.ovTimer=setTimeout("Tooltip.toggleVis('tipShim', 'visible')",d);
          break;
        case 0:
          this.ovTimer=setTimeout("Tooltip.toggleVis('tipShim', 'hidden')",d);
          if(this.shim)this.shim=null;
          break;
      }
    }
  },
  
  positionOverlay: function() {
    if(this.overlaySelects&&this.supportsOverlay&&this.shim) {
      this.shim.style.left=this.tip.style.left;
      this.shim.style.top=this.tip.style.top;
    }
  }
};

var dw_event = {
  
  add: function(obj, etype, fp, cap) {
    cap = cap || false;
    if (obj.addEventListener) obj.addEventListener(etype, fp, cap);
    else if (obj.attachEvent) obj.attachEvent("on" + etype, fp);
  }, 

  remove: function(obj, etype, fp, cap) {
    cap = cap || false;
    if (obj.removeEventListener) obj.removeEventListener(etype, fp, cap);
    else if (obj.detachEvent) obj.detachEvent("on" + etype, fp);
  }, 

  DOMit: function(e) { 
    e = e? e: window.event;
    e.tgt = e.srcElement? e.srcElement: e.target;
    
    if (!e.preventDefault) e.preventDefault = function () { return false; }
    if (!e.stopPropagation) e.stopPropagation = function () { if (window.event) window.event.cancelBubble = true; }
        
    return e;
  }
  
}

var viewport = {
  getWinWidth: function () {
    this.width = 0;
    if (window.innerWidth) this.width = window.innerWidth - 18;
    else if (document.documentElement && document.documentElement.clientWidth) 
      this.width = document.documentElement.clientWidth;
    else if (document.body && document.body.clientWidth) 
      this.width = document.body.clientWidth;
  },
  
  getWinHeight: function () {
    this.height = 0;
    if (window.innerHeight) this.height = window.innerHeight - 18;
    else if (document.documentElement && document.documentElement.clientHeight) 
      this.height = document.documentElement.clientHeight;
    else if (document.body && document.body.clientHeight) 
      this.height = document.body.clientHeight;
  },
  
  getScrollX: function () {
    this.scrollX = 0;
    if (typeof window.pageXOffset == "number") this.scrollX = window.pageXOffset;
    else if (document.documentElement && document.documentElement.scrollLeft)
      this.scrollX = document.documentElement.scrollLeft;
    else if (document.body && document.body.scrollLeft) 
      this.scrollX = document.body.scrollLeft; 
    else if (window.scrollX) this.scrollX = window.scrollX;
  },
  
  getScrollY: function () {
    this.scrollY = 0;    
    if (typeof window.pageYOffset == "number") this.scrollY = window.pageYOffset;
    else if (document.documentElement && document.documentElement.scrollTop)
      this.scrollY = document.documentElement.scrollTop;
    else if (document.body && document.body.scrollTop) 
      this.scrollY = document.body.scrollTop; 
    else if (window.scrollY) this.scrollY = window.scrollY;
  },
  
  getAll: function () {
    this.getWinWidth(); this.getWinHeight();
    this.getScrollX();  this.getScrollY();
  }
  
}


Tooltip.ttready = true;

 window.onload = function() {
   Tooltip.init();
 }

function doTooltip(e, msg) {
  if (typeof Tooltip == "undefined") return;

  if (!Tooltip.ready) {
    Tooltip.init();
    if (!Tooltip.ready) return;
  }

  Tooltip.show(e, msg);
}

function hideTip() {
  if ( typeof Tooltip == "undefined" || !Tooltip.ready ) return;
  Tooltip.hide();
}

/*
 * --------------------------------------------------------------------------------------
 */


function Browser() {
  var b=navigator.appName
  if (b=="Netscape") this.b="ns"
  else if (b=="Microsoft Internet Explorer") this.b="ie"
  else this.b=b
  this.version=navigator.appVersion
  this.v=parseInt(this.version)
  this.ns=(this.b=="ns" && this.v>=4)
  this.ns4=(this.b=="ns" && this.v==4)
  this.ns5=(this.b=="ns" && this.v==5)
  this.ie=(this.b=="ie" && this.v>=4)
  this.ie4=(this.version.indexOf('MSIE 4')>0)
  this.ie5=(this.version.indexOf('MSIE 5')>0)
  this.ie55=(this.version.indexOf('MSIE 5.5')>0)
  this.dom=((document.createRange&&(document.createRange().createContextualFragment))?true:false)
  this.min=(this.ns||this.ie)
  var ua=navigator.userAgent.toLowerCase()
  if (ua.indexOf("win")>-1) this.platform="win32"
  else if (ua.indexOf("mac")>-1) this.platform="mac"
  else this.platform = "other"
}
is=new Browser();


/// Bilder-Preload und Wechsel ///

function preload(imgObj,imgSrc){
  eval(imgObj+'= new Image()');
  eval(imgObj+'.src= "' + imgSrc+'"');
}
function changeImage(imgName,imgObj){
  window.status=' ';
  if(is.ns4) eval('document.images["' + imgName + '"].src= '+ imgObj + '.src');
  else document.images[imgName].src= eval(imgObj + ".src"); 
}


/*
 * Print function.
 */
function drucken(){
    if(is.platform=='mac'){
      alert('Your Browser doesn\'t support this function.\n Please press Apple + P to print this page.');
    } else {
      if(window.print) window.print();
    else {
      alert('Your browser does not support this function. You can either update your browser or press "Ctrl" + "P" to print this page.');
    }
  }
}

/*
 * Window open functions.
 */
function openHelpWindow(url){
  HelpPopUp(url, 'help');
}
 
function HelpPopUp(url,popup){

  window[popup] = window.open(url,popup,"width=900,height=630,scrollbars=yes,resizable=yes,status=no,toolbar=no,menubar=no");
  window[popup].focus();
}

function openHelpWindow_Fipotot(url){
  HelpPopUp_Fipotot(url, 'fipo');
}
 
function HelpPopUp_Fipotot(url,popup){

  window[popup] = window.open(url,popup,"width=350,height=350,scrollbars=yes,resizable=yes,status=no,toolbar=no,menubar=no");
  window[popup].focus();
}


function showHighlight(row) {
  var s = row.className.substring(0,1);
  switch(s) {
    case 'b':
      row.className = 'odd-selected';
      break;
    case '':
      row.className = 'even-selected';
      break;
  }
}

function clearHighlight(row) {
  var s = row.className.substring(0,1);
  switch(s) {
    case 'o':
      row.className = 'bggrau';
      break;
    case 'e':
      row.className = 'bghellgrau';
      break;
  }
}
function submitenter(myform,e)
{
  var keycode;
  if (window.event) keycode = window.event.keyCode;
  else if (e) keycode = e.which;
  else return true;
  if (keycode == 13)
     {
     myform.submit();
     return false;
     }
  else
     return true;
}

function setWTCookie(name, value, expires, path, domain, secure) {
  // set time, it's in milliseconds
  var today = new Date();
  today.setTime(today.getTime());

  if (expires) {
    expires = expires * 1000 * 60 * 60 * 24;
  }

  var expires_date = new Date(today.getTime() + (expires));

  document.cookie = name + "=" + escape(value) +
    ((expires) ? ";expires=" + expires_date.toGMTString() : "") + 
    ((path) ? ";path=" + path : "") + 
    ((domain) ? ";domain=" + domain : "") +
    ((secure) ? ";secure" : "");
}

function formSubmit(formID)
{
    ele = document.getElementById(formID);
    if (!ele) {
        return;
    }
    ele.submit();
}

function switchDisabled(elementId, checkboxId)
{
  ele = document.getElementById(elementId);
  checkboxElement = document.getElementById(checkboxId);

  if(checkboxElement.checked == true)
  {
    ele.disabled = "true";
  }
  else
  {
    ele.disabled = "";
  }
}

