﻿// define Gallery class
if (!window.gallerySlider)
	window.gallerySlider = {};

gallerySlider.Page = function() 
{
}

gallerySlider.Page.prototype =
{   
	handleLoad: function(control, userContext, rootElement) 
	{
	    recordDebugMessage("GallerySlider.xaml.js:gallery.handleLoad: control=" + control + ", userContext=" + userContext + ", rootElement=" + rootElement, 9);

		this.control = control;
		
        // set the default status for the gallery thumb images
        this.control.content.findName("gallery_hsw_on_png").opacity = 0;
        this.control.content.findName("gallery_et_on_png").opacity = 0;
        this.control.content.findName("gallery_novera_on_png").opacity = 0;
        this.control.content.findName("gallery_vertigo_on_png").opacity = 0;
        this.control.content.findName("gallery_techDays_on_png").opacity = 0;
        this.control.content.findName("gallery_quicksilver_on_png").opacity = 0;
        this.control.content.findName("gallery_roxio_on_png").opacity = 0;
        this.control.content.findName("gallery_jumper_on_png").opacity = 0;
        this.control.content.findName("gallery_halo3_on_png").opacity = 0;
        this.control.content.findName("gallery_msftedu_on_png").opacity = 0;
        this.control.content.findName("gallery_torque_on_png").opacity = 0;
        this.control.content.findName("gallery_pulse_on_png").opacity = 0;
        this.control.content.findName("gallery_iceCube_on_png").opacity = 0;

        // if the Silverlight control is used on the Gallery Page then 
        // hide the Gallery View It All button, make sure all gallery content is hidden, display the appropriate gallery content
        if (window.location.pathname.toLowerCase().indexOf('gallery.aspx') > -1)
        {
            this.control.content.findName("btn_GalleryView").visibility = "collapsed";

            hideAllGalleryContent(); 

    		var page = new PageQuery(location.search) ;
		    var tag_value = page.getValue("galleryitem");
            var galleryItem = mapTagToItem(tag_value);
            showSelectedGalleryContent(galleryItem);           

	        // setup display for the "first" thumbnail group
	        DisplayGalleryGroup(this.control.content, getGallerySectionNumber(tag_value));
        }
        else
        {
	        // setup display for the "first" thumbnail group  
	        DisplayGalleryGroup(this.control.content, 1);
	        //this.control.content.findName("sb_thumbsLoad_1").begin();
        }
	}
}

// functions for the Gallery Slider
function onGalleryViewItAllClick(sender, mouseEventArgs)
{
    window.location = "Gallery.aspx";
}

function galleryViewItAll_Over(sender, eventArgs)
{
    sender.findName("sb_btn_GalleryView_onOver").begin();    
}

function galleryViewItAll_Leave(sender, eventArgs)
{
    sender.findName("sb_btn_GalleryView_off").begin();    
}

function onGalleryLeftClick(sender, mouseEventArgs)
{
    // move to the "previous" gallery group
    DisplayGalleryGroup(sender, galleryDisplayGroup - 1);
}

function galleryLeft_Over(sender, eventArgs)
{
    sender.findName("btn_GalleryLeft_over").visibility = "visible";    
}

function galleryLeft_Leave(sender, eventArgs)
{
    sender.findName("btn_GalleryLeft_over").visibility = "collapsed";    
}

function onGalleryRightClick(sender, mouseEventArgs)
{
    // move to the "next" gallery group
    DisplayGalleryGroup(sender, galleryDisplayGroup + 1);
}

function galleryRight_Over(sender, eventArgs)
{
    sender.findName("btn_GalleryRight_over").visibility = "visible";    
}

function galleryRight_Leave(sender, eventArgs)
{
    sender.findName("btn_GalleryRight_over").visibility = "collapsed";    
}

 function onGalleryRadioClick(sender, mouseEventArgs)
 {
    switch(sender.name)
    {
        case "btn1":
        {
            DisplayGalleryGroup(sender, 1);
            break;
        }
        case "btn2":
        {
            DisplayGalleryGroup(sender, 2);
            break;
        }
        case "btn3":
        {
            DisplayGalleryGroup(sender, 3);
            break;
        }
    }
 }
 
