if ((typeof Jesper=='undefined')){
    var Jesper = {};
}
if ((typeof Jesper.link=='undefined')){
    Jesper.link = {};
}
Jesper.link.Bubbles = new Class({
    isEnabled : false,
    initialize: function(el){
        this.element = document.id(el) || document;
        this.enable();
    },
    enable : function (id)
    {
        if (document.id('btc')==null)
            document.getElementsByTagName("body")[0].appendChild(new Element('span',{'id':'btc','styles':{'position':'absolute','z-index':'10000'}}));
        this.element.getElements('a[title]').each(function(el){
            if (!el.hasClass('info'))
                this.prepare(el)
        }.bind(this));
    },
    disable : function ()
    {
        if(this.isEnabled)
        {
            this.element.getElements('a.bubbles').each(function(el){
                el.removeEvents('mouseover');
                el.removeEvent('mouseout',this.hideTooltip);
                el.removeEvent('mousemove',this.locate);
                this.isEnabled = false;
            }.bind(this));
        }
    },
    enableEvents : function()
    {
        if(!this.isEnabled)
        {
            this.element.getElements('a.bubbles').each(function(el){
                el.addEvent('mouseover',this.showTooltip.bindWithEvent(this,el));
                el.addEvent('mouseout',this.hideTooltip);
                el.addEvent('mousemove',this.locate);
                this.isEnabled = true;
            }.bind(this));
        }
    },
    prepare : function (el)
    {
        var tooltip, title, b, span, l, parts, header, cn, b;
        title=el.get("title");
        el.addClass('bubbles');
        el.store('ttitle',title);
        el.erase("title");
        tooltip = new Element('span',{'class':'tooltip'});
        tooltip.setStyle('display','block');
        span = new Element("span");
        span.setStyle('display','block');
        
        // Replaces "Lorum -- Ipsum" with <h2>Lorum</h2><span>Ipsum</span>
        parts=title.split(/ -- /);
        if (el.hasClass('snapshot') && el.getProperty('id') != null) {
            var _id = el.getProperty('id').split('-');
            _id = _id[1];
            var snap = new Element('img', {'src': 'http://static.jesper.nu/snaps/'+_id+'.jpg'});
            //snap.setStyle('border', '2px solid #579333');
                
            span.appendChild(snap);
            tooltip.setStyles({
                    "width": "320",
                    "height": "240",
                    '-moz-box-shadow': '.5em .5em 3em #444',
                    '-webkit-box-shadow': '.5em .5em 2.0em #444',
                    'box-shadow': '.5em .5em 3em #444'
                    });
            tooltip.removeClass('tooltip');
        } else {
            if(parts[1] != null)
            {
                header=new Element("h2");
                header.appendChild(document.createTextNode(parts[0]));
                tooltip.appendChild(header);
                span.appendChild(document.createTextNode(parts[1]));
            }
            else
                span.appendChild(document.createTextNode(title));
        }
        
        tooltip.appendChild(span);
        this.applyStyle(tooltip);
        el.store('tooltip',tooltip);
        el.addEvent('mouseover',this.showTooltip.bindWithEvent(this,el));
        el.addEvent('mouseout',this.hideTooltip);
        el.addEvent('mousemove',this.locate);
        this.isEnabled = true;
        if (!Browser.Engine.presto){
           el.getChildren('img[alt]').removeProperties('title','alt');
        }
    },
    applyStyle : function(el)
    {
        el.style.filter="alpha(opacity:95)";
        el.style.KHTMLOpacity="0.95";
        el.style.MozOpacity="0.95";
        el.style.opacity="0.95";
        el.style.MozBorderRadius="1px";
    },
    locate: function(e)
    {
      document.id("btc").setStyles({'top':(e.page.y+20)+'px','left':(e.page.x-50)+'px'});
    },
    showTooltip: function (e,el){
        document.id("btc").appendChild(el.retrieve('tooltip'));
        this.locate(e);
    },
    hideTooltip: function (e){
        var d=document.getElementById("btc");
        if(d.childNodes.length>0) d.removeChild(d.firstChild);
    }
});

Jesper.link.GameInfo = new Class({
    Extends: Jesper.link.Bubbles,

    enable : function (id)
    {
        if (document.id('btc')==null)
            document.getElementsByTagName("body")[0].appendChild(new Element('span',{'id':'btc','styles':{'position':'absolute','z-index':'10000'}}));
        this.element.getElements('a.info[title]').each(function(el){
            this.prepare(el)
        }.bind(this));
    },
    prepare : function (el)
    {
        var tooltip, title, span,span2, img,header, parts;
        title=el.get("title");
        el.addClass('bubbles');
        el.store('ttitle',title);
        el.erase("title");
        tooltip = new Element('span',{'class':'tooltip tooltip-img'});
        tooltip.setStyle('display','block');
        span = new Element("span");
        span.setStyle('display','block');

        parts=title.split(/ -- /);
        var _id = el.getProperty('id').split('-');
        _id = _id[1];

        img = new Element('img');
        img.set('src','http://omega.jesper.nu/game.image.php?id='+_id);
        img.setStyle('float','right');
        tooltip.appendChild(img);
        if(parts[1] != null)
        {
            header=new Element("h2");
            header.appendChild(document.createTextNode(parts[0]));
            tooltip.appendChild(header);
            span.appendChild(document.createTextNode(parts[1]));
        }
        else
            span.appendChild(document.createTextNode(title));
tooltip.appendChild(span);

        if(parts[2] != null)
        {
            span2 = new Element("span");
            span2.setStyle('display','block');
            var t = '<br /><strong>Kategori: </strong>'+parts[2];
            span2.set('html',t);
tooltip.appendChild(span2);
        }
        this.applyStyle(tooltip);
        el.store('tooltip',tooltip);
        el.addEvent('mouseover',this.showTooltip.bindWithEvent(this,el));
        el.addEvent('mouseout',this.hideTooltip);
        el.addEvent('mousemove',this.locate);
        this.isEnabled = true;
        if (!Browser.Engine.presto){
           el.getChildren('img[alt]').removeProperties('title','alt');
        }
    }

});

