/*
    WebSnapr - Preview Bubble Javascript
    Written by Juan Xavier Larrea 
    http://www.websnapr.com
    last modified: Aug 2007, mo
*/


// Point this variable to the correct location of the bg.png file
var mObjList = new Array();
var mMsgList = new Array();
var mPrefix = "bubble";
var mCount = 0;
var mTimeClosed = 4;//In seconds

var mIsHome;

// DO NOT EDIT BENEATH THIS
if(typeof Array.prototype.push!="function"){
    Array.prototype.push=ArrayPush;
    function ArrayPush(_1){
        this[this.length]=_1;
    }
}

function Bubble(aDiv, aText, aMsg){
    this.bdiv = aDiv;
    this.id=mPrefix+mCount;
    this.text=aText;
    this.msg=aMsg;
    this.loadBubble=loadBubble;
    mIsHome = false;
    mCount++;
}

function loadBubble(){    
    var div = document.getElementById(this.bdiv);
    div.innerHTML = '<a id="'+this.id+'" class="previewlink" href="#" onMouseOut="javascript:detachBubbleWithTimer()">'+this.text+'</a>';
    mObjList.push(document.getElementById(this.id));
    mMsgList.push(this.msg);
}

var mCloseId = null;
var mCloseSecond = 1;
var mIsOpened = true;
function detachBubbleWithTimer(){    
    if(mIsOpened){
        if(mCloseSecond>mTimeClosed){
            detachBubble(mCloseId);        
        }else{ 
            mCloseSecond = mCloseSecond +1;
            setTimeout(detachBubbleWithTimer,1000);
        }    
    }
}

function bindBubbles(e){
    try{
        LoadBubbles();
        
        for(i=0;i<mObjList.length;i++){
            if(window.addEventListener){
                mObjList[i].addEventListener("mouseover",attachBubble,false);
            }else{
                mObjList[i].attachEvent("onmouseover",attachBubble);
            }
        }
    }catch(ex){} 
}

function attachBubble(_b){
    var _c;
    if(_b["srcElement"]){
        _c=_b["srcElement"];
    }else{
        _c=_b["target"];
    }
    /*if (_c.href == undefined){
        _c=_c.parentNode;
    }*/

    var _e;
    if (mIsHome) {
        _e=findPos(_c)[0]+90;
    } else {
        _e=findPos(_c)[0]-200;
    }
    
    var _f=findPos(_c)[1]-80;
    if(document.getElementById('div'+_c.id)!=null)
        return;    
    var _10=document.createElement("div");
    document.getElementsByTagName("body")[0].appendChild(_10);
    _10.className="previewbubble";
    _10.id='div'+_c.id;    
    if (BrowserDetect.browser == 'Explorer') {
        _10.style.width="240px";
        _10.style.position="absolute";
        _10.style.top=_f;
        _10.style.zIndex=99999;
        _10.style.left=_e;
        _10.style.textAlign="left";
        _10.style.height="190px";
        _10.style.paddingTop="0";
        _10.style.paddingLeft="0";
        _10.style.paddingBottom="0";
        _10.style.paddingRight="0";
        _10.style.marginTop="0";
        _10.style.marginLeft="0";
        _10.style.marginBottom="0";
        _10.style.marginRight="0";
    } else {
        _10.setAttribute("style","text-align: center; z-index: 99999; position: absolute; top: "+_f
                         +"px ; left: "+_e+"px ; width: 240px; height: 190px; padding: 0; margin: 0;");
    }
    if (BrowserDetect.browser == 'Safari' || BrowserDetect.browser == 'Konqueror' ) {
        var _height = _f;
        _10.setAttribute("style","text-align: center; z-index: 99999; position: absolute; top: "+ 
                         _height +"px ; left: "+_e+"px ; width: 240px; height: 190px; padding: 0; margin: 0;");
    }
    var bpos = _c.id.substr(_c.id.length-1);
    _10.innerHTML = GetContent(_10.id,mMsgList[bpos]);
    mCount++;
    
    mCloseId = _10.id;
    mIsOpened = true;
    //detachBubbleWithTimer();
}

function detachBubble(objId){
    var div = document.getElementById(objId);
    div.parentNode.removeChild(div);
    mCloseSecond = 1;
    mIsOpened = false;  
}

if(window.addEventListener){
    addEventListener("load",bindBubbles,true);
    //true;
}else{
    attachEvent("onload",bindBubbles);
}

