﻿//------------------------------------------------------------------------------------------------------- 
// ClearTypeFadeTo / ClearTypeFadeIn / ClearTypeFadeOut 
// 
// Custom fade in and fade out functions for jQuery that will work around 
// IE's bug with bold text in elements that have opacity filters set when 
// also using Window's ClearType text rendering. 
// 
// New Parameter: 
// bgColor    The color to set the background if none specified in the CSS (default is '#fff') 
// 
// Examples: 
// $('div').ClearTypeFadeIn({ speed: 1500 }); 
// $('div').ClearTypeFadeIn({ speed: 1500, bgColor: '#ff6666', callback: myCallback }); 
// $('div').ClearTypeFadeOut({ speed: 1500, callback: function() { alert('Fade Out complete') } }); 
// 
// Notes on the interaction of ClearType with DXTransforms in IE7 
// http://blogs.msdn.com/ie/archive/2006/08/31/730887.aspx 
(function($) {
  $.fn.ClearTypeFadeTo = function(options) {
    if (options)
      $(this)
                        .show()
                        .each(function() {
                          if (jQuery.browser.msie) {
                            // Save the original background color 
                            $(this).attr('oBgColor', $(this).css('background-color'));
                            // Set the bgColor so that bold text renders correctly (bug with IE/ClearType/bold text) 
                            $(this).css({ 'background-color': (options.bgColor ? options.bgColor : '#fff') })
                          }
                        })
                        .fadeTo(options.speed, options.opacity, function() {
                          if (jQuery.browser.msie) {
                            // ClearType can only be turned back on if this is a full fade in or 
                            // fade out. Partial opacity will still have the problem because the 
                            // filter style must remain. So, in the latter case, we will leave the 
                            // background color and 'filter' style in place. 
                            if (options.opacity == 0 || options.opacity == 1) {
                              // Reset the background color if we saved it previously 
                              $(this).css({ 'background-color': $(this).attr('oBgColor') }).removeAttr('oBgColor');
                              // Remove the 'filter' style to restore ClearType functionality. 
                              $(this).get(0).style.removeAttribute('filter');
                            }
                          }
                          if (options.callback != undefined) options.callback();
                        });
  };

  $.fn.ClearTypeFadeIn = function(options) {
    if (options)
      $(this)
                        .css({ opacity: 0 })
                        .ClearTypeFadeTo({ speed: options.speed, opacity: 1, callback: options.callback });
  };

  $.fn.ClearTypeFadeOut = function(options) {
    if (options)
      $(this)
                        .css({ opacity: 1 })
                        .ClearTypeFadeTo({ speed: options.speed, opacity: 0, callback: options.callback });
  };
})(jQuery);