lib/generators/hobo/rapid/templates/ie7-recalc.js in hobo-1.3.0.pre19 vs lib/generators/hobo/rapid/templates/ie7-recalc.js in hobo-1.3.0.pre20
- old
+ new
@@ -3,28 +3,28 @@
// ie7-recalc.js
// =========================================================================
(function() {
/* ---------------------------------------------------------------------
-
+
This allows refreshing of IE7 style rules. If you modify the DOM
you can update IE7 by calling document.recalc().
-
+
This should be the LAST module included.
-
+
--------------------------------------------------------------------- */
-
+
if (!IE7.loaded) return;
-
+
// remove all IE7 classes from an element
CLASSES = /\sie7_class\d+/g;
-
+
IE7.CSS.extend({
// store for elements that have style properties calculated
elements: {},
handlers: [],
-
+
// clear IE7 classes and styles
reset: function() {
this.removeEventHandlers();
// reset IE7 classes here
var elements = this.elements;
@@ -35,50 +35,50 @@
for (var i in elements) {
with (elements[i]) className = className.replace(CLASSES, "");
}
IE7.Rule.elements = {};
},
-
+
reload: function() {
this.rules = [];
this.getInlineStyles();
this.screen.load();
if (this.print) this.print.load();
this.refresh();
this.trash();
},
-
+
addRecalc: function(propertyName, test, handler, replacement) {
// call the ancestor method to add a wrapped recalc method
this.base(propertyName, test, function(element) {
// execute the original recalc method
handler(element);
// store a reference to this element so we can clear its style later
IE7.CSS.elements[element.uniqueID] = element;
}, replacement);
},
-
+
recalc: function() {
// clear IE7 styles and classes
this.reset();
// execute the ancestor method to perform recalculations
this.base();
},
-
+
addEventHandler: function(element, type, handler) {
element.attachEvent(type, handler);
// store the handler so it can be detached later
this.handlers.push(arguments);
},
-
+
removeEventHandlers: function() {
var handler;
while (handler = this.handlers.pop()) {
handler[0].detachEvent(handler[1], handler[2]);
}
},
-
+
getInlineStyles: function() {
// load inline styles
var styleSheets = document.getElementsByTagName("style"), styleSheet;
for (var i = styleSheets.length - 1; (styleSheet = styleSheets[i]); i--) {
if (!styleSheet.disabled && !styleSheet.ie7) {
@@ -86,11 +86,11 @@
this.styles.push(cssText);
styleSheet.cssText = cssText;
}
}
},
-
+
trash: function() {
// trash the old style sheets
var styleSheets = document.styleSheets, styleSheet, i;
for (i = 0; i < styleSheets.length; i++) {
styleSheet = styleSheets[i];
@@ -98,21 +98,21 @@
styleSheet.cssText = styleSheet.cssText;
}
}
this.base();
},
-
+
getText: function(styleSheet) {
return styleSheet.cssText || this.base(styleSheet);
}
});
-
+
// remove event handlers (they eat memory)
IE7.CSS.addEventHandler(window, "onunload", function() {
IE7.CSS.removeEventHandlers();
});
-
+
// store all elements with an IE7 class assigned
IE7.Rule.elements = {};
IE7.Rule.prototype.extend({
add: function(element) {
@@ -124,25 +124,25 @@
});
// store created pseudo elements
if (IE7.PseudoElement) {
IE7.PseudoElement.hash = {};
-
+
IE7.PseudoElement.prototype.extend({
create: function(target) {
var key = this.selector + ":" + target.uniqueID;
if (!IE7.PseudoElement.hash[key]) {
IE7.PseudoElement.hash[key] = true;
this.base(target);
}
}
});
}
-
+
IE7.HTML.extend({
elements: {},
-
+
addRecalc: function(selector, handler) {
// call the ancestor method to add a wrapped recalc method
this.base(selector, function(element) {
if (!this.elements[element.uniqueID]) {
// execute the original recalc method
@@ -152,10 +152,10 @@
this.elements[element.uniqueID] = element;
}
});
}
});
-
+
// allow refreshing of IE7 fixes
document.recalc = function(reload) {
if (IE7.CSS.screen) {
if (reload) IE7.CSS.reload();
IE7.recalc();