/* ::: Update Progress jQuery Plugin :::
 * ::: Author: morpheus
 * ::: Date: 05/2008
 * ::: Description: .
 * ::: Usage: $([update_progress_selector]).updateProgress();
 */
jQuery.fn.updateProgress = function(settings)
{
    //default settings object
    settings = jQuery.extend
	({
	    overlayBgColor: "#ff0000",
	    overlayOpacity: "100",
	    overlayId: "updProgOverlay",
	    overlayIframeId: "updProgIframe",
	    overlayContentId: "updProgContent",
	    contentStyle: "text-align:center;font-family:Trebuchet MS,Tahoma,Verdana,Arial,Sans-Serif;font-size:17px;font-weight:bold;color:#ffffff;"
	}, settings);

    //functions
    function _init(updateProgress)
    {
        jQuery(updateProgress).wrapInner('<div id="' + settings.overlayContentId + '"></div>');
        jQuery('<div id="' + settings.overlayId + '"></div>').insertAfter(jQuery(updateProgress).children(':last-child'));

        jQuery("document, html").css({ width: '100%', height: '100%' });
        jQuery("#" + settings.overlayContentId).attr("style", settings.contentStyle);

        jQuery(updateProgress).css
	    (
	        {
	            top: 0,
	            left: 0,
	            height: '100%',
	            width: '100%',
	            'z-index': 51,
	            position: 'fixed',
	            border: 0
	        }
		);

        jQuery('#' + settings.overlayId).css
	    (
	        {
	            top: 0,
	            left: 0,
	            height: '100%',
	            width: '100%',
	            'z-index': 50,
	            position: 'fixed',
	            border: 0,
	            'background-color': settings.overlayBgColor,
	            filter: 'alpha(opacity = ' + settings.overlayOpacity + ' )',
	            '-moz-opacity': (settings.overlayOpacity / 100),
	            opacity: (settings.overlayOpacity / 100)
	        }
		);

        jQuery("#" + settings.overlayContentId).css
	    (
	        settings.contentStyle
		);

        jQuery(window).resize
		(
		    function()
		    {
		        jQuery('#' + settings.overlayId).css
			    (
			        {
			            height: jQuery(window).height(),
			            width: jQuery(window).width()
			        }
			     );
		        jQuery("#" + settings.overlayContentId).css
	            (
	                settings.contentStyle
		        );
		        if (jQuery.browser.msie && jQuery.browser.version < 7)
		        {
		            jQuery(updateProgress).css
	                (
	                    {
	                        height: jQuery(window).height(),
	                        width: jQuery(window).width()
	                    }
	                );

		            jQuery('#' + settings.overlayId).css
	                (
	                    {
	                        height: jQuery(window).height(),
	                        width: jQuery(window).width()
	                    }
	                );
		        }
		    }
		);

        if (jQuery.browser.msie)
        {
            jQuery("#" + settings.overlayContentId).css
	        (
	            { 'z-index': 100 }
		    );

            if (jQuery.browser.version < 7)
            {
                jQuery('<iframe id="' + settings.overlayIframeId + '"></iframe>').insertAfter(jQuery(updateProgress).children(':last-child'));

                jQuery(updateProgress).css
	            (
	                {
	                    position: 'absolute',
	                    top: 0,
	                    left: 0,
	                    height: jQuery(window).height(),
	                    width: jQuery(window).width()
	                }
	            );

                jQuery('#' + settings.overlayId).css
	            (
	                {
	                    position: 'absolute',
	                    top: 0,
	                    left: 0,
	                    height: jQuery(window).height(),
	                    width: jQuery(window).width()
	                }
	            );

                jQuery('#' + settings.overlayContentId).css
	            (
	                {
	                    position: 'absolute',
	                    left: '50%'
	                }
	            );

                jQuery("#" + settings.overlayIframeId).css
	            (
	                {
	                    top: 0,
	                    left: 0,
	                    height: jQuery(window).height(),
	                    width: jQuery(window).width(),
	                    'z-index': 49,
	                    position: 'absolute',
	                    border: 0,
	                    filter: 'alpha(opacity = 0)'
	                }
		        );

                jQuery(window).scroll
		        (
		            function()
		            {
		                var position = { top: jQuery(document).scrollTop() + "px", left: jQuery(document).scrollLeft() + "px" };
		                jQuery(updateProgress).css
			            (
			                position
			             );
		            }
		        );
            }
        }
    }

    //activation
    return this.each
	(
		function(i)
		{
		    _init(this);
		}
	);
};
