﻿
//jQuery rewrites
function global_initializer(data) {
    //Erases header text because webkit does not support font-size: 0px
    $(data).find('.header_link').html('');
    $(data).find('.share_button').html('');
    $(data).find('.subhead_image').html('');
    $(data).find('.games_tab').html('');
    $(data).find('ul.promo_nav_ul li > a').html('');
    $(data).find('.wherebuy_main_top > a > h1').html('');
    $(data).find('.wherebuy_main_bot > a > h1').html('');

    $(data).find('body').removeClass('loaded').addClass('loaded');

    //Image Preloaders
    if ($(data).find('.preload_homepage').length > 0) {
        preloadImages('/Images/home_flipper_right_on.gif', '/Images/home_flipper_left_on.gif');
    }
    if ($(data).find('.preload_header').length > 0) {
        preloadImages('/Images/header_buy_r.jpg', '/Images/header_play_r.jpg', '/Images/header_service_r.jpg', '/Images/header_games_r.jpg',
            '/Images/header_media_r.jpg', '/Images/header_community_r.jpg', '/Images/header_about_r.jpg', '/Images/header_contact_r.jpg'
            );
    }
    if ($(data).find('.preload_buy').length > 0) {
        preloadImages('/Images/wheretobuy_header_consumer_r.jpg', '/Images/wheretobuy_header_opDis_r.jpg', '/Images/wheretobuy_header_international_r.jpg');
    }
    if ($(data).find('.preload_consumer').length > 0) {
        preloadImages('/Images/wheretobuy_consumer_online_r.jpg', '/Images/wheretobuy_consumer_retail_r.jpg');
    }
    if ($(data).find('body').length > 0) {
        preloadImages('/Images/header_buy_r.jpg', '/Images/header_play_r.jpg', '/Images/header_service_r.jpg', '/Images/header_games_r.jpg',
            '/Images/header_media_r.jpg', '/Images/header_community_r.jpg', '/Images/header_about.jpg', '/Images/header_contact_r.jpg');
    }

    //Navigation Dropdown
    $(data).find('.header_dropdown').hover(function() {
        $('.dropdown_overlay').show().height(parseInt($(document.body).height()) - 25).width(parseInt($(document.body).width()) - 25);
        $('.nav_dropdown_container').fadeOut(200);
        if ($(this).next().hasClass('nav_dropdown_container')) {
            $(this).next().fadeIn(100).offset({ top: $(this).offset().top, left: $(this).offset().left });            
        }
        return false;
    }, function() { return false; });
    $('.dropdown_overlay').mouseover(function(){
        $('.nav_dropdown_container').fadeOut(100);
        $('.dropdown_overlay').hide();
        return false;
    });

    //Games Tabs
    $(data).find('.games_tab_current').click(function() {
        $('.games_tab').removeClass('games_tab_current_active');
        $('.games_tab').removeClass('games_tab_archived_active');
        $(this).addClass('games_tab_current_active');
        $('.games_panel').removeClass('games_panel_active');
        $('.games_panel_current').addClass('games_panel_active');
        return (false);
    });
    $(data).find('.games_tab_archived').click(function() {
        $('.games_tab').removeClass('games_tab_current_active');
        $('.games_tab').removeClass('games_tab_archived_active');
        $(this).addClass('games_tab_archived_active');
        $('.games_panel').removeClass('games_panel_active');
        $('.games_panel_archived').addClass('games_panel_active');
        return (false);
    });

    //Game Item Image Gallery
    $(data).find('.game_image_medium').first().removeClass('game_image_medium_inactive').addClass('game_image_medium_active');
    $(data).find('.game_image_thumbnail > a').click(function() {
        if (!isGallerySliderActive) {
            $('.game_image_medium').addClass('game_image_medium_inactive');
            $('#game_image_medium_' + $(this).attr('href').replace('#image/', '')).removeClass('game_image_medium_inactive').show();
            stopGallerySliding();
        }
        return (false);
    });
    $(data).find('.game_image_medium').click(function() {
        $(this).addClass('overlay_activator');
        activateOverlay($(this).find('.overlay_image_full_source').html(), 'game_image_medium');
        stopGallerySliding();
    });

    //Image Gallery
    $(data).find('.gallery_image_medium').first().removeClass('gallery_image_medium_inactive').addClass('gallery_image_medium_active');
    $(data).find('.gallery_image_thumbnail > a').click(function() {
        if (!isGallerySliderActive) {
            $('.gallery_image_medium').addClass('gallery_image_medium_inactive').hide();
            $('#gallery_image_medium_' + $(this).attr('href').replace('#image/', '')).removeClass('gallery_image_medium_inactive').show();
            stopGallerySliding();
        }
        return (false);
    });
    $(data).find('.gallery_image_medium').click(function() {
        $(this).addClass('overlay_activator');
        activateOverlay($(this).find('.overlay_image_full_source').html(), 'gallery_image_medium');
        stopGallerySliding();
    });

    //AJAX Spinner
    $(data).find('.spinner_trigger').click(function() {
        $(this).addClass('spinnder_overlay');
        $('html').addClass('spinner_overlay');
    });
    $('form').submit(function() {
        if (Page_IsValid) {
            $('input[type=submit].spinner_trigger', this).attr('disabled', 'disabled');
        }
        else {
            $('html').removeClass('spinner_overlay');
        }
    });
    $('html').removeClass('spinner_overlay');

    //Homepage Flipper
    $(data).find('.promo_image').each(function() {
        $(this).find('img').attr('src', $(this).find('.promo_image_url').html());        
    });
    $(data).find('.promo_image_preview').removeClass('promo_image_preview');
    $(data).find('.promo_flipper_right_button').mousedown(function() {
        $(this).addClass('promo_flipper_right_button_pressed');        
    });
    $(data).find('.promo_flipper_left_button').mousedown(function() {
        $(this).addClass('promo_flipper_left_button_pressed');        
    });
    $(data).find('.promo_flipper_right_button').click(function() {
        if (!isPromotionSlidingActive) {
            slidePromotionRight();
            stopPromotionalSliding();
        }
    });
    $(data).find('.promo_flipper_left_button').click(function() {
        if (!isPromotionSlidingActive) {
            slidePromotionLeft();
            stopPromotionalSliding();
        }
    });    
    $(document).mouseup(function() {
        $('.promo_flipper_right_button').removeClass('promo_flipper_right_button_pressed');
        $('.promo_flipper_left_button').removeClass('promo_flipper_left_button_pressed');
    });
    $(data).find('ul.promo_nav_ul li').first().addClass('promo_nav_li_on');
    $(data).find('.promo_image').first().addClass('promo_image_active').show();
    $(data).find('ul.promo_nav_ul li > a').click(function() {
        if (!isPromotionSlidingActive) {
            stopPromotionalSliding();
            $('ul.promo_nav_ul li').removeClass('promo_nav_li_on');
            PromotionImageId = '#promo_image_' + $(this).attr('href').replace('#promo/', '');
            $('.promo_image_active').removeClass('promo_image_active').fadeOut(200, function() {
                $(PromotionImageId).addClass('promo_image_active').fadeIn(200);
            });
            $(this).parent().addClass('promo_nav_li_on');
        }
        return (false);
    });

    //Randomize online retailers
    $(data).find('.randomize_elements').shuffle();

    //Overlay
    $(data).find('.full_overlay_container').click(function() {
        deactivateOverlay();
    });

    $(data).find('.track_exit_links a').click(function() {
        _gaq.push(['_trackEvent', 'Exit', 'Click', $(this).attr('href')]);
    });
}

