var isDOM=document.getElementById?true:false;
var isOpera=window.opera&&isDOM&&document.readyState;
var isMSIE=document.all&&document.all.item&&!isOpera;
var currentD=null;

jsc= {
    tt: document.createElement('div'),
    c: null,
    g: false,
    ttCoords: function (e) {
        if (jsc.g) {
            var x,y;
            if (e.pageY) {
                x=e.pageX;
                y=e.pageY;
            } else if (window.event && document.documentElement && document.documentElement.scrollTop) {
                x=event.clientX+document.documentElement.scrollLeft;
                y=event.clientY+document.documentElement.scrollTop;
            } else if (window.event && document.body) {
                x=event.clientX+document.body.scrollLeft;
                y=event.clientY+document.body.scrollTop;
            } else {
                x=800;
                y=600;
            }
            jsc.ttMove(x,y);
        }
    },
    ttInit: function () {
        jsc.tt.setAttribute('id', 'tooltip');
        document.getElementsByTagName('body')[0].appendChild(jsc.tt);
        jsc.addEvent(document.getElementsByTagName('body')[0], 'mousemove', jsc.ttCoords);
        jsc.addEvent(document.getElementsByTagName('body')[0], 'contextmenu', jsc.ttHide);
        jsc.addEvent(window, 'scroll', jsc.ttHide);
        jsc.addEvent(window, 'click', jsc.ttHide);
        jsc.addEvent(document.getElementsByTagName('body')[0], 'mouseover', jsc.ttShow);
        jsc.ttMove(-99,-99);
    },
    ttShow: function (e) {
        e=e||window.event;
        if (!e || typeof(window.currentD)=='undefined') return;
        var d=e.target||e.srcElement;

        var ttitleCont=d.getAttribute('ttitle');
        if (!ttitleCont) {
            var titleCont=d.getAttribute('title');
            var parTitleCont=d.parentNode.getAttribute('title');
            var parTtitleCont=d.parentNode.getAttribute('ttitle');
            if (parTtitleCont) parTitleCont=parTtitleCont;
            if (titleCont && parTitleCont && titleCont!=parTitleCont) titleCont=parTitleCont+'. '+titleCont;
            if (titleCont) {
                jsc.tt.appendChild(document.createTextNode(titleCont));
                d.setAttribute('ttitle', titleCont);
                if (isMSIE) d.setAttribute('title','');
                else d.removeAttribute('title');
                if (parTitleCont && !parTtitleCont) {
                    d.parentNode.setAttribute('ttitle',parTitleCont);
                    if (isMSIE) d.parentNode.setAttribute('title','');
                    else d.parentNode.removeAttribute('title');
                }
                if (isMSIE && d.getAttribute('alt') && d.complete) d.setAttribute('alt','');
            }
        } else jsc.tt.appendChild(document.createTextNode(ttitleCont));

        var hrefCont=d.getAttribute('href');
        var parHrefCont=d.parentNode.getAttribute('href');
if (parHrefCont && !hrefCont) hrefCont=parHrefCont;

        if (hrefCont) {
/*
            if (hrefCont.indexOf('ftp://')!=-1) ahrefCont='ftp-link';
            else if (hrefCont.indexOf('irc://')!=-1) ahrefCont='irc-link';
            else if (hrefCont.indexOf('mailto:')!=-1) ahrefCont='email-link';
            else if (hrefCont.indexOf('javascript:')!=-1) ahrefCont='local link';
            else
*/
    ahrefCont=false;
            if (ahrefCont) {
                var ahrefEl=document.createElement('div');
                ahrefEl.setAttribute('id','ahref');
                ahrefEl.appendChild(document.createTextNode(ahrefCont));
                jsc.tt.appendChild(ahrefEl);
            }
        }

        var isBlank=false;
        if (d.getAttribute('tagret')=='_blank' || d.parentNode.getAttribute('target')=='_blank') isBlank=true;
        else {
/*
            if (hrefCont && (hrefCont.match(/(?:http|ftp):\/\//)!=null && hrefCont.indexOf('')==-1)) {
                if (!parHrefCont) d.target='_blank';
                else d.parentNode.target='_blank';
                isBlank=true;
            }
*/
        }
        if (isBlank) {
            var blankEl=document.createElement('div');
            blankEl.setAttribute('id','blank');
            //blankEl.appendChild(document.createTextNode('откроется в новом окне'));
            //jsc.tt.appendChild(blankEl);
        }

        if (jsc.tt.firstChild) {
            jsc.addEvent(d, 'mouseout', jsc.ttHide);
            currentD=d;
            jsc.c=setTimeout("jsc.tt.style.visibility='visible';", '50');
            jsc.g=true;
        } else return;
    },
    ttHide: function () {
        if (currentD) {
            jsc.tt.style.visibility='hidden';
            jsc.removeEvent(currentD, 'mouseout', jsc.ttHide);
            while (child=jsc.tt.firstChild) jsc.tt.removeChild(child);
            clearTimeout(jsc.c);
            currentD=null;
            jsc.g=false;
            jsc.ttMove(-99,-99);
        }
    },
    addEvent: function (o, e, a) {
        if (o.addEventListener) o.addEventListener (e, a, false);
        else if (o.attachEvent) o.attachEvent ('on'+e, a);
        else return null;
    },
    removeEvent: function (o, e, a) {
        if (o.removeEventListener) o.removeEventListener (e, a, false);
        else if (o.detachEvent) o.detachEvent ('on'+e, a);
        else return null;
    },
    ttMove: function (x, y) {
        var w_width, w_height;
        if (self.innerHeight) {
            w_width=self.innerWidth+self.pageXOffset;
            w_height=self.innerHeight+self.pageYOffset;
        } else if (document.documentElement.clientHeight || document.documentElement.scrollTop) {
            w_width=document.documentElement.clientWidth+document.documentElement.scrollLeft;
            w_height=document.documentElement.clientHeight+document.documentElement.scrollTop;
        } else if (document.body.clientHeight || document.body.scrollTop) {
            w_width=document.body.clientWidth+document.body.scrollLeft;
            w_height=document.body.clientHeight+document.body.scrollTop;
        } else {
            w_width=800;
            w_height=600;
        }

        if (isMSIE) jsc.tt.style.width='auto';
        if (isMSIE && jsc.tt.offsetWidth>300) jsc.tt.style.width=300+'px';

        jsc.tt.style.left=((w_width/2)<x)?(x-jsc.tt.offsetWidth+'px'):(x+12+'px');
        jsc.tt.style.top=((w_height/2)<y)?(y-jsc.tt.offsetHeight-15+'px'):(y+15+'px');
    }
}
if (document.getElementById && document.createElement && document.getElementsByTagName) jsc.addEvent(window,'load',function(){
  jsc.ttInit();
});