function findPos(obj){
    var _14=curtop=0;
    if(obj.offsetParent){
        _14=obj.offsetLeft;
        curtop=obj.offsetTop;
        while(obj=obj.offsetParent){
            _14+=obj.offsetLeft;
            curtop+=obj.offsetTop;
        }
    }
    return [_14,curtop];
}

function GetContent(objId, aText){
var image;
if (mIsHome) {
    image = 'Images/payments_12b.gif';
} else {
    image = 'Images/payments_12.gif';
}
var content='<table width="229" border="0" cellspacing="0" cellpadding="0">'+
            '<tr>'+
                '<td><img src="Images/payments_03.gif" width="229" height="9" alt="" /></td>'+
            '</tr>'+
            '<tr>'+
                '<td><table width="100%" border="0" cellspacing="0" cellpadding="0">'+
                  '<tr>'+
                      '<td background="Images/payments_06.gif"></td>'+
                      '<td rowspan="2" background="Images/payments_07.gif" style="background-position:top; background-repeat: repeat-x">'+
					  '<table width="100%" border="0" cellspacing="0" cellpadding="0">'+
                        '<tr>'+
                          '<td><div align="right" style="width:216px"><a href="javascript:function();" onclick="javascript:detachBubble(\''+objId+'\');">'+
                            '<img src="Images/close.jpg" width="11" height="11" border="0" /></a></div></td>'+
                        '</tr>'+
                        '<tr>'+
                          '<td height="43"><span style="background-position:top;background-repeat:repeat-x">'+aText+'</span></td>'+
                        '</tr>'+
                      '</table></td>'+
                      '<td background="Images/payments_10.gif"></td>'+
                    '</tr>'+
                  '<tr>'+
                    '<td width="4" height="43" background="Images/payments_06.gif"></td>'+
                    ''+
                    '<td width="10" background="Images/payments_10.gif"></td>'+
                  '</tr>'+
                '</table></td>'+
            '</tr>'+
            '<tr>'+
                '<td><img src="'+image+'" width="229" height="25" /></td>'+
              '</tr>'+          
            '</table>';    
return content;
}

var BrowserDetect = {
    init: function () {
        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
        this.version = this.searchVersion(navigator.userAgent)
            || this.searchVersion(navigator.appVersion)
            || "an unknown version";
        this.OS = this.searchString(this.dataOS) || "an unknown OS";
    },
    searchString: function (data) {
        for (var i=0;i<data.length;i++)    {
            var dataString = data[i].string;
            var dataProp = data[i].prop;
            this.versionSearchString = data[i].versionSearch || data[i].identity;
            if (dataString) {
                if (dataString.indexOf(data[i].subString) != -1)
                    return data[i].identity;
            }
            else if (dataProp)
                return data[i].identity;
        }
    },
    searchVersion: function (dataString) {
        var index = dataString.indexOf(this.versionSearchString);
        if (index == -1) return;
        return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
    },
    dataBrowser: [
        {     string: navigator.userAgent,
            subString: "OmniWeb",
            versionSearch: "OmniWeb/",
            identity: "OmniWeb"
        },
        {
            string: navigator.vendor,
            subString: "Apple",
            identity: "Safari"
        },
        {
            prop: window.opera,
            identity: "Opera"
        },
        {
            string: navigator.vendor,
            subString: "iCab",
            identity: "iCab"
        },
        {
            string: navigator.vendor,
            subString: "KDE",
            identity: "Konqueror"
        },
        {
            string: navigator.userAgent,
            subString: "Firefox",
            identity: "Firefox"
        },
        {
            string: navigator.vendor,
            subString: "Camino",
            identity: "Camino"
        },
        {        // for newer Netscapes (6+)
            string: navigator.userAgent,
            subString: "Netscape",
            identity: "Netscape"
        },
        {
            string: navigator.userAgent,
            subString: "MSIE",
            identity: "Explorer",
            versionSearch: "MSIE"
        },
        {
            string: navigator.userAgent,
            subString: "Gecko",
            identity: "Mozilla",
            versionSearch: "rv"
        },
        {         // for older Netscapes (4-)
            string: navigator.userAgent,
            subString: "Mozilla",
            identity: "Netscape",
            versionSearch: "Mozilla"
        }
    ],
    dataOS : [
        {
            string: navigator.platform,
            subString: "Win",
            identity: "Windows"
        },
        {
            string: navigator.platform,
            subString: "Mac",
            identity: "Mac"
        },
        {
            string: navigator.platform,
            subString: "Linux",
            identity: "Linux"
        }
    ]

};
BrowserDetect.init();
