var isMSIE=/*@cc_on!@*/false; // http://dean.edwards.name/weblog/2007/03/sniff/
var isIEmac=false; /*@cc_on @if(@_jscript&&!(@_win32||@_win16)&& 
(@_jscript_version<5.5)) isIEmac=true; @end @*/
var undefined;
function isEmpty(s){return ((s=='')||/^\s*$/.test(s));}
var addBookmarkObj = {
  linkText:'Добавить страницу в Избранное',
  title:document.title,
  URL:location.href,
  addTextLink:function(parId){
    if(addBookmarkObj.checkMobileDevice()) return;
    var a=addBookmarkObj.makeLink(parId,1);
    if(a){
      a.appendChild(document.createTextNode(addBookmarkObj.linkText));
      return;
    }
    var cont=addBookmarkObj.getParent(parId);
    if(!cont) return;
    var elm=document.createElement('span');
    elm.appendChild(document.createTextNode(addBookmarkObj.findKeys()));
    cont.appendChild(elm);
  },
  addImageLink:function(parId,imgPath){
    if(!imgPath || isEmpty(imgPath)) return;
    if(addBookmarkObj.checkMobileDevice()) return;
    var o=addBookmarkObj,a=o.makeLink(parId),img=document.createElement('img');
    img.title=img.alt=o.modal?o.linkText:o.findKeys();
    img.src=imgPath;
    a.appendChild(img);
  },
  makeLink:function(parId,isText){
    var cont=addBookmarkObj.getParent(parId);
    if(!cont) return null;
    var a=document.createElement('a');
    a.href=addBookmarkObj.URL;
    var s=document.createElement('div').style;
    var isFx35plus=((navigator.userAgent.toLowerCase().indexOf('firefox')!=-1)
      && (s.wordWrap!==undefined) && (s.MozTransform!==undefined));
    if(window.external && isMSIE && !isIEmac){
      a.onclick=function(){ // IE/Win
        try {
          window.external.AddFavorite(addBookmarkObj.URL,addBookmarkObj.title);
        } catch(ex){
          addBookmarkObj.displayMsg(addBookmarkObj.findKeys());
        }
        return false;
      }
      addBookmarkObj.modal=1;
    } else if(window.opera || isFx35plus){ // Opera 7+, Firefox 3.5+
      a.title=addBookmarkObj.title,a.rel='sidebar';
      addBookmarkObj.modal=1;
    } else if(isText) {
      return null;
    } else {
      a.onclick=function(){
        addBookmarkObj.displayMsg(this.firstChild.title);
        return false;
      }
    }
    return cont.appendChild(a);
  },
  displayMsg:function(t){
  	alert('After closing this dialog, '+t.charAt(0).toLowerCase()+t.slice(1));
  },
  getParent:function(parId){
    if(!document.getElementById || !document.createTextNode) return null;
    parId=((typeof(parId)=='string')&&!isEmpty(parId))
      ?parId:'addBookmarkContainer';
    return document.getElementById(parId)||null;
  },
  findKeys:function(){
    // user agent sniffing is bad in general, but this is one of the times 
    // when it's really necessary
    var ua=navigator.userAgent.toLowerCase(),Webkit=(ua.indexOf('webkit')!=-1),
      Mac=/mac(\s*os|intosh|.*p(ower)?pc)/.test(ua),
      str=(Mac?'Command/Cmd':'CTRL');
    if(window.opera && (!opera.version || (opera.version()<9))) {
      str+=' + T';  // Opera versions before 9
    } else if(ua.indexOf('konqueror')!=-1) {
      str+=' + B'; // Konqueror
    } else if(window.opera || window.home || Webkit || isMSIE || Mac) {
      // IE, Firefox, Netscape, Safari, Google Chrome, Opera 9+, iCab, IE5/Mac
      str+=' + D';
    }
   // return ((str)?'Press '+str+' to bookmark this page.':str);
   return "";
  },
  checkMobileDevice:function(){
    var r='iphone|ipod|android|palm|symbian|windows ce|windows phone|iemobile|'+
    'blackberry|smartphone|netfront|opera m|htc[-_].*opera';
    return (new RegExp(r)).test(navigator.userAgent.toLowerCase());
  }
}
var LoadHandler = {
  handlers:[],
  add:function(fn){
    if(window.onload!=LoadHandler.theHandler) LoadHandler._push(window.onload);
    LoadHandler._push(fn);
    window.onload=LoadHandler.theHandler;
  },
  _push:function(fn){
    if(typeof(fn)!='function') return;
    LoadHandler.handlers[LoadHandler.handlers.length]=fn;
  },
  theHandler:function(){
    var handlers=LoadHandler.handlers,i=-1,fn;
    while(fn=handlers[++i]) fn();
  }
}

