(function(){
var b = navigator.userAgent.toLowerCase();
+
+ // Figure out what browser is being used
$.browser =
- ( /safari/.test(b) && "safari" ) ||
+ ( /webkit/.test(b) && "safari" ) ||
( /opera/.test(b) && "opera" ) ||
( /msie/.test(b) && "msie" ) ||
( !/compatible/.test(b) && "mozilla" ) ||
"other";
+
+ // Check to see if the W3C box model is being used
+ $.boxModel = ( $.browser != "msie" ||
+ document.compatMode == "CSS1Compat" );
})();
$.apply = function(o,f,a) {
$.getCSS = function(e,p) {
// Adapted from Prototype 1.4.0
if ( p == 'height' || p == 'width' ) {
- if ($.getCSS(e,"display") != 'none') {
- return p == 'height' ?
- e.offsetHeight || parseInt(e.style.height,10) :
- e.offsetWidth || parseInt(e.style.width,10);
+ var ph = $.browser == "msie" ? 0 :
+ parseInt($.css(e,"paddingTop")) + parseInt($.css(e,"paddingBottom"));
+ var pw = $.browser == "msie" ? 0 :
+ parseInt($.css(e,"paddingLeft")) + parseInt($.css(e,"paddingRight"));
+
+ var oHeight, oWidth;
+
+ if ($.css(e,"display") != 'none') {
+ oHeight = e.offsetHeight || parseInt(e.style.height,10);
+ oWidth = e.offsetWidth || parseInt(e.style.width,10);
+ } else {
+ var els = e.style;
+ var ov = els.visibility;
+ var op = els.position;
+ var od = els.display;
+ els.visibility = 'hidden';
+ els.position = 'absolute';
+ els.display = '';
+ oHeight = e.clientHeight || parseInt(e.style.height,10);
+ oWidth = e.clientWidth || parseInt(e.style.width,10);
+ els.display = od;
+ els.position = op;
+ els.visibility = ov;
}
- var els = e.style;
- var ov = els.visibility;
- var op = els.position;
- var od = els.display;
- els.visibility = 'hidden';
- els.position = 'absolute';
- els.display = '';
- var oHeight = e.clientHeight || parseInt(e.style.height,10);
- var oWidth = e.clientWidth || parseInt(e.style.width,10);
- els.display = od;
- els.position = op;
- els.visibility = ov;
- return p == 'height' ? oHeight : oWidth;
+
+ return p == 'height' ?
+ (oHeight - ph < 0 ? 0 : oHeight - ph) :
+ (oWidth - pw < 0 ? 0 : oWidth - pw);
}
if (e.style[p]) {
for ( var i = 0; i < a.length; i++ ) {
if ( a[i].constructor == String ) {
if ( a[i].indexOf("<tr") == 0 ) {
-//alert("tr");
var tr = true;
a[i] = "<table>" + a[i] + "</table>";
}
$.g = {
'': "m[2] == '*' || a.nodeName.toUpperCase() == m[2].toUpperCase()",
- '#': "a.attributes['id'].nodeValue == m[2]",
+ '#': "a.getAttribute('id') && a.getAttribute('id').nodeValue == m[2]",
':': {
lt: "i < m[3]-0",
gt: "i > m[3]-0",
};
$.tag = function(a,b){
- return a && typeof a.getElementsByTagName != "undefined" ?
+ return a && typeof a.getElementsByTagName != 'undefined' ?
a.getElementsByTagName( b ) : [];
};
'for': 'htmlFor',
'text': 'cssText',
'class': 'className',
- 'float': 'cssFloat'
+ 'float': 'cssFloat',
+ 'style': 'cssText'
};
a = (fix[a] && fix[a].replace && fix[a]) || a;
var r = new RegExp("-([a-z])","ig");
};
$.event.trigger = function(element,type,data) {
- data = data || [{ type: type }];
+ data = data || [ $.event.fix({ type: type }) ];
if ( element && element["on" + type] ) {
$.apply( element, element["on" + type], data );
}