/*
    WebSnapr - Preview Bubble Javascript
    Written by Juan Xavier Larrea 
    http://www.websnapr.com - xavier@websnapr.com   
    
*/


// Point this variable to the correct location of the bg.png file
var bubbleImagePath = 'App_Themes/default/images/bgBubble.png';



// DO NOT EDIT BENEATH THIS
if(typeof Array.prototype.push!="function"){
    Array.prototype.push=ArrayPush;
    function ArrayPush(_1){
        this[this.length]=_1;
    }
}

function WSR_getElementsByClassName(_2,_3,_4){

    var _5=(_3=="*"&&_2.all)?_2.all:_2.getElementsByTagName(_3);
    var _6=new Array();
    
    _4=_4.replace(/\-/g,"\\-");
    
    var _7=new RegExp("(^|\\s)"+_4+"(\\s|$)");
    var _8;
    
    for(var i=0;i<_5.length;i++){
        _8=_5[i];
        if(_7.test(_8.className)){
        _6.push(_8);
        }
    }
    
    return (_6);
}

function bindBubbles(e){
    lbActions=WSR_getElementsByClassName(document,"img","previewlink");
    
    for(i=0;i<lbActions.length;i++){
        if(window.addEventListener){
            lbActions[i].addEventListener("mouseover",attachBubble,false);
            lbActions[i].addEventListener("mouseout",detachBubble,false);
        }else{
            lbActions[i].attachEvent("onmouseover",attachBubble);
            lbActions[i].attachEvent("onmouseout",detachBubble);
        }
    }
    
    lbPopups=WSR_getElementsByClassName(document,"img","popuplink");
    
    for(i=0;i<lbPopups.length;i++){
        if(window.addEventListener){
            lbPopups[i].addEventListener("mouseover",attachPopup,false);
            lbPopups[i].addEventListener("mouseout",detachPopUp,false);
        }else{
            lbPopups[i].attachEvent("onmouseover",attachPopup);
            lbPopups[i].attachEvent("onmouseout",detachPopUp);
        }
    }
    
}

function attachPopup(_b){
    
    var _c;
    
    if(_b["srcElement"]){
	    _c=_b["srcElement"];
    }else{
	    _c=_b["target"];
    }
    if (_c.href == undefined){
	    _c=_c.parentNode;
    }
    
    var _d=_c.href;
    var _w=_c.width;
    var _h=_c.height;
    
    // filter rar, exe, zip etc
    var noLinkTest = /(.rar|.zip|.exe)$/;
    if (noLinkTest.test(_d)) return
    
    var _e=findPos(_c)[0]+5;
    var _f=findPos(_c)[1]+17;
    var _10=document.createElement("div");
    
    document.getElementsByTagName("body")[0].appendChild(_10);
    _10.className="popUpLayer";
    if (BrowserDetect.browser == 'Explorer') {
        _10.style.width= (_w + 50)+ "px";
        _10.style.position="absolute";
        _10.style.top=_f;
        _10.style.zIndex=99999;
        _10.style.left=_e;
        _10.style.textAlign="left";
        _10.style.height= (_h + 50)+ "px";
        _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";
        _10.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bubbleImagePath + "',sizingMethod='image')";
    } else {
        _10.setAttribute("style","text-align: center; z-index: 99999; position: absolute; top: "+_f+"px ; left: "+_e+"px ; background: url("+ bubbleImagePath +") no-repeat; width: " + _w + "px; height: " + _h + "px; 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 ; background: url("+ bubbleImagePath +") no-repeat; width: " + _w + "px; height: " + _h + "px; padding: 0; margin: 0;");
    
    }
    
    var img=document.createElement("img");
    _10.appendChild(img);

    if (BrowserDetect.browser == 'Explorer') {
        img.style.paddingTop="0";
        img.style.paddingLeft="0";
        img.style.paddingBottom="0";
        img.style.paddingRight="0";
        img.style.margin="auto";
        img.style.marginTop="27px";
        img.style.marginLeft="25px";
        img.style.marginBottom="0";
        img.style.marginRight="0";
        img.style.borderTop="0";
        img.style.borderLeft="0";
        img.style.borderBottom="0";
        img.style.borderRight="0";
    } else {
        img.setAttribute("style","padding-top: 0; padding-left: 0; padding-right: 0; padding-bottom: 0; margin-top: 27px; margin-left: 12px; margin-bottom: 0; margin-right: 0; border: 0");
    }
    
    img.setAttribute("src", _d);
    img.setAttribute("width", _w);
    img.setAttribute("height",_h);
    img.setAttribute("alt","Preview");
}

function detachPopUp(_12){
    lbPopups=WSR_getElementsByClassName(document,"div","popUpLayer");
    for(i=0;i<lbPopups.length;i++){
        lbPopups[i].parentNode.removeChild(lbPopups[i]);
    }
}

function attachBubble(_b){
    var _c;
    
    if(_b["srcElement"]){
	    _c=_b["srcElement"];
    }else{
	    _c=_b["target"];
    }
    if (_c.href == undefined){
	    _c=_c.parentNode;
    }
    
    var _d=_c.href;

    // filter rar, exe, zip etc
    var noLinkTest = /(.rar|.zip|.exe)$/;
    if (noLinkTest.test(_d)) return

    var _e=findPos(_c)[0]+5;
    var _f=findPos(_c)[1]+17;
    var _10=document.createElement("div");
    
    document.getElementsByTagName("body")[0].appendChild(_10);
    _10.className="previewbubble";
    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";
        _10.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bubbleImagePath + "',sizingMethod='image')";
    } else {
        _10.setAttribute("style","text-align: center; z-index: 99999; position: absolute; top: "+_f+"px ; left: "+_e+"px ; background: url("+ bubbleImagePath +") no-repeat; 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 ; background: url("+ bubbleImagePath +") no-repeat; width: 240px; height: 190px; padding: 0; margin: 0;");
    
    }
    
    var img=document.createElement("img");
    _10.appendChild(img);

    if (BrowserDetect.browser == 'Explorer') {
        img.style.paddingTop="0";
        img.style.paddingLeft="0";
        img.style.paddingBottom="0";
        img.style.paddingRight="0";
        img.style.margin="auto";
        img.style.marginTop="27px";
        img.style.marginLeft="25px";
        img.style.marginBottom="0";
        img.style.marginRight="0";
        img.style.borderTop="0";
        img.style.borderLeft="0";
        img.style.borderBottom="0";
        img.style.borderRight="0";
    } else {
        img.setAttribute("style","padding-top: 0; padding-left: 0; padding-right: 0; padding-bottom: 0; margin-top: 27px; margin-left: 12px; margin-bottom: 0; margin-right: 0; border: 0");
    }
    
    img.setAttribute("src", _d);
    img.setAttribute("width",202);
    img.setAttribute("height",152);
    img.setAttribute("alt","Snapshot");

}

function detachBubble(_12){
    lbActions=WSR_getElementsByClassName(document,"div","previewbubble");
    for(i=0;i<lbActions.length;i++){
        lbActions[i].parentNode.removeChild(lbActions[i]);
    }
}

if(window.addEventListener){
    addEventListener("load",bindBubbles,false);
}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];
}

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();