var addBMObj = {
  linkText:'bookmark',
  addTextLink:function(parId){
    var a=addBMObj.makeLink(parId);
    if(!a) return;
    a.appendChild(document.createTextNode(addBMObj.linkText));
  },
  makeLink:function(parId) {
    if(!document.getElementById || !document.createTextNode) return null;
    parId=((typeof(parId)=='string')&&!isEmpty(parId))
      ?parId:'addBMContainer';
    var cont=document.getElementById(parId);
    if(!cont) return null;
    var a=document.createElement('a');
    a.href=location.href;
    if(window.opera) {
      a.rel='sidebar'; // Opera 7+
    } else {
      // fkt. nicht mit Opera 7+ bei Links mit onclick-Handler
      a.onclick=function() {
        addBMObj.exec(this.href,this.title);
        return false;
      }
    }
    a.title=document.title;
    a.id = 'bookmarken';
    return cont.appendChild(a);
  },
  exec:function(url, title) {
    var ua=navigator.userAgent.toLowerCase();
    var isKonq=(ua.indexOf('konqueror')!=-1);
    var isSafari=(ua.indexOf('webkit')!=-1);
    var isMac=(ua.indexOf('mac')!=-1);
    var buttonStr=isMac?'Command/Cmd':'CTRL';

    if(window.external && (!document.createTextNode ||
      (typeof(window.external.AddFavorite)=='unknown'))) {
        window.external.AddFavorite(url, title); // IE/Win
    } else if(isKonq) {
      alert('Bitte drücken Sie CTRL + B, um diese Seite zu bookmarken.');
    } else if(window.opera) {
      void(0); // do nothing here (Opera 7+)
    } else if(window.home || isSafari) { // Firefox, Netscape, Safari, iCab
      alert('Bitte drücken Sie '+buttonStr+' + D, um diese Seite zu bookmarken.');
    } else if(!window.print || isMac) { // IE5/Mac and Safari 1.0
      alert('Bitte drücken Sie Command/Cmd + D, um diese Seite zu bookmarken.');    
    } else {
      alert('Um diese Seite zu bookmarken, benutzen Sie bitte das Menü '+
        'in Ihrem Browser.');
    }
  }
}

function isEmpty(s){return ((s=='')||/^\s*$/.test(s));}

function bm_addEvent(el,etype,fn) {
  if(el.addEventListener && (!window.opera || opera.version) &&
  (etype!='load')) {
    el.addEventListener(etype,fn,false);
  } else if(el.attachEvent) {
    el.attachEvent('on'+etype,fn);
  } else {
    if(typeof(fn) != "function") return;
    if(typeof(window.earlyNS4)=='undefined') {
      // Netscape < 4.02
      window.earlyNS4=((navigator.appName.toLowerCase()=='netscape')&&
      (parseFloat(navigator.appVersion)<4.02)&&document.layers);
    }
    if((typeof(el['on'+etype])=="function")&&!window.earlyNS4) {
      var tempFunc = el['on'+etype];
      el['on'+etype]=function(e){
        var a=tempFunc(e),b=fn(e);
        a=(typeof(a)=='undefined')?true:a;
        b=(typeof(b)=='undefined')?true:b;
        return (a&&b);
      }
    } else {
      el['on'+etype]=fn;
    }
  }
}

bm_addEvent(window,'load',addBMObj.addTextLink);
