source: extensions/LLGBO2/js/sweettitlesn1_comment.js @ 12114

Last change on this file since 12114 was 10838, checked in by gbo, 13 years ago

2.2.c fix js bug with FF4.01

File size: 5.5 KB
Line 
1Array.prototype.inArray = function (value) {
2        var i;
3        for (i=0; i < this.length; i++) {
4                if (this[i] === value) {
5                        return true;}
6        }
7        return false;
8};
9function addEvent2( obj, type, fn ) {
10        if (obj.addEventListener) {
11                obj.addEventListener( type, fn, false );
12                EventCache.add(obj, type, fn);}
13        else if (obj.attachEvent) {
14                obj["e"+type+fn] = fn;
15                obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
16                obj.attachEvent( "on"+type, obj[type+fn] );
17                EventCache.add(obj, type, fn);}
18        else {obj["on"+type] = obj["e"+type+fn];}
19}
20var EventCache = function(){
21        var listEvents = [];
22        return {
23                listEvents : listEvents,
24                add : function(node, sEventName, fHandler){
25                        listEvents.push(arguments);
26                },
27                flush : function(){
28                        var i, it;
29                        for(i = listEvents.length - 1; i >= 0; i = i - 1){
30                                it = listEvents[i];
31                                if(it[0].removeEventListener){
32                                        it[0].removeEventListener(it[1], it[2], it[3]);};
33                                if(it[1].substring(0, 2) != "on"){it[1] = "on" + it[1];};
34                                if(it[0].detachEvent){it[0].detachEvent(it[1], it[2]);};
35                                it[0][it[1]] = null;};
36                }       };}();
37addEvent2(window,'unload',EventCache.flush);
38/*Sweet Titles (c) 2005 http://www.dustindiaz.com
39Revision pour llgbo :ex-ftb 2006*/
40var swtT = { 
41        xCord : 0,                                                             
42        yCord : 0,                                                             
43        tipElements : ['a','area'],
44        forbidenClasses : ['navThumb','markItUpButton'],       
45        obj : Object,                                                   
46        x : Object,                                                     
47        init : function() {
48                if ( !document.getElementById ||
49                        !document.createElement ||
50                        !document.getElementsByTagName ) {return;       }
51                var i,j,Over,c;
52                this.x = document.createElement('div'); 
53                this.x.id = 'toolTip';
54                document.getElementsByTagName('body')[0].appendChild(this.x);
55                this.x.style.top = '0';
56                this.x.style.visibility = 'hidden';
57                var tipLen = this.tipElements.length;
58                for ( i=0; i<tipLen; i++ ) {
59                        var Elms = document.getElementsByTagName(this.tipElements[i]);
60                        var curLen = Elms.length;
61                        for ( j=0; j<curLen; j++ ) {
62                                var el= Elms[j];
63                                var Active = '';
64                                var fcLen = this.forbidenClasses.length;
65                                for (c=0; c<fcLen; c++) {
66                                        if ( el.parentNode.className.indexOf(this.forbidenClasses[c]) != -1 ||
67                                        el.className.indexOf(this.forbidenClasses[c]) != -1) 
68                                         { Active = 'No'; }}                                                             
69                                 if (Active != 'No' ) 
70                                        { var tv = el.getAttribute('title');
71                                                if ( tv != null && tv != "null" && tv !="") //chrome
72                                                 {addEvent2(el,'mouseover',this.tipOver);
73                                                        addEvent2(el,'mousemove',this.tipMouseMove);
74                                                        addEvent2(el,'mouseout',this.tipOut);
75                                                        var sv = el.getAttribute('swttips');
76                                                        el.setAttribute('tiptitle', tv);
77                                                        el.setAttribute('tipswt', sv );
78                                                        el.removeAttribute('swttips');
79                                                        el.removeAttribute('alt');
80                                                        el.removeAttribute('title'); } 
81                                        }
82}
83                }
84        },
85        updateXY : function(e) {
86                if ( document.captureEvents ) {
87                        swtT.xCord = e.pageX;
88                        swtT.yCord = e.pageY;
89                } else if ( window.event.clientX ) {
90                var ddE = document.documentElement
91                        swtT.xCord = window.event.clientX+ddE.scrollLeft;
92                        swtT.yCord = window.event.clientY+ddE.scrollTop;} },
93        tipOut: function() {
94                if ( window.tID ) {
95                        clearTimeout(tID);              }
96                if ( window.opacityID ) {
97                        clearTimeout(opacityID);}
98                swtT.x.style.visibility = 'hidden';},
99        checkNode : function() {
100                var trueObj = this.obj;
101                if ( this.tipElements.inArray(trueObj.nodeName.toLowerCase()) ) {
102                        return trueObj;
103                } else {return trueObj.parentNode;}
104        },
105        tipOver : function(e) {swtT.obj = this;
106        tID = window.setTimeout("swtT.tipShow()",100);
107         swtT.updateXY(e);},
108       
109        tipMouseMove : function(e) {swtT.updateXY(e); swtT.tipMove();},
110       
111        tipShow : function() {                 
112                var anch = this.checkNode();
113                this.x.innerHTML ="";
114         this.x.innerHTML = "<p class='title'> <span> "+anch.getAttribute('tiptitle')+"</span></p>";
115                sv = anch.getAttribute('tipswt');
116                if ((sv != null) && (sv != "null") && (sv !="")) //chrome
117                {this.x.innerHTML= this.x.innerHTML + "<p>" + anch.getAttribute('tipswt') + "</p>"; }
118                swtT.Move;
119                var T = this.x.style;
120                var scrX = Number(this.xCord);
121                var scrY = Number(this.yCord);
122                var tp = parseInt(scrY+8);
123                var lt = parseInt(scrX+8);
124                var D = document.documentElement;
125                        if ( parseInt(D.clientWidth+D.scrollLeft) < parseInt(this.x.offsetWidth+lt) ) {
126                        T.left = parseInt(lt-(this.x.offsetWidth+3))+'px';
127                } else {
128                        T.left = lt+'px';               }
129                if ( parseInt(D.clientHeight+D.scrollTop) < parseInt(this.x.offsetHeight+tp) ) {
130                        T.top = parseInt(tp-(this.x.offsetHeight+3))+'px';
131                } else {T.top = tp+'px';                }
132                T.visibility = 'visible';
133                T.opacity = '.1';
134                this.tipFade(10);       },
135       
136        tipMove: function()
137        { var scrX = Number(this.xCord);
138                var scrY = Number(this.yCord);
139                var tp = parseInt(scrY+8);
140                var lt = parseInt(scrX+8);
141                var D = document.documentElement;
142                var T = this.x.style;
143                if ( parseInt(D.clientWidth+D.scrollLeft) < parseInt(this.x.offsetWidth+lt) ) {
144                        T.left = parseInt(lt-(this.x.offsetWidth+3))+'px';
145                } else {
146                        T.left = lt+'px';               }
147                if ( parseInt(D.clientHeight+D.scrollTop) < parseInt(this.x.offsetHeight+tp) ) {
148                        T.top = parseInt(tp-(this.x.offsetHeight+3))+'px';
149                } else {T.top = tp+'px';                }
150        },
151        tipFade: function(opac) {
152                var passed = parseInt(opac);
153                var newOpac = parseInt(passed+10);
154                 T = this.x.style;
155                if ( newOpac < 92 ) {
156                        T.opacity = '.'+newOpac;
157                        T.filter = "alpha(opacity:"+newOpac+")";
158                        opacityID = window.setTimeout("swtT.tipFade('"+newOpac+"')",20);}
159                else { T.opacity = '.92';
160                        T.filter = "alpha(opacity:92)";         }
161        }
162};
163function pageLoader() { swtT.init();}
164addEvent2(window,'load',pageLoader);
Note: See TracBrowser for help on using the repository browser.