function activateOverlay(imageUrl, imageClass) {
    if ($('.full_overlay_active').length == 0) {
        $('.full_overlay').addClass('full_overlay_active').height($(document.body).height()).width($(document.body).width());
        $('.full_overlay_container').addClass('full_overlay_container_active').height($(document.body).height()).width($(document.body).width());
        $('.full_overlay_container').css("top", $(document).scrollTop() + "px");
    }
    $('.full_overlay_container').attr("imageUrl", imageUrl);
    $('.full_overlay_container').attr("imageClass", imageClass);
    $('.full_overlay_container').html(
        "<table cellspacing=\"0\" cellspacing=\"0\" border=\"0\" class=\"full_overlay_table\" align=\"center\">" +
        "<tr><td colspan=\"3\" align=\"right\"><div class=\"full_overlay_close_button\">X</div></td></tr>" +
        "<tr><td valign=\"middle\"><div class=\"full_overlay_left_button\">&lt;&lt;</div></td>" +
        "<td><img src=\"" + imageUrl + "\" border=\"0\" alt=\"\"></td>" +
        "<td valign=\"middle\"><div class=\"full_overlay_right_button\">&gt;&gt;</div></td></tr>" +
        "<tr><td colspan=\"3\"><br /><br /><br /></td></tr></table>"
    );
    $('.full_overlay_table').click(function() { return false; });
    $('.full_overlay_right_button').hover(
        function() { $(this).addClass('full_overlay_button_hover'); },
        function() { $(this).removeClass('full_overlay_button_hover'); }
    ).click(function() { shiftOverlayRight(); return false; });
    $('.full_overlay_left_button').hover(
        function() { $(this).addClass('full_overlay_button_hover'); },
        function() { $(this).removeClass('full_overlay_button_hover'); }
    ).click(function() { shiftOverlayLeft(); return false; });
    $('.full_overlay_close_button').hover(
        function() { $(this).addClass('full_overlay_button_hover'); },
        function() { $(this).removeClass('full_overlay_button_hover'); }
    ).click(function() { deactivateOverlay(); });
}

function shiftOverlayLeft() {
    imageUrl = $('.full_overlay_container').attr("imageUrl");
    imageClass = $('.full_overlay_container').attr("imageClass");
    if (!imageUrl || !imageClass) return;

    var next = $('.overlay_activator').prev();

    if (next.length == 0) {        
        next = $('.' + imageClass).last();
    }
    $('.overlay_activator').removeClass('overlay_activator');
    next.addClass('overlay_activator');

    activateOverlay(next.find('.overlay_image_full_source').html(), imageClass);
}

