﻿/// <reference name="MicrosoftAjax.js" />
Type.registerNamespace("ServerTransformed");

/************************************************************************************
** Presenter first
************************************************************************************/
ServerTransformed.LaunchPagePresenter = function(model, view) 
{
    this._model = model;
    this._view = view;
    
    this._introVideoFinishedHandler = Function.createDelegate(this, this._introVideoFinished);
    this._exitVideoFinishedHandler = Function.createDelegate(this, this._exitVideoFinished);
}

ServerTransformed.LaunchPagePresenter.prototype =
{
    init: function()
    {
        //this._view.add_videoEndedHandler(this._introVideoFinishedHandler);
        //this._view.playVideo(this._model.get_IntroVideo());
        var launchSite = this._model.get_LaunchPage();
        this._model.trackPageLoad();
        window.open(launchSite);
        this._model.exit();
    },

    _introVideoFinished: function(sender, eventArgs)
    {
        //this._view.remove_videoEndedHandler(this._introVideoFinishedHandler);
        //this._view.add_videoEndedHandler(this._exitVideoFinishedHandler);
        //var launchSite = this._model.get_LaunchPage();
        //this._model.trackPageLoad();
        //window.open(launchSite);

        //this._view.playVideo(this._model.get_ExitVideo());
    },

    _exitVideoFinished: function(sender, eventArgs)
    {
        //this._view.remove_videoEndedHandler(this._exitVideoFinishedHandler);
        //this._model.exit();
    }
}

ServerTransformed.LaunchPagePresenter.registerClass("ServerTransformed.LaunchPagePresenter");


/************************************************************************************
** Model
************************************************************************************/
ServerTransformed.LaunchPageModel = function(pageName) 
{
this._name = pageName;    
    switch(this._name)
    {
        case "Web_Innovations":
            this._fileName = "web_innovations";
            break;
        case "Meet IT 24-7":
            this._fileName = "meet_it_24_7";
            break;
        case "Toy Box":
            this._fileName = "toy_box";
            break;
        case "Download Trial":
            this._fileName = "trial";
            break;
        case "Security":
        case "Stability":
        case "Manageability":
        case "Customer":
        default:
            this._fileName = pageName.toLowerCase();
            break;
    }
    
    this._introVideoURL = ServerTransformed.Res.URL[this._fileName];
    this._exitVideoURL = ServerTransformed.Res.URL[this._fileName + "Reverse"];
    this._nextPage = "Home";
}

ServerTransformed.LaunchPageModel.prototype =
{
    init : function () { /* nop */ },
    
    get_LaunchPage : function() { return this._launchPage; },
    set_LaunchPage : function(value) { this._launchPage = value; },
    
    get_closeCommand: function() { return this._nextPage; },
    set_closeCommand: function(value) { this._nextPage = value; },
    
    get_IntroVideo : function() { return this._introVideoURL; },
    get_ExitVideo : function() { return this._exitVideoURL; },
    
    add_loadFontsHandler : function(handler) { /* nop */ },
    remove_loadFontsHandler : function(handler) { /* nop */ },
    
    add_loadPageHandler : function(handler) { /* nop */ },
    remove_loadPageHandler : function(handler) { /* nop */ },
    
    add_exitHandler : function(handler) { this.get_events().addHandler("exit", handler); },
    remove_exitHandler : function(handler) { this.get_events().removeHandler("exit", handler); },
    
    exit : function() { this._raiseEvent("exit"); },
    
    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);
        }
    },
    
    trackPageLoad: function()
    {
        var uri = '/ws2008/home/';
        var title = 'Home: ';
//        switch (this._name)
//        {
//            case "Server News":
//                uri = uri + 'community';
//                title = title + 'Server News';
//                break;
//        }
        uri += 'downloadtrial';
        title += 'Download Trial';
        dcsMultiTrack('DCS.dcsuri',uri,'WT.ti',title,'WT.cg_n','Home','WT.dl','6', 'DCSext.ws2008', 'Download Trial');
    }
}

ServerTransformed.LaunchPageModel.registerClass("ServerTransformed.LaunchPageModel");



/************************************************************************************
** View
************************************************************************************/
ServerTransformed.LaunchPageView = function(controller) 
{
    this._controller = controller;
    
    this._contentViewport = this._controller.content.FindName("ContentViewport");
    this._videoPlayer1 = this._controller.content.FindName("VideoPlayer1");
    this._videoPlayer2 = this._controller.content.FindName("VideoPlayer2");
    
    this._videoEndedDelegate = Function.createDelegate(this, this._videoEnded);
    
    this._contentViewport.children.Clear();
}

ServerTransformed.LaunchPageView.prototype =
{
    add_videoEndedHandler : function(handler) { this.get_events().addHandler("videoEnded", handler); },
    remove_videoEndedHandler : function(handler) { this.get_events().removeHandler("videoEnded", handler); },
    
    playVideo : function(videoURL) {
        this._videoPlayer2.Opacity = 1;
        this._contentViewport.Opacity = 0;
        this._videoPlayer2.addEventListener("mediaended", this._videoEndedDelegate);
        this._videoPlayer2.AutoPlay = "true";
        this._videoPlayer2.Source = videoURL;
        this._videoPlayer1.Pause();
    },
    
    _videoEnded : function(sender, eventArgs)
    {
        sender.removeEventListener("mediaended", "this._videoEndedDelegate");
        
        if(sender.Source.indexOf("reverse") != -1)
        {
            sender.AutoPlay = "false";
            sender.Pause();
            sender.Opacity = 0;
            this._contentViewport.Opacity = 1;
        }
        this._raiseEvent("videoEnded");
    },
    
    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);
        }
    }
}

ServerTransformed.LaunchPageView.registerClass("ServerTransformed.LaunchPageView");