﻿/**************************************************
**  Highlights the menu item for the current page. 
**  The highlighted anchor link's class is sent 
**  as a parameter. E.g. "home", "toys".
**************************************************/
function HighlightCurrentPageInMenu(currPage)
{
    $("#nav ul li a." +currPage).parent().attr("id", "current");
};

/********************************************************
**  Enables the slide show for the pictures on the page.
********************************************************/
function EnableSlideShow()
{
 $("a[rel=gallery]").fancybox({
	    'transitionIn'		: 'none',
	    'transitionOut'		: 'none',
	    'titlePosition' 	: 'outside',
	    'titleFormat'		: function(title, currentArray, currentIndex, currentOpts) {
		    return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' &nbsp; ' + title : '') + '</span>';
	    }
    });
};

/****************************************************************
** Used to fetch an URL, send in the specified arguments and then
** fill the "elementToFill" with the retrieved data.
****************************************************************/
function FetchAndFill(fetchUrl, dataArgs, elementToFill) {
    $.ajax({
        type: "POST",
        url: fetchUrl,
        data: dataArgs,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            elementToFill.fadeOut('fast', function () {
                elementToFill.html(msg.d).ClearTypeFadeIn('fast');
            });
        }
    });
} //FetchAndFill    

/****************************************************************
** Used to fetch an URL, send in the specified arguments and then
** call the callback function specified.
****************************************************************/
function FetchWithCallback(fetchUrl, dataArgs, callbackFunction) {
    $.ajax({
        type: "POST",
        url: fetchUrl,
        data: dataArgs,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: callbackFunction
    });
} //FetchWithCallback    

//-------------------------------------------------------------------------------------------------------
// 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);


