﻿window.onload = function(){
   
   //Testing the difference in pixels and points on the screen
   var d = document.createElement('div');
   d.style.visibility = 'hidden';
   d.style.height = '12pt';
   d.style.position = 'absolute';
   document.body.appendChild(d); 
   var pixelsInAPoint = d.offsetHeight / 12;
   document.body.removeChild(d);
   
   var tagNames = ['H1', 'H2'];
   
   for (var t=0;t<tagNames.length;t++) { 
      var tags = document.getElementById('content').getElementsByTagName(tagNames[t]);
      for(var i = 0; i < tags.length; i++){
         var element = tags[i];
         if(element.getElementsByTagName('*').length == 0){
            var text = '';
            if(document.all)
               text = element.innerText;
            else
               text = element.textContent;
            var img = document.createElement('IMG');
            img.className = 'headingimg';
            
            //Replace / and @ which are used by imageMagick
            text = text.replace(/\\/g, '\\\\').replace(/@/g, '\@');
            
            var fontsize = '' + getStyle(tags[i], 'font-size');//react differently if we have px or pt end to the font-size
            var fontSuffix = fontsize.substring(fontsize.length-2, fontsize.length);
            var fontsize = parseInt(fontsize.replace(fontSuffix, ''));
            if(fontSuffix == 'pt')
               fontsize = Math.Round(fontsize * pixelsInAPoint);
               
            //pass the offsetWidth of the original element as the width for the returning image
            var width = element.offsetWidth;
               
            //Check for a text-align so we can have the image aligned correctly
            var align = getStyle(tags[i], 'text-align');
            //Removing the -moz- from any alignment
            align = align.replace('-moz-', '');
            
            var imageURL = '/image.asp?text=' + encodeURIComponent(text) + '&align=' + align + '&size=' + fontsize + '&width=' + width + '&color=';
            var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;

            if(navigator.appName == 'Microsoft Internet Explorer' && IE6){
               img.src = '/images/blank.gif';
               //FIXME below breaks in IE6 with a ' in the text
               img.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + imageURL.replace(/'/g, '\\\\\'') + encodeURIComponent(encodeURIComponent(getStyle(tags[i], 'color'))) + '\', sizingMethod=\'image\')';
            }
            else
               img.src = imageURL + encodeURIComponent(getStyle(tags[i], 'color'));
            element.style.display = 'none';
            element.parentNode.insertBefore(img, element);
         }
      }
   }
}

function getStyle(elem, rule){
   var result = '';
   if(document.defaultView && document.defaultView.getComputedStyle){
      result = document.defaultView.getComputedStyle(elem, '').getPropertyValue(rule);
   }
   else if(elem.currentStyle){
      rule = rule.replace(/\-(\w)/g, function (match, p1){
         return p1.toUpperCase();
      });
      result = elem.currentStyle[rule];
   }
   return result;
}
