Projet

Général

Profil

Paste
Télécharger (6,97 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / sweaver / plugins / sweaver_plugin_editor / colorpicker / js / utils.js @ 651307cd

1
/**
2
 *
3
 * Utilities
4
 * Author: Stefan Petre www.eyecon.ro
5
 * 
6
 */
7
(function($) {
8
EYE.extend({
9
        getPosition : function(e, forceIt)
10
        {
11
                var x = 0;
12
                var y = 0;
13
                var es = e.style;
14
                var restoreStyles = false;
15
                if (forceIt && jQuery.curCSS(e,'display') == 'none') {
16
                        var oldVisibility = es.visibility;
17
                        var oldPosition = es.position;
18
                        restoreStyles = true;
19
                        es.visibility = 'hidden';
20
                        es.display = 'block';
21
                        es.position = 'absolute';
22
                }
23
                var el = e;
24
                if (el.getBoundingClientRect) { // IE
25
                        var box = el.getBoundingClientRect();
26
                        x = box.left + Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) - 2;
27
                        y = box.top + Math.max(document.documentElement.scrollTop, document.body.scrollTop) - 2;
28
                } else {
29
                        x = el.offsetLeft;
30
                        y = el.offsetTop;
31
                        el = el.offsetParent;
32
                        if (e != el) {
33
                                while (el) {
34
                                        x += el.offsetLeft;
35
                                        y += el.offsetTop;
36
                                        el = el.offsetParent;
37
                                }
38
                        }
39
                        if (jQuery.browser.safari && jQuery.curCSS(e, 'position') == 'absolute' ) {
40
                                x -= document.body.offsetLeft;
41
                                y -= document.body.offsetTop;
42
                        }
43
                        el = e.parentNode;
44
                        while (el && el.tagName.toUpperCase() != 'BODY' && el.tagName.toUpperCase() != 'HTML') 
45
                        {
46
                                if (jQuery.curCSS(el, 'display') != 'inline') {
47
                                        x -= el.scrollLeft;
48
                                        y -= el.scrollTop;
49
                                }
50
                                el = el.parentNode;
51
                        }
52
                }
53
                if (restoreStyles == true) {
54
                        es.display = 'none';
55
                        es.position = oldPosition;
56
                        es.visibility = oldVisibility;
57
                }
58
                return {x:x, y:y};
59
        },
60
        getSize : function(e)
61
        {
62
                var w = parseInt(jQuery.curCSS(e,'width'), 10);
63
                var h = parseInt(jQuery.curCSS(e,'height'), 10);
64
                var wb = 0;
65
                var hb = 0;
66
                if (jQuery.curCSS(e, 'display') != 'none') {
67
                        wb = e.offsetWidth;
68
                        hb = e.offsetHeight;
69
                } else {
70
                        var es = e.style;
71
                        var oldVisibility = es.visibility;
72
                        var oldPosition = es.position;
73
                        es.visibility = 'hidden';
74
                        es.display = 'block';
75
                        es.position = 'absolute';
76
                        wb = e.offsetWidth;
77
                        hb = e.offsetHeight;
78
                        es.display = 'none';
79
                        es.position = oldPosition;
80
                        es.visibility = oldVisibility;
81
                }
82
                return {w:w, h:h, wb:wb, hb:hb};
83
        },
84
        getClient : function(e)
85
        {
86
                var h, w;
87
                if (e) {
88
                        w = e.clientWidth;
89
                        h = e.clientHeight;
90
                } else {
91
                        var de = document.documentElement;
92
                        w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
93
                        h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
94
                }
95
                return {w:w,h:h};
96
        },
97
        getScroll : function (e)
98
        {
99
                var t=0, l=0, w=0, h=0, iw=0, ih=0;
100
                if (e && e.nodeName.toLowerCase() != 'body') {
101
                        t = e.scrollTop;
102
                        l = e.scrollLeft;
103
                        w = e.scrollWidth;
104
                        h = e.scrollHeight;
105
                } else  {
106
                        if (document.documentElement) {
107
                                t = document.documentElement.scrollTop;
108
                                l = document.documentElement.scrollLeft;
109
                                w = document.documentElement.scrollWidth;
110
                                h = document.documentElement.scrollHeight;
111
                        } else if (document.body) {
112
                                t = document.body.scrollTop;
113
                                l = document.body.scrollLeft;
114
                                w = document.body.scrollWidth;
115
                                h = document.body.scrollHeight;
116
                        }
117
                        if (typeof pageYOffset != 'undefined') {
118
                                t = pageYOffset;
119
                                l = pageXOffset;
120
                        }
121
                        iw = self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;
122
                        ih = self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0;
123
                }
124
                return { t: t, l: l, w: w, h: h, iw: iw, ih: ih };
125
        },
126
        getMargins : function(e, toInteger)
127
        {
128
                var t = jQuery.curCSS(e,'marginTop') || '';
129
                var r = jQuery.curCSS(e,'marginRight') || '';
130
                var b = jQuery.curCSS(e,'marginBottom') || '';
131
                var l = jQuery.curCSS(e,'marginLeft') || '';
132
                if (toInteger)
133
                        return {
134
                                t: parseInt(t, 10)||0,
135
                                r: parseInt(r, 10)||0,
136
                                b: parseInt(b, 10)||0,
137
                                l: parseInt(l, 10)
138
                        };
139
                else
140
                        return {t: t, r: r,        b: b, l: l};
141
        },
142
        getPadding : function(e, toInteger)
143
        {
144
                var t = jQuery.curCSS(e,'paddingTop') || '';
145
                var r = jQuery.curCSS(e,'paddingRight') || '';
146
                var b = jQuery.curCSS(e,'paddingBottom') || '';
147
                var l = jQuery.curCSS(e,'paddingLeft') || '';
148
                if (toInteger)
149
                        return {
150
                                t: parseInt(t, 10)||0,
151
                                r: parseInt(r, 10)||0,
152
                                b: parseInt(b, 10)||0,
153
                                l: parseInt(l, 10)
154
                        };
155
                else
156
                        return {t: t, r: r,        b: b, l: l};
157
        },
158
        getBorder : function(e, toInteger)
159
        {
160
                var t = jQuery.curCSS(e,'borderTopWidth') || '';
161
                var r = jQuery.curCSS(e,'borderRightWidth') || '';
162
                var b = jQuery.curCSS(e,'borderBottomWidth') || '';
163
                var l = jQuery.curCSS(e,'borderLeftWidth') || '';
164
                if (toInteger)
165
                        return {
166
                                t: parseInt(t, 10)||0,
167
                                r: parseInt(r, 10)||0,
168
                                b: parseInt(b, 10)||0,
169
                                l: parseInt(l, 10)||0
170
                        };
171
                else
172
                        return {t: t, r: r,        b: b, l: l};
173
        },
174
        traverseDOM : function(nodeEl, func)
175
        {
176
                func(nodeEl);
177
                nodeEl = nodeEl.firstChild;
178
                while(nodeEl){
179
                        EYE.traverseDOM(nodeEl, func);
180
                        nodeEl = nodeEl.nextSibling;
181
                }
182
        },
183
        getInnerWidth :  function(el, scroll) {
184
                var offsetW = el.offsetWidth;
185
                return scroll ? Math.max(el.scrollWidth,offsetW) - offsetW + el.clientWidth:el.clientWidth;
186
        },
187
        getInnerHeight : function(el, scroll) {
188
                var offsetH = el.offsetHeight;
189
                return scroll ? Math.max(el.scrollHeight,offsetH) - offsetH + el.clientHeight:el.clientHeight;
190
        },
191
        getExtraWidth : function(el) {
192
                if($.boxModel)
193
                        return (parseInt($.curCSS(el, 'paddingLeft'))||0)
194
                                + (parseInt($.curCSS(el, 'paddingRight'))||0)
195
                                + (parseInt($.curCSS(el, 'borderLeftWidth'))||0)
196
                                + (parseInt($.curCSS(el, 'borderRightWidth'))||0);
197
                return 0;
198
        },
199
        getExtraHeight : function(el) {
200
                if($.boxModel)
201
                        return (parseInt($.curCSS(el, 'paddingTop'))||0)
202
                                + (parseInt($.curCSS(el, 'paddingBottom'))||0)
203
                                + (parseInt($.curCSS(el, 'borderTopWidth'))||0)
204
                                + (parseInt($.curCSS(el, 'borderBottomWidth'))||0);
205
                return 0;
206
        },
207
        isChildOf: function(parentEl, el, container) {
208
                if (parentEl == el) {
209
                        return true;
210
                }
211
                if (!el || !el.nodeType || el.nodeType != 1) {
212
                        return false;
213
                }
214
                if (parentEl.contains && !$.browser.safari) {
215
                        return parentEl.contains(el);
216
                }
217
                if ( parentEl.compareDocumentPosition ) {
218
                        return !!(parentEl.compareDocumentPosition(el) & 16);
219
                }
220
                var prEl = el.parentNode;
221
                while(prEl && prEl != container) {
222
                        if (prEl == parentEl)
223
                                return true;
224
                        prEl = prEl.parentNode;
225
                }
226
                return false;
227
        },
228
        centerEl : function(el, axis)
229
        {
230
                var clientScroll = EYE.getScroll();
231
                var size = EYE.getSize(el);
232
                if (!axis || axis == 'vertically')
233
                        $(el).css(
234
                                {
235
                                        top: clientScroll.t + ((Math.min(clientScroll.h,clientScroll.ih) - size.hb)/2) + 'px'
236
                                }
237
                        );
238
                if (!axis || axis == 'horizontally')
239
                        $(el).css(
240
                                {
241
                                        left: clientScroll.l + ((Math.min(clientScroll.w,clientScroll.iw) - size.wb)/2) + 'px'
242
                                }
243
                        );
244
        }
245
});
246
if (!$.easing.easeout) {
247
        $.easing.easeout = function(p, n, firstNum, delta, duration) {
248
                return -delta * ((n=n/duration-1)*n*n*n - 1) + firstNum;
249
        };
250
}
251
        
252
})(jQuery);