function shiftOverlayRight() {
    imageUrl = $('.full_overlay_container').attr("imageUrl");
    imageClass = $('.full_overlay_container').attr("imageClass");
    if (!imageUrl || !imageClass) return;

    var next = $('.overlay_activator').next();

    if (next.length == 0) {
        next = $('.' + imageClass).first();
    }
    $('.overlay_activator').removeClass('overlay_activator');
    next.addClass('overlay_activator');

    activateOverlay(next.find('.overlay_image_full_source').html(), imageClass);
}

function deactivateOverlay() {
    $('.full_overlay').removeClass('full_overlay_active').height(0).width(0);
    $('.full_overlay_container').removeClass('full_overlay_container_active').height(0).width(0);
    $('.full_overlay_container').html();
    $('.overlay_activator').removeClass('overlay_activator');
}

var PromotionSlidingInterval = 0;
var isPromotionSlidingActive = false;
var PromotionImageId = 0;

function slidePromotionLeft() {
    isPromotionSlidingActive = true;
    var current_image = $('.promo_image_active');
    var current_button = $('.promo_nav_li_on');

    var next_image = current_image.prev();
    var next_button = current_button.prev();

    if (next_image.length == 0) {
        next_image = $('.promo_image').last();
        next_button = $('ul.promo_nav_ul li').last();
    }

    current_button.removeClass('promo_nav_li_on');
    next_button.addClass('promo_nav_li_on');

    current_image.removeClass('promo_image_active').fadeOut(200, function() {
        next_image.addClass('promo_image_active').fadeIn(200, function() { isPromotionSlidingActive = false; });
    });
}
function slidePromotionRight() {
    isPromotionSlidingActive = true;
    var current_image = $('.promo_image_active');
    var current_button = $('.promo_nav_li_on');

    var next_image = current_image.next();
    var next_button = current_button.next();

    if (next_image.length == 0) {
        next_image = $('.promo_image').first();
        next_button = $('ul.promo_nav_ul li').first();
    }

    current_button.removeClass('promo_nav_li_on');
    next_button.addClass('promo_nav_li_on');

    current_image.removeClass('promo_image_active').fadeOut(200, function() {
        next_image.addClass('promo_image_active').fadeIn(200, function() { isPromotionSlidingActive = false; });
    });
}
function startPromotionalSliding() {
    if ($('.promo_image').length > 0) {
        PromotionSlidingInterval = setInterval(slidePromotionRight, 5000);
    }
}
function stopPromotionalSliding() {
    if (PromotionSlidingInterval > 0) {
        clearInterval(PromotionSlidingInterval);
        PromotionSlidingInterval = 0;
    }
}

var GallerySlidingInterval = 0;
var isGallerySliderActive = false;

function startGallerySliding()
{
    if ($('.gallery_image_medium').length > 0 || $('.game_image_medium').length > 0) {
        GallerySlidingInterval = setInterval(function() {
            isGallerySliderActive = true;
            var current = $('.gallery_image_medium_active');
            var next = current.next();

            if (next.length == 0) {
                next = $('.gallery_image_medium').first()
            }

            current.removeClass('gallery_image_medium_active').animate({ width: 'toggle' }, 350, function() {
                next.addClass('gallery_image_medium_active').animate({ width: 'toggle' }, 350, function() { isGallerySliderActive = false; });
            });

            if (current.length == 0) {
                current = $('.game_image_medium_active');
                next = current.next();

                if (next.length == 0) {
                    next = $('.game_image_medium').first()
                }

                current.removeClass('game_image_medium_active').animate({ width: 'toggle' }, 350, function() {
                    next.addClass('game_image_medium_active').animate({ width: 'toggle' }, 350, function() { isGallerySliderActive = false; });
                });
            }
        }, 5000);
    }
}

function stopGallerySliding()
{
    if (GallerySlidingInterval > 0) {
        clearInterval(GallerySlidingInterval);
        GallerySlidingInterval = 0;
    }
}

function preloadImages() {
    var args_len = arguments.length;
    for (var i = args_len; i--; ) {
        $('<img />').attr('src', arguments[i]).hide().load(function() { $('body').append($(this)) });
    }
}

//initialize our jQuery rewrites for document and update panel loads
$(document).ready(function() {
    global_initializer(document);
    startGallerySliding();
    startPromotionalSliding();
    Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(global_pageloaded_initializer);
});

function global_pageloaded_initializer(sender, args) {
    var panels = args.get_panelsUpdated();
    if (panels.length > 0) {
        for (i = 0; i < panels.length; i++) {
            global_initializer(panels[i]);
        }
    }
}

(function($) {
    $.fn.shuffle = function() {
        return this.each(function() {
            var items = $(this).children();
            return (items.length)
        ? $(this).html($.shuffle(items))
        : this;
        });
    }

    $.shuffle = function(arr) {
        for (
      var j, x, i = arr.length; i;
      j = parseInt(Math.random() * i),
      x = arr[--i], arr[i] = arr[j], arr[j] = x
    );
        return arr;
    }
})(jQuery);

