﻿
// handles toggling between themes (Default, Blue, Green, Red)

$(function() {

    var currentTheme = $('#Main').attr('class');

    var changeTheme = function(newTheme, cookieDomain, cookieName, enableReload) {
        // set the theme in a cookie that expires in 90 days
        if ($.cookie) {
            $.cookie(cookieName, newTheme, { path: '/', domain: cookieDomain });
        }

        // reload if in IE6 to ensure images are loaded
        if (enableReload && $.browser.msie && $.browser.version.indexOf('6') === 0) {
            window.location.reload();
            return;
        }

        $('img').add('input[type="image"]').each(function() {
            var img = this;
            var src = $(img).attr('src');
            if (src.indexOf('/Variant/') !== -1) {
                src = src.replace('/Variant/' + currentTheme, '/Variant/' + newTheme);
                $(img).attr('src', src);
            }
        });

        $('#Main').attr('class', newTheme);
        currentTheme = newTheme;
    };

    var attachSelectedBehavior = function(containerId, cookieDomain, cookieName) {
        if (currentTheme !== undefined && currentTheme.indexOf('Off') === -1) {
            var cookieValue = $.cookie(cookieName);
            if (cookieValue !== null && cookieValue !== currentTheme) {
                changeTheme(cookieValue, cookieDomain, cookieName, false);
            }
        }

        $('div.ThemeSelector a.' + currentTheme).addClass('Selected');

        var context = $('#' + containerId);
        $('a', context).each(function() {
            var anchor = this;
            var theme = $('span', this).text();

            // if the clicked theme is already selected, change the theme to Default
            $(anchor).click(function() {
                var selectedTheme = theme;
                return function() {
                    $(anchor).blur();
                    if (currentTheme === selectedTheme) {
                        changeTheme('Default', cookieDomain, cookieName, true);
                        $(anchor).removeClass('Selected');
                    }
                    else {
                        changeTheme(selectedTheme, cookieDomain, cookieName, true);
                        $('div.ThemeSelector a.Selected').
                            removeClass('Selected');
                        $(anchor).addClass('Selected');
                    }
                };
            } ());
        });
    };

    var createNamespace = function(str) {
        var parts = str.split('.');
        var ns = undefined;
        for (var i = 0; i < parts.length; i++) {
            if (i === 0) {
                if (window[parts[i]] === undefined) {
                    ns = window[parts[i]] = {};
                }
                else {
                    ns = window[parts[i]];
                }
            }
            else {
                if (ns !== undefined) {
                    if (ns[parts[i]] === undefined) {
                        ns = ns[parts[i]] = {};
                    }
                    else {
                        ns = ns[parts[i]];
                    }
                }
            }
        }
    };

    createNamespace('Kleenex.Feel.Themes');

    Kleenex.Feel.Themes.AttachSelectorBehavior = attachSelectedBehavior;
    Kleenex.Feel.Themes.ChangeTheme = changeTheme;
    
});