// current "group" being displayed in the Gallery Viewer
var galleryDisplayGroup = 1;
// maxium number of "groups" in the Gallery Viewer
var galleryDisplayMaxGroup = 3;

function DisplayGalleryGroup(sender, galleryGroupToDisplay)
{
    recordDebugMessage("GallerySlider.xaml.js:DisplayGalleryGroup - galleryGroupToDisplay=" + galleryGroupToDisplay + ", galleryDisplayGroup=" + galleryDisplayGroup, 9);
    
    // set the galleryDisplayGroup
    galleryDisplayGroup = galleryGroupToDisplay;
    
    // don't move past the beginning group
    if (galleryDisplayGroup < 1) { galleryDisplayGroup = 1; }
    
    // don't move past the last group
    if (galleryDisplayGroup > galleryDisplayMaxGroup) { galleryDisplayGroup = galleryDisplayMaxGroup; }

    recordDebugMessage("GallerySlider.xaml.js:DisplayGalleryGroup - galleryDisplayGroup=" + galleryDisplayGroup, 9);

    // slide the thumbs_container to display the correct group (6 represents # of thumbnails in group, 128 is the width of each thumbnail)
    sender.findName("thumbs_container")["Canvas.Left"] = (galleryDisplayGroup - 1) * (6 * 128) * -1
    
    // first reset everything
    sender.findName("btn_radioSelected_1").visibility = "collapsed";
    sender.findName("btn_radioSelected_2").visibility = "collapsed";
    sender.findName("btn_radioSelected_3").visibility = "collapsed";
    sender.findName("btn_radioSelected_text1_png").visibility = "collapsed";
    sender.findName("btn_radioSelected_text2_png").visibility = "collapsed";
    sender.findName("btn_radioSelected_text3_png").visibility = "collapsed";
    switch(galleryDisplayGroup)
    {
        case 1: 
        {
            sender.findName("btn_radioSelected_1").visibility = "visible";
            sender.findName("btn_radioSelected_text1_png").visibility = "visible";
            break;
        }
        case 2: 
        {
            sender.findName("btn_radioSelected_2").visibility = "visible";
            sender.findName("btn_radioSelected_text2_png").visibility = "visible";
            break;
        }
        case 3: 
        {
            sender.findName("btn_radioSelected_3").visibility = "visible";
            sender.findName("btn_radioSelected_text3_png").visibility = "visible";
            break;
        }
    }
}

function onGalleryThumbClick(sender, mouseEventArgs)
{

    // if the Silverlight control is used on the Gallery Page then show the appropropriate content DIV for the Gallery item
    if (window.location.pathname.toLowerCase().indexOf('gallery.aspx') > -1)
    {
        var galleryItem = mapTagToItem(sender.Tag);
                
        showSelectedGalleryContent(galleryItem);     
    }
    // else if the Silverlight control is used on the Home Page then navigate to the Gallery page
    else
    {
        recordDebugMessage("GallerySlider.xaml.js:onGalleryThumbClick - URL=gallery.aspx?galleryItem=" + sender.Tag, 9);
        window.location = "gallery.aspx?galleryItem=" + sender.Tag;
    }
}

function galleryThumb_Over(sender, eventArgs)
{
    sender.findName("sb_thumb" + sender.Tag + "_overOn").begin();
}

function galleryThumb_Leave(sender, eventArgs)
{
    sender.findName("sb_thumb" + sender.Tag + "_off").begin();
}

function galleryButton_Over(sender, eventArgs)
{
    sender.findName("sb_" + sender.Name + "_over").begin();
}

function galleryButton_Leave(sender, eventArgs)
{
    sender.findName("sb_" + sender.Name + "_off").begin();
}

function onGalleryOnSiteClick(sender, mouseEventArgs)
{
    recordDebugMessage("GallerySlider.xaml.js:onGalleryOnSiteClick - sender.Tag=" + sender.Tag + ", sender.name=" + sender.name, 9);
    window.location = sender.Tag;
}

