$(function(){
    $('h2, h3').each(function(){
        $(this).prepend('<span style="visibility: hidden;">&nbsp;</span>');
        var fontHeight = $(this).children('span').eq(0).height();
        $(this).children('span').eq(0).remove();
        
        var styles = {
            fontFamily:		$(this).css('fontFamily'),
            fontWeight:		fontWeightFix( $(this).css('fontWeight') ),
            fontSize:		fontHeight,
            paddingTop:		$(this).css('paddingTop').replace('px',''),
            paddingBottom:	$(this).css('paddingBottom').replace('px',''),
            paddingLeft:	$(this).css('paddingLeft').replace('px',''),
            paddingRight:	$(this).css('paddingRight').replace('px',''),
            width:			$(this).width(),
            height:			$(this).height(),
            color:			colorFix( $(this).css('color') ),
            textAlign:		$(this).css('textAlign'),
            textIndent:		$(this).css('textIndent').replace('px',''),
            letterSpacing:	$(this).css('letterSpacing'),
            verticalAlign:	$(this).css('verticalAlign'),
            textData:		$(this).text()
            };
        var textNode = $(this).text();
        
        $(this).css({ padding: 0, textIndent: 0, overflow: 'hidden' });
        $(this).html('').flash({
            src: '/cleartype.swf?' + new Date().getTime(),
            width: styles['width'],
            height: styles['height'],
            wmode: 'transparent',
            salign: 'TL',
            flashvars: styles,
            quality: 'high'
        },{ version: '8.0.0' });
    });
});

function colorFix ( code ) {
    if ( code.match(/rgb.*\((\d+),.*(\d+),.*(\d+)\)/i) ) {
        code = ( parseInt(RegExp.$1) * Math.pow(16,4) + parseInt(RegExp.$2) * Math.pow(16,2) + parseInt(RegExp.$3) ).toString(16);
        while ( code.length < 6 ) {
            code = '0' + code;
        }
        code = '#' + code;
    }
    return code;
}

function fontWeightFix ( num ) {
    if ( !isNaN( num ) ) {
        if ( num-0 > 500 )
            num = 'bold';
        else
            num = 'normal';
    }
    return num;
}
