246 lines
6.0 KiB
JavaScript
Executable File
246 lines
6.0 KiB
JavaScript
Executable File
/**
|
|
* Interface Elements for jQuery
|
|
* utility function
|
|
*
|
|
* http://interface.eyecon.ro
|
|
*
|
|
* Copyright (c) 2006 Stefan Petre
|
|
* Dual licensed under the MIT (MIT-LICENSE.txt)
|
|
* and GPL (GPL-LICENSE.txt) licenses.
|
|
*
|
|
*
|
|
*/
|
|
|
|
jQuery.iUtil = {
|
|
getPosition : function(e)
|
|
{
|
|
var x = 0;
|
|
var y = 0;
|
|
var es = e.style;
|
|
var restoreStyles = false;
|
|
if (jQuery(e).css('display') == 'none') {
|
|
var oldVisibility = es.visibility;
|
|
var oldPosition = es.position;
|
|
restoreStyles = true;
|
|
es.visibility = 'hidden';
|
|
es.display = 'block';
|
|
es.position = 'absolute';
|
|
}
|
|
var el = e;
|
|
while (el){
|
|
x += el.offsetLeft + (el.currentStyle && !jQuery.browser.opera ?parseInt(el.currentStyle.borderLeftWidth)||0:0);
|
|
y += el.offsetTop + (el.currentStyle && !jQuery.browser.opera ?parseInt(el.currentStyle.borderTopWidth)||0:0);
|
|
el = el.offsetParent;
|
|
}
|
|
el = e;
|
|
while (el && el.tagName && el.tagName.toLowerCase() != 'body')
|
|
{
|
|
x -= el.scrollLeft||0;
|
|
y -= el.scrollTop||0;
|
|
el = el.parentNode;
|
|
}
|
|
if (restoreStyles == true) {
|
|
es.display = 'none';
|
|
es.position = oldPosition;
|
|
es.visibility = oldVisibility;
|
|
}
|
|
return {x:x, y:y};
|
|
},
|
|
getPositionLite : function(el)
|
|
{
|
|
var x = 0, y = 0;
|
|
while(el) {
|
|
x += el.offsetLeft || 0;
|
|
y += el.offsetTop || 0;
|
|
el = el.offsetParent;
|
|
}
|
|
return {x:x, y:y};
|
|
},
|
|
getSize : function(e)
|
|
{
|
|
var w = jQuery.css(e,'width');
|
|
var h = jQuery.css(e,'height');
|
|
var wb = 0;
|
|
var hb = 0;
|
|
var es = e.style;
|
|
if (jQuery(e).css('display') != 'none') {
|
|
wb = e.offsetWidth;
|
|
hb = e.offsetHeight;
|
|
} else {
|
|
var oldVisibility = es.visibility;
|
|
var oldPosition = es.position;
|
|
es.visibility = 'hidden';
|
|
es.display = 'block';
|
|
es.position = 'absolute';
|
|
wb = e.offsetWidth;
|
|
hb = e.offsetHeight;
|
|
es.display = 'none';
|
|
es.position = oldPosition;
|
|
es.visibility = oldVisibility;
|
|
}
|
|
return {w:w, h:h, wb:wb, hb:hb};
|
|
},
|
|
getSizeLite : function(el)
|
|
{
|
|
return {
|
|
wb:el.offsetWidth||0,
|
|
hb:el.offsetHeight||0
|
|
};
|
|
},
|
|
getClient : function(e)
|
|
{
|
|
var h, w, de;
|
|
if (e) {
|
|
w = e.clientWidth;
|
|
h = e.clientHeight;
|
|
} else {
|
|
de = document.documentElement;
|
|
w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
|
|
h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
|
|
}
|
|
return {w:w,h:h};
|
|
},
|
|
getScroll : function (e)
|
|
{
|
|
var t=0, l=0, w=0, h=0, iw=0, ih=0;
|
|
if (e && e.nodeName.toLowerCase() != 'body') {
|
|
t = e.scrollTop;
|
|
l = e.scrollLeft;
|
|
w = e.scrollWidth;
|
|
h = e.scrollHeight;
|
|
iw = 0;
|
|
ih = 0;
|
|
} else {
|
|
if (document.documentElement) {
|
|
t = document.documentElement.scrollTop;
|
|
l = document.documentElement.scrollLeft;
|
|
w = document.documentElement.scrollWidth;
|
|
h = document.documentElement.scrollHeight;
|
|
} else if (document.body) {
|
|
t = document.body.scrollTop;
|
|
l = document.body.scrollLeft;
|
|
w = document.body.scrollWidth;
|
|
h = document.body.scrollHeight;
|
|
}
|
|
iw = self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;
|
|
ih = self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0;
|
|
}
|
|
return { t: t, l: l, w: w, h: h, iw: iw, ih: ih };
|
|
},
|
|
getMargins : function(e, toInteger)
|
|
{
|
|
var el = jQuery(e);
|
|
var t = el.css('marginTop') || '';
|
|
var r = el.css('marginRight') || '';
|
|
var b = el.css('marginBottom') || '';
|
|
var l = el.css('marginLeft') || '';
|
|
if (toInteger)
|
|
return {
|
|
t: parseInt(t)||0,
|
|
r: parseInt(r)||0,
|
|
b: parseInt(b)||0,
|
|
l: parseInt(l)
|
|
};
|
|
else
|
|
return {t: t, r: r, b: b, l: l};
|
|
},
|
|
getPadding : function(e, toInteger)
|
|
{
|
|
var el = jQuery(e);
|
|
var t = el.css('paddingTop') || '';
|
|
var r = el.css('paddingRight') || '';
|
|
var b = el.css('paddingBottom') || '';
|
|
var l = el.css('paddingLeft') || '';
|
|
if (toInteger)
|
|
return {
|
|
t: parseInt(t)||0,
|
|
r: parseInt(r)||0,
|
|
b: parseInt(b)||0,
|
|
l: parseInt(l)
|
|
};
|
|
else
|
|
return {t: t, r: r, b: b, l: l};
|
|
},
|
|
getBorder : function(e, toInteger)
|
|
{
|
|
var el = jQuery(e);
|
|
var t = el.css('borderTopWidth') || '';
|
|
var r = el.css('borderRightWidth') || '';
|
|
var b = el.css('borderBottomWidth') || '';
|
|
var l = el.css('borderLeftWidth') || '';
|
|
if (toInteger)
|
|
return {
|
|
t: parseInt(t)||0,
|
|
r: parseInt(r)||0,
|
|
b: parseInt(b)||0,
|
|
l: parseInt(l)||0
|
|
};
|
|
else
|
|
return {t: t, r: r, b: b, l: l};
|
|
},
|
|
getPointer : function(event)
|
|
{
|
|
var x = event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)) || 0;
|
|
var y = event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) || 0;
|
|
return {x:x, y:y};
|
|
},
|
|
traverseDOM : function(nodeEl, func)
|
|
{
|
|
func(nodeEl);
|
|
nodeEl = nodeEl.firstChild;
|
|
while(nodeEl){
|
|
jQuery.iUtil.traverseDOM(nodeEl, func);
|
|
nodeEl = nodeEl.nextSibling;
|
|
}
|
|
},
|
|
purgeEvents : function(nodeEl)
|
|
{
|
|
jQuery.iUtil.traverseDOM(
|
|
nodeEl,
|
|
function(el)
|
|
{
|
|
for(var attr in el){
|
|
if(typeof el[attr] === 'function') {
|
|
el[attr] = null;
|
|
}
|
|
}
|
|
}
|
|
);
|
|
},
|
|
centerEl : function(el, axis)
|
|
{
|
|
var clientScroll = jQuery.iUtil.getScroll();
|
|
var windowSize = jQuery.iUtil.getSize(el);
|
|
if (!axis || axis == 'vertically')
|
|
jQuery(el).css(
|
|
{
|
|
top: clientScroll.t + ((Math.max(clientScroll.h,clientScroll.ih) - clientScroll.t - windowSize.hb)/2) + 'px'
|
|
}
|
|
);
|
|
if (!axis || axis == 'horizontally')
|
|
jQuery(el).css(
|
|
{
|
|
left: clientScroll.l + ((Math.max(clientScroll.w,clientScroll.iw) - clientScroll.l - windowSize.wb)/2) + 'px'
|
|
}
|
|
);
|
|
},
|
|
fixPNG : function (el, emptyGIF) {
|
|
var images = jQuery('img[@src*="png"]', el||document), png;
|
|
images.each( function() {
|
|
png = this.src;
|
|
this.src = emptyGIF;
|
|
this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + png + "')";
|
|
});
|
|
}
|
|
};
|
|
|
|
// Helper function to support older browsers!
|
|
[].indexOf || (Array.prototype.indexOf = function(v, n){
|
|
n = (n == null) ? 0 : n;
|
|
var m = this.length;
|
|
for (var i=n; i<m; i++)
|
|
if (this[i] == v)
|
|
return i;
|
|
return -1;
|
|
});
|