// show external link in a separate window
function onGalleryOffSiteClick(sender, mouseEventArgs)
{
    recordDebugMessage("GallerySlider.xaml.js:onGalleryOffSiteClick - sender.Tag=" + sender.Tag + ", sender.name=" + sender.name, 9);
    openNextWebWindow(sender.Tag);
}

function hideAllGalleryContent()
{
    // hide the gallery hero images
    document.getElementById("img_HSW").style.display="none";
    document.getElementById("img_HALO").style.display="none";
    document.getElementById("img_Jumper").style.display="none";
    document.getElementById("img_Novera").style.display="none";
    document.getElementById("img_MEDU").style.display="none";
    document.getElementById("img_Roxio").style.display="none";
    document.getElementById("img_QuickSilver").style.display="none";
    document.getElementById("img_TechDays").style.display="none";
    document.getElementById("img_Vertigo").style.display="none";
    document.getElementById("img_ETOnline").style.display="none";
    document.getElementById("img_Torque").style.display="none";
    document.getElementById("img_SWSXPulse").style.display="none";
    document.getElementById("img_Icecube").style.display="none";
   
    // hide the gallery descriptions
    document.getElementById("desc_HSW").style.display = "none";
    document.getElementById("desc_HALO").style.display="none";
    document.getElementById("desc_Jumper").style.display="none";
    document.getElementById("desc_Novera").style.display="none";
    document.getElementById("desc_MEDU").style.display="none";
    document.getElementById("desc_Roxio").style.display="none";
    document.getElementById("desc_QuickSilver").style.display="none";
    document.getElementById("desc_TechDays").style.display="none";
    document.getElementById("desc_Vertigo").style.display="none";
    document.getElementById("desc_ETOnline").style.display="none";
    document.getElementById("desc_Torque").style.display="none";
    document.getElementById("desc_SWSXPulse").style.display="none";
    document.getElementById("desc_Icecube").style.display="none";
}

function showSelectedGalleryContent(galleryItem)
{
    // hide gallery content currently displayed
    hideAllGalleryContent(); 

    // and display the new gallery content
    document.getElementById("img_" + galleryItem).style.display="block";
    document.getElementById("desc_" + galleryItem).style.display="block";
}


function getGallerySectionNumber(value)
{
    var gallerySection;
    switch(value)
    {
        case "1":
        case "2":
        case "3":
        case "11":
        case "12":
        case "13":
        {
            gallerySection = 1;
            break;
        }
        case "4":
        case "5":
        case "6":
        case "7":
        case "8":
        case "9":
        {
            gallerySection = 2;
            break;
        }
        case "10":
        {
            gallerySection = 3;
            break;
        }
        default:
        {
            gallerySection = 1;
            break;
        }
    }
    return gallerySection;
}


function mapTagToItem(tag)
{
    var galleryItem;
    switch(tag)
    {
        case "1":
        {
            galleryItem = "HSW";
            break;
        }
        case "2":
        {
            galleryItem = "ETOnline";
            break;
        }
        case "3":
        {
            galleryItem = "Novera";
            break;
        }
        case "4":
        {
            galleryItem = "Jumper";
            break;
        }
        case "5":
        {
            galleryItem = "TechDays";
            break;
        }
        case "6":
        {
            galleryItem = "QuickSilver";
            break;
        }
        case "7":
        {
            galleryItem = "Roxio";
            break;
        }
        case "8":
        {
            galleryItem = "Vertigo";
            break;
        }
        case "9":
        {
            galleryItem = "HALO";
            break;
        }
        case "10":
        {
            galleryItem = "MEDU";
            break;
        }
        case "11":
        {
            galleryItem = "Torque";
            break;
        }
        case "12":
        {
            galleryItem = "SWSXPulse";
            break;
        }
        case "13":
        {
            galleryItem = "Icecube";
            break;
        }
        default:
        {
            galleryItem = "Icecube";
            break;
        }
    }

    return galleryItem;
}