﻿Type.registerNamespace('Intel.ARK.PlatformBrowser');

Intel.ARK.PlatformBrowser.SelectionButton = function(control, target, id, buttonText, color, buttonImage, left, top)
{
    this.control = control;
    this.target = target;
    this.id = id;
    this.left = left;
    
    this.set_text(buttonText);
    this.set_backgroundColor(color);
    this.set_backgroundImageSource(buttonImage);
    
    this.target["Canvas.Left"] = left;
    if(color) this.target.findName("ButtonBackColor").color = this.get_backgroundColor();
    if(buttonImage) this.target.findName("ButtonImage").source = this.get_backgroundImageSource();
    var textElement = this.target.findName("ButtonText");
    textElement.text = this.get_text();
        
    var boundingBox = this.target.findName("ButtonBackgroundRectangle");
    textElement.setValue("Canvas.Left", ((boundingBox.Width - textElement.ActualWidth) / 2));

    this.target.addEventListener("MouseEnter", Function.createDelegate(this, this.onMouseEnter));
    this.target.addEventListener("MouseLeave", Function.createDelegate(this, this.onMouseLeave));
    this.target.addEventListener("MouseLeftButtonDown", Function.createDelegate(this, this.onMouseLeftButtonDown));
    
    var animation = this.target.findName("StartUpAnimation");
    animation.Begin();
}
Intel.ARK.PlatformBrowser.SelectionButton.prototype = 
{
    //Public Properties
    set_text: function(value){
        this._text = value;
    },
    get_text: function(){
        return this._text;
    },
    set_description: function(value){
        this._description = value;
    },
    get_description: function(){
        return this._description;
    },
    set_backgroundColor: function(value){
        this._backgroundColor = value;
    },
    get_backgroundColor: function(){
        return this._backgroundColor;
    },
    set_overlayColor: function(value){
        this._overlayColor = value;
    },
    get_overlayColor: function(){
        return this._overlayColor;        
    },
    set_backgroundImageSource: function(value){
        this._backgroundImageSource = value;
    },
    get_backgroundImageSource: function(){
        return this._backgroundImageSource;
    },
    //Public Methods
    get_events: function()
    {
        if(!this._events)
        {
            this._events = new Sys.EventHandlerList();
        }
        return this._events;
    },
    styleSelected: function()
    {
        this.target.findName("ButtonTemplateContainer").Opacity = 1;
        this.target.findName("ButtonBorder").StrokeThickness = "3";
        this.target.findName("ButtonBorder").Stroke = "#FF000000";
    },
    styleDeselected: function()
    {
        this.target.findName("ButtonTemplateContainer").Opacity = .50;
        this.target.findName("ButtonBorder").StrokeThickness = "1";
        this.target.findName("ButtonBorder").Stroke = "#FF000000";
    },
    
    //Private Methods
    _raiseEvent: function(eventName, eventArgs)
    {
        var handler = this.get_events().getHandler(eventName);
        if(handler)
        {
            if(!eventArgs)
            {
                eventArgs = Sys.EventArgs.Empty;
            }
            handler(this, eventArgs);
        }
    },
    
    //Event Handlers
    onMouseEnter: function(sender, eventArgs)
    {
        this._raiseEvent('mouseEnter', eventArgs);
        
        //show mouseover effect
        this.target.findName("ButtonMouseEnterOverlay").visibility = "Visible";
    },
    onMouseLeave: function(sender, eventArgs)
    {
        this._raiseEvent('mouseLeave', eventArgs);

        //hide mouseover effect
        this.target.findName("ButtonMouseEnterOverlay").visibility = "Collapsed";
    },
    onMouseLeftButtonDown: function(sender, eventArgs)
    {
        this.styleSelected();
        this.target.findName("ButtonShineStoryboard").Begin();

        this._raiseEvent('mouseDown', eventArgs);
    },
    
    
    //Events    
    add_mouseEnter: function(handler)
    {
        this.get_events().addHandler('mouseEnter', handler);
    },
    remove_mouseEnter: function(handler)
    {
        this.get_events().removeHandler('mouseEnter', handler);
    },
    add_mouseLeave: function(handler)
    {
        this.get_events().addHandler('mouseLeave', handler);
    },
    remove_mouseLeave: function(handler)
    {
        this.get_events().removeHandler('mouseLeave', handler);
    },
    add_mouseDown: function(handler)
    {
        this.get_events().addHandler('mouseDown', handler);
    },
    remove_mouseDown: function(handler)
    {
        this.get_events().removeHandler('mouseDown', handler);
    }
    
}

