﻿/// <reference name="MicrosoftAjax.js" />
Type.registerNamespace("ServerTransformed");

ServerTransformed.IntroAnimPresenter = function(model, view) 
{
    this._model = model;
    this._view = view;
    
    this._onExitHandler = Function.createDelegate(this, this._processViewEnd);
    this._onExitEarlyHandler = Function.createDelegate(this, this._exitEarly);
    this._onPageLoadHandler = Function.createDelegate(this, this._pageLoad);
    this._onFontsLoadedHandler = Function.createDelegate(this, this._fontsLoaded);
    
    this._showSkipHandler = Function.createDelegate(this, this._showSkip);
}

ServerTransformed.IntroAnimPresenter.prototype =
{
    init: function() 
    {
        this._view.add_exitHandler(this._onExitHandler);
        this._model.add_pageLoadedHandler(this._onPageLoadHandler);
        this._model.add_fontsLoadedHandler(this._onFontsLoadedHandler);
        this._model.add_showSkipHandler(this._showSkipHandler);
        
        this._model.set_pageURL("xaml/intro.xaml");
    },
    
    _processViewEnd: function(sender, eventArgs)
    {
        this._view.remove_exitHandler(this._onExitHandler);
        this._model.remove_pageLoadedHandler(this._onPageLoadHandler);
        this._model.remove_fontsLoadedHandler(this._onFontsLoadedHandler);
        this._model.exit();        
    },
    
    _pageLoad: function(sender, eventArgs)
    {
        this._view.set_pageXAML(this._model.get_pageXAML());
        this._model.loadFonts();
    },
    
    _exitEarly: function(sender, eventArgs)
    {
        this._model.exitEarly();
    },
    
    _fontsLoaded: function(sender, eventArgs)
    {
        this._view.begin();
    },
    
    _showSkip: function(sender, eventArgs)
    {
        this._view.add_exitEarlyHandler(this._onExitEarlyHandler);
        this._view.showSkip();
    }
}

ServerTransformed.IntroAnimPresenter.registerClass("ServerTransformed.IntroAnimPresenter");