﻿/// <reference name="MicrosoftAjax.js" />
Type.registerNamespace("ServerTransformed");

ServerTransformed.IntroAnimView = function(controller) 
{
    this._controller = controller;
    
    this._animationFinishedHandler = Function.createDelegate(this, this._animationCompleted);
}

ServerTransformed.IntroAnimView.prototype =
{
    set_pageXAML: function(value)
    {
        this._exitEarlyHandler = Function.createDelegate(this, this._exitEarly);
        this._controller.content.FindName("ContentViewport").children.Clear();
        this._controller.content.FindName("ContentViewport").children.Add(value);
        this._controller.content.FindName("Intro_btn").addEventListener("mouseenter", 
            function(sender,eventArgs){ sender.GetHost().content.FindName("Intro_btn_Hover").Begin(); });
        this._controller.content.FindName("Intro_btn").addEventListener("mouseleave", 
            function(sender,eventArgs){ sender.GetHost().content.FindName("Intro_btn_Natural").Begin(); });
        this._controller.content.FindName("Intro_btn").addEventListener("mouseleftbuttonup", this._exitEarlyHandler);
        this._controller.content.FindName("Introduction").addEventListener("completed",this._animationFinishedHandler);
    },
    
    begin: function()
    {
        this._controller.content.FindName("Introduction").Begin();
    },
    
    add_exitHandler: function(handler) { this.get_events().addHandler("exit", handler); },
    remove_exitHandler: function(handler) { this.get_events().removeHandler("exit", handler); },
    
    add_exitEarlyHandler: function(handler) { this.get_events().addHandler("exitEarly", handler); },
    remove_exitEarlyHandler: function(handler) { this.get_events().removeHandler("exitEarly", handler); },
    
    _exitEarly: function(sender, eventArgs)
    {
        this._raiseEvent("exitEarly");
        this._raiseEvent("exit");
    },
    
    showSkip: function()
    {
        this._controller.content.FindName("Intro_Display").Begin();
    },
    
    get_events: function()
    {
        if(!this._events)
        {
            this._events = new Sys.EventHandlerList();
        }
        return this._events;
    },
    
    _raiseEvent: function(eventName, eventArgs)
    {
        var handler = this.get_events().getHandler(eventName);
        
        if(handler)
        {
            if(!eventArgs) eventArgs = Sys.EventArgs.Empty;
            handler(this, eventArgs);
        }
    },
    
    _animationCompleted: function(sender, eventArgs)
    {
        this._raiseEvent("exit");
    }
}

ServerTransformed.IntroAnimView.registerClass("ServerTransformed.IntroAnimView");