Intel.ARK.PlatformBrowser.SelectionButton.registerClass('Intel.ARK.PlatformBrowser.SelectionButton');


/////////////////////////////////////////////////////////////////////////////////////////////
//Setup
/////////////////////////////////////////////////////////////////////////////////////////////
Intel.ARK.PlatformBrowser.SelectionStrip = function Intel$ARK$PlatformBrowser$SelectionStrip(control, target, id, buttonTemplateUrl, showButtons, dataMethod, isCodeNameMode)
{
    this.control = control;
    this.target = target;
    this.id = id;

    this.set_selectionStripButtonTemplateUrl(buttonTemplateUrl);
    
    this._showButtons = showButtons;
    this._dataMethod = dataMethod;
    this._isCodeNameMode = isCodeNameMode;

    this._tooltipTimeout = null;
    this._tooltipHideTimeout = null;
    
    this._selectedButtonId = null;
    this._selectionItems = null;
    this._selectionButtons = new Array();
    
    this._family_id = null;
    this._series_id = null;
    this._isCodeNameMode = false;
    
    this._buttonsLeftX = null;
    this._buttonWidth = 185;
    
    this._numButtonsVisible = 3;
}

function Intel$ARK$PlatformBrowser$SelectionStrip$dispose()
{
    this._disposed = true;
    
    if (this._buttonTemplate)
        delete this._buttonTemplate;
        
    Intel.ARK.Silverlight1_0.Controls.SelectionStrip.callBaseMethod(this, "dispose");
}

/////////////////////////////////////////////////////////////////////////////////////////////
// End Setup - Begin Events
/////////////////////////////////////////////////////////////////////////////////////////////
function Intel$ARK$PlatformBrowser$SelectionStrip$get_events()
{
    if(!this._events)
    {
        this._events = new Sys.EventHandlerList();
    }
    return this._events;
}
function Intel$ARK$PlatformBrowser$SelectionStrip$raiseEvent(eventName, eventArgs)
{
    var handler = this.get_events().getHandler(eventName);
    if(handler)
    {
        if(!eventArgs)
        {
            eventArgs = Sys.EventArgs.Empty;
        }
        handler(this, eventArgs);
    }
}

function Intel$ARK$PlatformBrowser$SelectionStrip$btnTemplateDownloaded(sender, args)
{
    this._buttonTemplate = sender.ResponseText;
    
    var dataMethod = this.get_dataMethod();
    if (dataMethod)
    {
        eval(dataMethod.replace(/{param1}/, this._family_id || null)
                        .replace(/{param2}/, this._series_id || null)
                        .replace(/{param3}/, this._isCodeNameMode || false)
                        .replace(/{callback}/, 'Function.createDelegate(this, Intel$ARK$PlatformBrowser$SelectionStrip$dataDownloaded)'));
    }
}

