domains/itbusinessnet.com.js
[app.webkitpdf] / inliner.js
index 0fc5eb1..f079dd8 100644 (file)
-
+/**
+ *
+ * could this work by findind all the visible text,
+ * then making them hidden..
+ *
+ * -- make a snapshot of the background..
+ *
+ * -- delete the whole page...
+ * -- show the image as the background.
+ * -- then overlay all the text given their calculated positions..
+ * 
+ *
+ *
+ */
 
 
 (function(){
     
-    //var camelize = function(a,b){
-    //    return b.toUpperCase();
-    //}
+    var camelize = function(a,b){
+        return b.toUpperCase();
+    }
     
-    var keys = ['fontFamily','fontSize','fontWeight','fontStyle','color',
-        'textTransform','textDecoration','letterSpacing','wordSpacing',
-        'lineHeight','textAlign','verticalAlign','direction','backgroundColor',
-        'backgroundImage','backgroundRepeat','backgroundposition',
-        'backgroundAttachment','opacity','width','height','top','right','bottom',
-        'left','marginTop','marginRight','marginBottom','marginLeft',
-        'paddingTop','paddingRight','paddingBottom','paddingLeft',
-        'borderTopWidth','borderRightWidth','borderBottomWidth',
-        'borderLeftWidth','borderTopColor','borderRightColor',
-        'borderBottomColor','borderLeftColor','borderTopStyle',
-        'borderRightStyle','borderBottomStyle','borderLeftStyle','position',
-        'display','visibility','zIndex','overflowX','overflowY','whiteSpace',
-        'clip','float','clear','cursor','listStyleImage','listStylePosition',
-        'listStyleType','markerOffset'
-    ];
+     
     
-    var fillStyle = function(dom)
+    var fillStyle = function(dom, pstyle)
     {
         if (!dom || dom.nodeType != 1) {
+            //console.log("SKIP: " + dom.nodeName);
             return;
         }
-        console.log(dom.nodeName);
+        //console.log(dom.nodeName);
         
         var style = window.getComputedStyle(dom, null);
-        if (style.display == 'none') {
+        if (style.display == 'none' || dom.nodeName == "NOSCRIPT" || dom.nodeName == "SCRIPT" ) {
             dom.parentElement.removeChild(dom);
             return;
         }
+        var cn = [];
         
+        if (dom.childNodes.length > 100) {
+            console.log(dom);
+            throw "too many child nodes?" + dom.childNodes.length ;
+        }
+        for (var i = 0;i < dom.childNodes.length;i++) {
+            cn.push(dom.childNodes[i]);
+        }
         
+        if (cn.length > 100) {
+            console.log(dom);
+            throw "too many child nodes? cn";
+        }
+        for (var i = 0;i < cn.length;i++) {
+            
+            //console.log( i + ':'+ cn[i].nodeName);
+            fillStyle(cn[i], style);
+        }    
+              
         
-        for(var i=0;i<keys.length;i++){
-            var prop = keys[i];
-            //var camel = prop.replace(/\-([a-z])/g, camelize);
+        //var pstyle = false;
+        //if (dom.nodeName != 'BODY') {
+        //    pstyle = window.getComputedStyle(dom.parentElement, null);
+        //}
+         
+        if (dom.nodeName == 'SPAM') {
+            pstyle = false; //?? others??
+        }
+        
+        //if (dom.nodeName == 'LI') {            throw 'done';        }
+        
+        
+        for(var i=0;i<style.length;i++){
+            var prop = style[i];
+            var camel = prop.replace(/\-([a-z])/g, camelize);
             var val = style.getPropertyValue(prop);
             //returns[camel] = val;
             
             // idea... if the parent has the same style.. then do not apply it to the child?
+            if (pstyle && pstyle[prop] == val) {
+                continue;
+            }
+            //console.log(prop + '=' + val);
             
+            dom.style[camel] = val;
+         
             
-            dom.style[prop] = val;
-        }
-        for (var i = dom.childNodes.length -1; i--; i> -1) {
-            fillStyle(dom.childNodes[i]);
         }
-        
+        var es = dom.getAttribute('style');
+        //console.log(dom.nodeName + '::' + es);
+        dom.setAttribute('style', es);
         
         //return returns;
     }
-    var el = document.querySelector('body');
-    fillStyle(el);
     
-    //var matches = document.getElementsByTagName('style');
-    //for(var i =0;i < matches.length;i++) {
-    //    matches[i].parentElement.removeChild(matches[i]);
-    //}
-    
-     
+    function changeit() {
+        
+        
+        var el = document.querySelector('body');
+        fillStyle(el), false;
+        
+        var matches = document.getElementsByTagName('style');
+        var rm = [];
+        for(var i =0;i < matches.length;i++) {
+            rm.push(matches[i]);
+            
+        }
+        var matches = document.getElementsByTagName('link');
+        for(var i =0;i < matches.length;i++) {
+            rm.push(matches[i]);
+        }
+        for(var i =0 ; i < rm.length;i++) {
+            rm[i].parentNode.removeChild(rm[i]);
+        }
+        
+        
+        
+    }
+    changeit();
+    console.log("done");
     
 })();
\ No newline at end of file