+++ /dev/null
-/*\r
- WebSnapr - Preview Bubble Javascript\r
- Written by Juan Xavier Larrea \r
- http://www.websnapr.com - xavier@websnapr.com \r
- \r
-*/\r
-\r
-// Point this variable to the correct location of the bg.png file\r
-var bubbleImageUp = 'resources/bubble_up.png';\r
-var bubbleImageDown = 'resources/bubble_down.png';\r
-\r
-if(typeof Array.prototype.push!="function"){\r
- Array.prototype.push=ArrayPush;\r
-\r
- function ArrayPush(_1){\r
- this[this.length]=_1;\r
- }\r
-}\r
-\r
-function WSR_getElementsByClassName(oElm, strTagName, oClassNames){\r
- var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);\r
- var arrReturnElements = new Array();\r
- var arrRegExpClassNames = new Array();\r
- if(typeof oClassNames == "object"){\r
- for(var i=0; i<oClassNames.length; i++){\r
- arrRegExpClassNames.push(new RegExp("(^|\s)" + oClassNames[i].replace(/-/g, "\-") + "(\s|$)"));\r
- }\r
- }\r
- else{\r
- arrRegExpClassNames.push(new RegExp("(^|\s)" + oClassNames.replace(/-/g, "\-") + "(\s|$)"));\r
- }\r
- var oElement;\r
- var bMatchesAll;\r
- for(var j=0; j<arrElements.length; j++){\r
- oElement = arrElements[j];\r
- bMatchesAll = true;\r
- for(var k=0; k<arrRegExpClassNames.length; k++){\r
- if(!arrRegExpClassNames[k].test(oElement.className)){\r
- bMatchesAll = false;\r
- break;\r
- }\r
- }\r
- if(bMatchesAll){\r
- arrReturnElements.push(oElement);\r
- }\r
- }\r
- return (arrReturnElements)\r
-}\r
-/*function WSR_getElementsByClassName(_2,_3,_4){\r
-\r
- var _5=(_3=="*"&&_2.all)?_2.all:_2.getElementsByTagName(_3);\r
- window.alert(_5[0]);\r
- var _6=new Array();\r
- _4=_4.replace(/\-/g,"\\-");\r
- var _7=new RegExp("(^|\\s)"+_4+"(\\s|$)");\r
- var _8;\r
- for(var i=0;i<_5.length;i++){\r
- _8=_5[i];\r
- if(_7.test(_8.className)){\r
- _6.push(_8);\r
- }\r
- }\r
- return (_6);\r
-}*/\r
-\r
-function bindBubbles(e){\r
- lbActions=WSR_getElementsByClassName(document,"img","thumb");\r
- for(i=0;i<lbActions.length;i++){\r
- if(window.addEventListener){ // Mozilla, Firefox\r
- lbActions[i].addEventListener("mouseover",attachBubble,false);\r
- lbActions[i].addEventListener("mouseout",detachBubble,false);\r
- lbActions[i].addEventListener("click",detachBubble,false);\r
- }else if (window.attachEvent) { // IE\r
- lbActions[i].attachEvent("onmouseover",attachBubble);\r
- lbActions[i].attachEvent("onmouseout",detachBubble);\r
- lbActions[i].attachEvent("onclick",detachBubble);\r
- } else {\r
- // it seems this browser doesn't support any eventhandling\r
- } \r
- }\r
-}\r
-\r
-function attachBubble(_b){\r
- var _c;\r
- if(_b["srcElement"]){ // IE\r
- _c=_b["srcElement"];\r
- }else{ // Mozilla, Firefox\r
- _c=_b["target"];\r
- }\r
- if (_c.href == undefined){\r
- _c=_c.parentNode;\r
- }\r
-\r
- var _d=_c.href;\r
-\r
- var _10=document.createElement("div");\r
- document.getElementsByTagName("body")[0].appendChild(_10);\r
- _10.className="bubble";\r
-\r
- if(BrowserDetect.browser != 'Explorer') {\r
-\r
- var _e=findPos(_c)[0]+5;\r
- var cur_height = findPos(_c)[1]-get_scroll_position() + 283;\r
-\r
- // should the bubble be displayed above or below the object\r
- if(cur_height >= get_page_height()) {\r
- var _f=findPos(_c)[1]-363;\r
- bubbleImage = bubbleImageUp;\r
- }\r
- else {\r
- var _f=findPos(_c)[1]+17;\r
- bubbleImage = bubbleImageDown;\r
- }\r
- }\r
- else {\r
- var _e=findPos(_c)[0]+5;\r
- var _f=findPos(_c)[1]+129;\r
- bubbleImage = bubbleImageDown;\r
- }\r
- if (BrowserDetect.browser == 'Explorer') {\r
- _10.style.width="275px";\r
- _10.style.height="275px";\r
- _10.style.position="absolute";\r
- _10.style.top=_f;\r
- _10.style.zIndex=99999;\r
- _10.style.left=_e;\r
- _10.style.textAlign="left";\r
- _10.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bubbleImage + "',sizingMethod='image')";\r
- } else if (BrowserDetect.browser == 'Safari' || BrowserDetect.browser == 'Konqueror' ) {\r
- _10.setAttribute("style","text-align: center; z-index: 99999; position: absolute; top: "+ _f +"px ; left: "+ _e +"px ; background: url("+ bubbleImage +") no-repeat; width: 275px; height: 275px; padding: 0; margin: 0;");\r
- } else {\r
- _10.setAttribute("style","text-align: center; z-index: 99999; position: absolute; top: "+_f+"px ; left: "+ _e +"px ; background: url("+ bubbleImage +") no-repeat; width: 275px; height: 275px; padding: 0; margin: 0;");\r
- }\r
-\r
- if(cur_height >= get_page_height()) \r
- showBubbleDetails(_10, _c.id, 'up');\r
- else\r
- showBubbleDetails(_10, _c.id, 'down');\r
-\r
-}\r
-\r
-function detachBubble(_12){\r
- lbActions=WSR_getElementsByClassName(document,"div","bubble");\r
- for(i=0;i<lbActions.length;i++){\r
- lbActions[i].parentNode.removeChild(lbActions[i]);\r
- }\r
-}\r
-\r
-function findPos(obj){\r
- var _14=curtop=0;\r
- if(obj.offsetParent){\r
- _14=obj.offsetLeft;\r
- curtop=obj.offsetTop;\r
- while(obj=obj.offsetParent){\r
- _14+=obj.offsetLeft;\r
- curtop+=obj.offsetTop;\r
- }\r
- }\r
- return [_14,curtop];\r
-}\r
-\r
-var BrowserDetect = {\r
- init: function () {\r
- this.browser = this.searchString(this.dataBrowser) || "An unknown browser";\r
- this.version = this.searchVersion(navigator.userAgent)\r
- || this.searchVersion(navigator.appVersion)\r
- || "an unknown version";\r
- this.OS = this.searchString(this.dataOS) || "an unknown OS";\r
- },\r
- searchString: function (data) {\r
- for (var i=0;i<data.length;i++) {\r
- var dataString = data[i].string;\r
- var dataProp = data[i].prop;\r
- this.versionSearchString = data[i].versionSearch || data[i].identity;\r
- if (dataString) {\r
- if (dataString.indexOf(data[i].subString) != -1)\r
- return data[i].identity;\r
- }\r
- else if (dataProp)\r
- return data[i].identity;\r
- }\r
- },\r
- searchVersion: function (dataString) {\r
- var index = dataString.indexOf(this.versionSearchString);\r
- if (index == -1) return;\r
- return parseFloat(dataString.substring(index+this.versionSearchString.length+1));\r
- },\r
- dataBrowser: [\r
- { string: navigator.userAgent,\r
- subString: "OmniWeb",\r
- versionSearch: "OmniWeb/",\r
- identity: "OmniWeb"\r
- },\r
- {\r
- string: navigator.vendor,\r
- subString: "Apple",\r
- identity: "Safari"\r
- },\r
- {\r
- prop: window.opera,\r
- identity: "Opera"\r
- },\r
- {\r
- string: navigator.vendor,\r
- subString: "iCab",\r
- identity: "iCab"\r
- },\r
- {\r
- string: navigator.vendor,\r
- subString: "KDE",\r
- identity: "Konqueror"\r
- },\r
- {\r
- string: navigator.userAgent,\r
- subString: "Firefox",\r
- identity: "Firefox"\r
- },\r
- {\r
- string: navigator.vendor,\r
- subString: "Camino",\r
- identity: "Camino"\r
- },\r
- { // for newer Netscapes (6+)\r
- string: navigator.userAgent,\r
- subString: "Netscape",\r
- identity: "Netscape"\r
- },\r
- {\r
- string: navigator.userAgent,\r
- subString: "MSIE",\r
- identity: "Explorer",\r
- versionSearch: "MSIE"\r
- },\r
- {\r
- string: navigator.userAgent,\r
- subString: "Gecko",\r
- identity: "Mozilla",\r
- versionSearch: "rv"\r
- },\r
- { // for older Netscapes (4-)\r
- string: navigator.userAgent,\r
- subString: "Mozilla",\r
- identity: "Netscape",\r
- versionSearch: "Mozilla"\r
- }\r
- ],\r
- dataOS : [\r
- {\r
- string: navigator.platform,\r
- subString: "Win",\r
- identity: "Windows"\r
- },\r
- {\r
- string: navigator.platform,\r
- subString: "Mac",\r
- identity: "Mac"\r
- },\r
- {\r
- string: navigator.platform,\r
- subString: "Linux",\r
- identity: "Linux"\r
- }\r
- ]\r
-\r
-};\r
-\r
-function var_dump(arr,level) {\r
- var dumped_text = "";\r
- if(!level) level = 0;\r
- \r
- //The padding given at the beginning of the line.\r
- var level_padding = "";\r
- for(var j=0;j<level+1;j++) level_padding += " ";\r
- \r
- if(typeof(arr) == 'object') { //Array/Hashes/Objects \r
- for(var item in arr) {\r
- var value = arr[item];\r
- \r
- if(typeof(value) == 'object') { //If it is an array,\r
- dumped_text += level_padding + "'" + item + "' ...\n";\r
- dumped_text += dump(value,level+1);\r
- } else {\r
- dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";\r
- }\r
- }\r
- } else { //Stings/Chars/Numbers etc.\r
- dumped_text = "===>"+arr+"<===("+typeof(arr)+")";\r
- }\r
- return dumped_text;\r
-\r
-}//end function var_dump\r
-\r
-function get_page_height()\r
-{\r
- var myHeight = 0;\r
- if( typeof( window.innerHeight ) == 'number' ) {\r
- //Non-IE\r
- myHeight = window.innerHeight;\r
- } else if( document.documentElement && document.documentElement.clientHeight ) {\r
- //IE 6+ in 'standards compliant mode'\r
- myHeight = document.documentElement.clientHeight;\r
- } else if( document.body && document.body.clientHeight ) {\r
- //IE 4 compatible\r
- myHeight = document.body.clientHeight;\r
- }\r
-\r
- return myHeight;\r
-}\r
-\r
-function get_scroll_position()\r
-{\r
- if (typeof window.pageYOffset != 'undefined') {\r
- return window.pageYOffset;\r
- }\r
- else {\r
- if (typeof document.compatMode != 'undefined' &&\r
- document.compatMode != 'BackCompat' &&\r
- typeof window.scrollTop != 'undefined')\r
- return window.scrollTop;\r
- else {\r
- if(typeof document.documentElement.scrollTop != 'undefined')\r
- return document.documentElement.scrollTop;\r
- else {\r
- if (typeof document.body.scrollTop != 'undefined')\r
- return document.body.scrollTop;\r
- }\r
- }\r
- }\r
-\r
- return 0;\r
-\r
-}\r
-\r
-BrowserDetect.init();\r