function Intel$ARK$PlatformBrowser$SelectionStrip$dataDownloaded(results)
{
    this.target.findName("LeftScrollArrow").addEventListener("MouseLeftButtonDown", Function.createDelegate(this, this.onScrollLeft));
    this.target.findName("RightScrollArrow").addEventListener("MouseLeftButtonDown", Function.createDelegate(this, this.onScrollRight));
    this.target.findName("LeftScrollArrow").addEventListener("MouseLeave", Function.createDelegate(this, this.onStopScrollLeft));
    this.target.findName("RightScrollArrow").addEventListener("MouseLeave", Function.createDelegate(this, this.onStopScrollRight));
    
    this._buttonsLeftX = this.target.findName("ButtonsContainerCanvas")["Canvas.Left"];
    this._leftOffset = 10;
    
    this._selectionItems = results;
    
    if (results && results.length > 0)
    {
        for (var i = 0; i < results.length; i++)
        {
            var b = results[i];
            this.addSelectionButton(b);
            if(this._selectionButtons[i].id == this._selectedButtonId)
            {
                this.set_selectedSelectionButton(this._selectionButtons[i]);
            }
        }
    }

    if (this.get_selectedSelectionButton())
    {
        this.setUnselectedButtonStyle();
        this.scrollToSelectedButton(this.get_selectedSelectionButton());    
    }
    
    if(results && results.length > this._numButtonsVisible)
    {
        this.target.findName("LeftScrollArrowCanvas").visibility = "visible";
        this.target.findName("RightScrollArrowCanvas").visibility = "visible";
    }

    //fire stripDataDownloaded event
    this.raiseEvent('stripDataDownloaded');
}
function Intel$ARK$PlatformBrowser$SelectionStrip$onMouseLeftButtonDown(sender, eventArgs)
{
    this.set_selectedSelectionButton(sender);
    this.setUnselectedButtonStyle();
    
    //fire ItemSelected event
    this.raiseEvent('ItemSelected');
}
function Intel$ARK$PlatformBrowser$SelectionStrip$onMouseEnter(sender, eventArgs)
{
    var sl = this.control;
    var id = sender.id;
    
    //set tooltip values and show toolTip
    window.clearTimeout(window._tooltipHideTimeout);


    for (var i = 0; i < this._selectionItems.length; i++)
    {
        if (this._selectionItems[i].ID === id)
        {
            sl.content.findName("ToolTipTitleText").text = this._selectionItems[i].Text;
            sl.content.findName("ToolTipText").text = this._selectionItems[i].Description;
            sl.content.findName("ToolTipBackgroundRectangle").height = sl.content.findName("ToolTipText").actualHeight + 55;
            sl.content.findName("ToolTipBackgroundRectangleBorder").height = sl.content.findName("ToolTipBackgroundRectangle").height + 15;
            sl.content.findName("ToolTipBackgroundRectangle").fill = this._selectionItems[i].BackgroundColor || "#FF0860A8";
        }
    }    
    
    if(!this._isCodeNameMode)
    {
        window._tooltipTimeout = window.setTimeout(Function.createDelegate(this, this.showToolTip), 500);
    }
}
function Intel$ARK$PlatformBrowser$SelectionStrip$onMouseLeave(sender, eventArgs)
{
    window.clearTimeout(window._tooltipTimeout);

    //hide tooltip
    window._tooltipHideTimeout = window.setTimeout(Function.createDelegate(this, this.hideToolTip), 250);    
}
function Intel$ARK$PlatformBrowser$SelectionStrip$onScrollLeft(sender, eventArgs)
{
    this.scrollLeft();
}
function Intel$ARK$PlatformBrowser$SelectionStrip$onScrollRight(sender, eventArgs)
{
    this.scrollRight();
}
function Intel$ARK$PlatformBrowser$SelectionStrip$onStopScrollLeft(sender, eventArgs)
{
    clearInterval(this._scrollTimeout);
}
function Intel$ARK$PlatformBrowser$SelectionStrip$onStopScrollRight(sender, eventArgs)
{
    clearInterval(this._scrollTimeout);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////
// End Events - Begin Helper Methods 
////////////////////////////////////////////////////////////////////////////////////////////////////////
function Intel$ARK$PlatformBrowser$SelectionStrip$loadButtons(family_id, series_id, isCodeNameMode, selectedButtonId)
{
    this._family_id = family_id;
    this._series_id = series_id;
    this._isCodeNameMode = isCodeNameMode;

    this._selectedButtonId = selectedButtonId;
    
    //clear the selected usage button if no default selection is being passed in
    if(!selectedButtonId)
    {
        this._selectedSelectionButton = "";
    }
    
    //clear the existing buttons if there are any
    this.removeButtons();

    var downloader = this.control.createObject("downloader");
    downloader.addEventListener("completed", Function.createDelegate(this, this._btnTemplateDownloaded));
    downloader.open("GET", this.get_selectionStripButtonTemplateUrl());
    downloader.send();    
}
function Intel$ARK$PlatformBrowser$SelectionStrip$removeButtons()
{
    this._selectedSelectionButton = "";
    var container = this.target.findName("ButtonsContainerCanvas");
    container.children.clear();
    container["Canvas.Left"] = 0;
    
    
    this.target.findName("LeftScrollArrowCanvas").visibility = "collapsed";
    this.target.findName("RightScrollArrowCanvas").visibility = "collapsed";
}
function Intel$ARK$PlatformBrowser$SelectionStrip$addSelectionButton(selectionItem)
{
    var sl = this.control;
    
    var id = selectionItem.ID;
    this._buttonID = id;
    
    var xaml = this._buttonTemplate;
        
    var button = sl.content.createFromXaml(xaml, true);
    var container = this.target.findName("ButtonsContainerCanvas");
    container.children.add(button);
        
    var buttonInstance = new Intel.ARK.PlatformBrowser.SelectionButton(this.control, button, id, selectionItem.Text, null, selectionItem.BackgroundImageSource, this._leftOffset);
    buttonInstance.add_mouseEnter(Function.createDelegate(this, this.onMouseEnter));
    buttonInstance.add_mouseLeave(Function.createDelegate(this, this.onMouseLeave));
    buttonInstance.add_mouseDown(Function.createDelegate(this, this.onMouseLeftButtonDown));
    
    Array.add(this._selectionButtons, buttonInstance);
    
    this._leftOffset += 185;

}
function Intel$ARK$PlatformBrowser$SelectionStrip$showToolTip()
{
    var sl = this.control;

    sl.content.root.findName("ToolTipCanvas").visibility = "visible";
}
function Intel$ARK$PlatformBrowser$SelectionStrip$hideToolTip()
{
    var sl = this.control;
    sl.content.root.findName("ToolTipCanvas").visibility = "collapsed";    
}
function Intel$ARK$PlatformBrowser$SelectionStrip$scrollRight(dest)
{
    this._buttonWidth = 185;
    var canvas = this.target.findName("ButtonsContainerCanvas");
    var destination = (!this._isCodeNameMode) ? canvas["Canvas.Left"] - this._buttonWidth : canvas["Canvas.Left"] - (this._buttonWidth * 3);
    if(dest)
    {
        destination = -dest;
    }
    var maxLeft = (this._selectionItems.length - 3) * this._buttonWidth;

    var scrollTween = new Tween(new Object(),'st',Tween.strongEaseOut,canvas["Canvas.Left"], destination, .25);
    scrollTween.onMotionChanged = function(event)
    {
        canvas["Canvas.Left"] = event.target._pos;
    }
    scrollTween.onMotionFinished = function(event)
    {
        if(canvas["Canvas.Left"] !== destination)
        {
            canvas["Canvas.Left"] = destination;
        }
        if(Math.abs(canvas["Canvas.Left"]) > maxLeft)
        {
            var elasticTween = new Tween(new Object(),'st',Tween.elasticEaseOut,canvas["Canvas.Left"], -maxLeft, .25);
            elasticTween.onMotionChanged = function(event)
            {
                canvas["Canvas.Left"] = event.target._pos;
            }
            elasticTween.start();                
        }
    }
    scrollTween.start();
}
function Intel$ARK$PlatformBrowser$SelectionStrip$scrollLeft()
{
    this._buttonWidth = 185;
    var canvas = this.target.findName("ButtonsContainerCanvas");
    var destination = (!this._isCodeNameMode) ? canvas["Canvas.Left"] + this._buttonWidth : canvas["Canvas.Left"] + (this._buttonWidth * 3);

    var scrollTween = new Tween(new Object(),'st',Tween.strongEaseOut,canvas["Canvas.Left"], destination, .25);
    scrollTween.onMotionChanged = function(event)
    {
        canvas["Canvas.Left"] = event.target._pos;
    }
    scrollTween.onMotionFinished = function(event)
    {
        if(canvas["Canvas.Left"] > 0)
        {
            var elasticTween = new Tween(new Object(),'st',Tween.elasticEaseOut,canvas["Canvas.Left"], 0, .25);
            elasticTween.onMotionChanged = function(event)
            {
                canvas["Canvas.Left"] = event.target._pos;
            }
            elasticTween.start();                
        }
    }
    scrollTween.start();
}
function Intel$ARK$PlatformBrowser$SelectionStrip$scrollToSelectedButton(button)
{
    if(this._selectionButtons.length > this._numButtonsVisible)
    {
        if(button.left > ((button.target.findName("ButtonTemplateContainer").width + 10) * (this._numButtonsVisible - 1)))
        {
            this.scrollRight(button.left - 10);
        }
    }
}

function Intel$ARK$PlatformBrowser$SelectionStrip$setUnselectedButtonStyle()
{
    if(this.get_selectedSelectionButton())
    {
        //tell the buttons that aren't selected to reset their style
        for (var i = 0; i < this._selectionButtons.length; i++)
        {
            if (this._selectionButtons[i] != this.get_selectedSelectionButton())
            {
                this._selectionButtons[i].styleDeselected();
            }
            else
            {
                this._selectionButtons[i].styleSelected();
            }
        }
    }
}

////////////////////////////////////////////////////////////////////////////////////////////////////////
// End Helper Methods - Begin Properties
////////////////////////////////////////////////////////////////////////////////////////////////////////

function Intel$ARK$PlatformBrowser$SelectionStrip$get_selectionStripButtonTemplateUrl()
{
    /// <value type="String"></value>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this._selectionStripButtonTemplateUrl || "";
}
function Intel$ARK$PlatformBrowser$SelectionStrip$set_selectionStripButtonTemplateUrl(value)
{
    var e = Function._validateParams(arguments, [{name: "value", type: String}]);
    if (e) throw e;
    
    this._selectionStripButtonTemplateUrl = value;
}
function Intel$ARK$PlatformBrowser$SelectionStrip$get_showButtonsOnStartUp()
{
    /// <value type="String"></value>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this._showButtonsOnStartUp || "";
}
function Intel$ARK$PlatformBrowser$SelectionStrip$set_showButtonsOnStartUp(value)
{
    var e = Function._validateParams(arguments, [{name: "value", type: String}]);
    if (e) throw e;
    
    this._showButtonsOnStartUp = value;
}

function Intel$ARK$PlatformBrowser$SelectionStrip$get_dataMethod()
{
    /// <value type="String"></value>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this._dataMethod || "";
}
function Intel$ARK$PlatformBrowser$SelectionStrip$set_dataMethod(value)
{
    var e = Function._validateParams(arguments, [{name: "value", type: String}]);
    if (e) throw e;
    
    this._dataMethod = value;
    
}
function Intel$ARK$PlatformBrowser$SelectionStrip$get_xaml()
{
    /// <value type="String"></value>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this._xaml || "";
}
function Intel$ARK$PlatformBrowser$SelectionStrip$set_xaml(value)
{
    var e = Function._validateParams(arguments, [{name: "value", type: String}]);
    if (e) throw e;
    
    this._xaml = value;
}
function Intel$ARK$PlatformBrowser$SelectionStrip$get_xamlInstance()
{
    return this._xamlInstance;
}
function Intel$ARK$PlatformBrowser$SelectionStrip$set_xamlInstance(value)
{
    this._xamlInstance = value;
}


function Intel$ARK$PlatformBrowser$SelectionStrip$get_familyId()
{
    /// <value type="String"></value>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this._family_id || "";
}
function Intel$ARK$PlatformBrowser$SelectionStrip$set_familyId(value)
{
    var e = Function._validateParams(arguments, [{name: "value", type: String}]);
    if (e) throw e;
    
    this._family_id = value;
}
function Intel$ARK$PlatformBrowser$SelectionStrip$get_seriesId()
{
    /// <value type="String"></value>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this._series_id || "";
}
function Intel$ARK$PlatformBrowser$SelectionStrip$set_seriesId(value)
{
    var e = Function._validateParams(arguments, [{name: "value", type: String}]);
    if (e) throw e;
    
    this._series_id = value;
}
function Intel$ARK$PlatformBrowser$SelectionStrip$get_selectionItems()
{
    /// <value type="Intel.ARK.Silverlight1_0.Controls.SelectionItemCollection"></value>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this._selectionItems || "";
}
function Intel$ARK$PlatformBrowser$SelectionStrip$set_selectionItems(value)
{
    var e = Function._validateParams(arguments, [{name: "value", type: Intel.ARK.Silverlight1_0.Controls.SelectionItemCollection}]);
    if (e) throw e;
    
    this._selectionItems = value;
}
function Intel$ARK$PlatformBrowser$SelectionStrip$get_selectedSelectionButton()
{
    /// <value type="Intel.ARK.PlatformBrowser.SelectionButton"></value>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this._selectedSelectionButton || "";
}
function Intel$ARK$PlatformBrowser$SelectionStrip$set_selectedSelectionButton(value)
{
    var e = Function._validateParams(arguments, [{name: "value", type: Intel.ARK.PlatformBrowser.SelectionButton}]);
    if (e) throw e;
    
    this._selectedSelectionButton = value;
}
function Intel$ARK$PlatformBrowser$SelectionStrip$get_isCodeNameMode()
{
    /// <value type="Boolean"></value>
    if (arguments.length !== 0) throw Error.parameterCount();
    return this._isCodeNameMode || false;
}
function Intel$ARK$PlatformBrowser$SelectionStrip$set_isCodeNameMode(value)
{
    var e = Function._validateParams(arguments, [{name: "value", type: String}]);
    if (e) throw e;
    
    this._isCodeNameMode = Boolean.parse(value);
}


///////////////////////////////////////////////////////////////////////////////////////////////
//End Properties - Begin Prototype
///////////////////////////////////////////////////////////////////////////////////////////////

Intel.ARK.PlatformBrowser.SelectionStrip.prototype = 
{
    //properties
    get_selectionStripButtonTemplateUrl: Intel$ARK$PlatformBrowser$SelectionStrip$get_selectionStripButtonTemplateUrl,
    set_selectionStripButtonTemplateUrl: Intel$ARK$PlatformBrowser$SelectionStrip$set_selectionStripButtonTemplateUrl,
    get_showButtonsOnStartUp: Intel$ARK$PlatformBrowser$SelectionStrip$get_showButtonsOnStartUp,
    set_showButtonsOnStartUp: Intel$ARK$PlatformBrowser$SelectionStrip$set_showButtonsOnStartUp,
    get_familyId: Intel$ARK$PlatformBrowser$SelectionStrip$get_familyId,
    set_familyId: Intel$ARK$PlatformBrowser$SelectionStrip$set_familyId,
    get_seriesId: Intel$ARK$PlatformBrowser$SelectionStrip$get_seriesId,
    set_seriesId: Intel$ARK$PlatformBrowser$SelectionStrip$set_seriesId,
    get_dataMethod: Intel$ARK$PlatformBrowser$SelectionStrip$get_dataMethod,
    set_dataMethod: Intel$ARK$PlatformBrowser$SelectionStrip$set_dataMethod,
    get_xaml: Intel$ARK$PlatformBrowser$SelectionStrip$get_xaml,
    set_xaml: Intel$ARK$PlatformBrowser$SelectionStrip$set_xaml,
    get_xamlInstance: Intel$ARK$PlatformBrowser$SelectionStrip$get_xamlInstance,
    set_xamlInstance: Intel$ARK$PlatformBrowser$SelectionStrip$set_xamlInstance,
    get_selectionItems: Intel$ARK$PlatformBrowser$SelectionStrip$get_selectionItems,
    set_selectionItems: Intel$ARK$PlatformBrowser$SelectionStrip$set_selectionItems,
    get_selectedSelectionButton: Intel$ARK$PlatformBrowser$SelectionStrip$get_selectedSelectionButton,
    set_selectedSelectionButton: Intel$ARK$PlatformBrowser$SelectionStrip$set_selectedSelectionButton,
    get_isCodeNameMode: Intel$ARK$PlatformBrowser$SelectionStrip$get_isCodeNameMode,
    set_isCodeNameMode: Intel$ARK$PlatformBrowser$SelectionStrip$set_isCodeNameMode,
        
    //private methods
    _btnTemplateDownloaded: Intel$ARK$PlatformBrowser$SelectionStrip$btnTemplateDownloaded,
    
    //event handlers
    get_events: Intel$ARK$PlatformBrowser$SelectionStrip$get_events,
    raiseEvent: Intel$ARK$PlatformBrowser$SelectionStrip$raiseEvent,
    onMouseLeftButtonDown: Intel$ARK$PlatformBrowser$SelectionStrip$onMouseLeftButtonDown,
    onMouseEnter: Intel$ARK$PlatformBrowser$SelectionStrip$onMouseEnter,
    onMouseLeave: Intel$ARK$PlatformBrowser$SelectionStrip$onMouseLeave,
    onScrollLeft: Intel$ARK$PlatformBrowser$SelectionStrip$onScrollLeft,
    onScrollRight: Intel$ARK$PlatformBrowser$SelectionStrip$onScrollRight,
    onStopScrollLeft: Intel$ARK$PlatformBrowser$SelectionStrip$onStopScrollLeft,
    onStopScrollRight: Intel$ARK$PlatformBrowser$SelectionStrip$onStopScrollRight,

    //public methods
    showToolTip: Intel$ARK$PlatformBrowser$SelectionStrip$showToolTip,
    hideToolTip: Intel$ARK$PlatformBrowser$SelectionStrip$hideToolTip,
    scrollRight: Intel$ARK$PlatformBrowser$SelectionStrip$scrollRight,
    scrollLeft: Intel$ARK$PlatformBrowser$SelectionStrip$scrollLeft,
    addSelectionButton: Intel$ARK$PlatformBrowser$SelectionStrip$addSelectionButton,
    loadButtons: Intel$ARK$PlatformBrowser$SelectionStrip$loadButtons,
    removeButtons: Intel$ARK$PlatformBrowser$SelectionStrip$removeButtons,
    setUnselectedButtonStyle: Intel$ARK$PlatformBrowser$SelectionStrip$setUnselectedButtonStyle,
    scrollToSelectedButton: Intel$ARK$PlatformBrowser$SelectionStrip$scrollToSelectedButton,
    
    dispose: Intel$ARK$PlatformBrowser$SelectionStrip$dispose
}

Intel.ARK.PlatformBrowser.SelectionStrip.registerClass("Intel.ARK.PlatformBrowser.SelectionStrip");
