﻿var UmpModalDisplayClass = new Array();
UmpModalDisplayClass['Small'] = 'mod-ump-container-small-modal';
UmpModalDisplayClass['Medium'] = 'mod-ump-container-medium-modal';
UmpModalDisplayClass['Large'] = 'mod-ump-container-large-modal';


//*********************** Load Universal Media Player SWF ***************************
function LoadModalUniversalMediaPlayerSWF(displayCarousel, displayContentInfo, size, name) {
    var eventCallbackFunctionName = name + '.UmpModalEventCallBack';
    var loadedJSCallbackFunctionName = name + '.UmpModalLoadCallBack';
    var clickJSCallbackFunctionName = name + '.UmpModalClickCallBack';

    var params = { menu: "false", allowfullscreen: "true", allowscriptaccess: "always", wmode: "transparent" };
    var expressInstallURL = "http://serve.a-widget.com/kickFlash/scripts/expressInstall2.swf";
    var swfURL = "http://serve.a-widget.com/service/getWidgetSwf.kickAction";

    flashvars = { 
        affiliateSiteId: UmpIntelAffiliateId,
        widgetId: UmpSizeId[size],
        width: UmpSizeDimensions[size].Width,
        height: UmpSizeDimensions[size].Height,
        eventCallbackFunc: eventCallbackFunctionName,
        loadedJSCallback: loadedJSCallbackFunctionName,
        clickJSCallback: clickJSCallbackFunctionName,
        js: 1
    };

    attributes = { 
        id: UmpObjectId.MODAL,
        name: UmpObjectId.MODAL
    };
                   
    swfobject.embedSWF(swfURL, UmpSwfContainer.MODAL, UmpSizeDimensions[size].Width, UmpSizeDimensions[size].Height, "9.0.28", expressInstallURL, flashvars, params, attributes);

    if (/MSIE (5\.5|6)/.test(navigator.userAgent) || typeof filters == 'unknown') {
        document.getElementById('mod-ump-overlay-modal').className = 'mod-ump-overlay-ie6-modal';
    }

    var modalUmp = new ModalUniversalMediaPlayer(displayCarousel, displayContentInfo, size, name);
    return modalUmp;
}



//***********************************************************************************
//*********************** Modal Universal Media Player ***************************
function ModalUniversalMediaPlayer(displayCarousel, displayContentInfo, size, name) {
    this.umpModalDisplayCarousel = displayCarousel;
    this.umpModalDisplayContentInfo = displayContentInfo;
    this.umpModalPlayerSize = size;
    this.umpModalName = name;
    this.umpDisplayContentInfo = displayContentInfo;
    this.umpIsLoaded = false;

    this.HtmlCarousel = null;
    this.LoadCarousel();

    AddHandler(window, "load", CreateDelegate(this, this.UmpInitModalPlayer));
}

ModalUniversalMediaPlayer.prototype = new UniversalMediaPlayer();



//*********************** Modal Universal Media Player Methods ***************************
ModalUniversalMediaPlayer.prototype.UmpInitModalPlayer = function() {
    this.OnNewMedia = function() { this.ShowModalUmp(); }
};

ModalUniversalMediaPlayer.prototype.ShowModalUmp = function() {
    this.umpModalDisplayCarousel = this.m_HasRelatedMedia;
    var height = this.CalculatePlayerHeightWithHtmlCarousel(this.umpModalDisplayCarousel, this.umpModalDisplayContentInfo, this.umpModalPlayerSize);

    var windowHeight = 0;
    if (typeof (window.innerWidth) == 'number') {
        windowHeight = window.innerHeight;
    } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
        windowHeight = document.documentElement.clientHeight;
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
        windowHeight = document.body.clientHeight;
    }

    var offset = (this.m_HasRelatedMedia) ? 100 : 0;
    document.getElementById('mod-ump-outer-container-modal').style.top = document.documentElement.scrollTop + ((windowHeight - height)) + offset + 'px';
    document.getElementById('mod-ump-container-modal').style.height = height + 'px';
    document.getElementById('mod-ump-container-modal').style.width = UmpHtmlCarouselSizeDimensions[this.umpModalPlayerSize].Width + 'px';
    document.getElementById('mod-ump-outer-container-modal').className = UmpModalDisplayClass[this.umpModalPlayerSize];

    document.getElementById('mod-ump-overlay-modal').style.display = "block";
    document.getElementById('mod-ump-outer-container-modal').style.display = "block";
};

ModalUniversalMediaPlayer.prototype.HideModalUmp = function() {
    if (this.m_CurrentAssetPlayer != UmpComponentName.IMAGE_VIEWER) {
        this.Pause();
    }

    this.m_Ump.setComponentProperty(this.m_CurrentAssetPlayer, UmpKaProperty.MEDIA_URL, '');

    document.getElementById('mod-ump-overlay-modal').style.display = "none";
    document.getElementById('mod-ump-outer-container-modal').className = 'mod-ump-container-hidded-modal';
};

ModalUniversalMediaPlayer.prototype.ToggleModalUmpCarouselControls = function() {
    var controlContainer = document.getElementById('mod-ump-carousel-button-container-modal');
    controlContainer.style.display = controlContainer.currentStyle.display == 'block' ? 'none' : 'block';
};

ModalUniversalMediaPlayer.prototype.UmpUpdateEmbedCode = function() {
    var mediaURL = this.GetProperty(UmpComponentName.CAROUSEL, UmpKaProperty.ENCLOSURE, true);
    setTimeout(CreateDelegate(this, function() { this.SetEmbedCode(mediaURL, this.m_DefaultPageURL) }), 200);
};

ModalUniversalMediaPlayer.prototype.LoadCarousel = function() {
    var umpCarouselInfoContainer = new CarouselInfoDisplay(document.getElementById('mod-ump-carousel-item-data'),
                                                           document.getElementById('mod-ump-carousel-item-title'),
                                                           document.getElementById('mod-ump-carousel-item-description'),
                                                           document.getElementById('mod-ump-carousel-item-cta'));

    var umpCarouselHeader = new CarouselHeader('RELATED MEDIA', document.getElementById('mod-ump-carousel-realted-media-header'));

    var umpCarouselPreviewPane = new CarouselPreviewPane(document.getElementById('mod-ump-carousel-preview'), document.getElementById('mod-ump-carousel-preview-play-image'));

    var umpCarouselNavigationControl = new CarouselNavigationControl(new CarouselNavButton(document.getElementById('mod-ump-carousel-next-button'), UniversalMediaPlayerCarouselDirection.FORWARD),
                                                                 new CarouselNavButton(document.getElementById('mod-ump-carousel-previous-button'), UniversalMediaPlayerCarouselDirection.REVERSE));


    this.HtmlCarousel = new Carousel(document.getElementById('mod-ump-carousel-container'),
                                   document.getElementById('mod-ump-carousel-scroll-container'),
                                   document.getElementById('mod-ump-carousel-view-port'),
                                   umpCarouselNavigationControl,
                                   150, 10, 155,
                                   UmpHtmlCarouselItemCount[this.umpModalPlayerSize],
                                   umpCarouselInfoContainer,
                                   umpCarouselPreviewPane,
                                   umpCarouselHeader);

    if (!this.umpModalDisplayCarousel) {
        this.HtmlCarousel.m_Container.style.display = 'none';
        this.HtmlCarousel.m_Header.Container.style.display = 'none';
    }

    if (!this.umpModalDisplayContentInfo) {
        this.HtmlCarousel.m_InfoDisplay.Container.style.display = 'none';
    }

    this.HtmlCarousel.m_InfoDisplay.Container.style.top = UmpHtmlCarouselInfoDisplayTop[this.umpModalPlayerSize] + 'px';
    this.HtmlCarousel.m_Container.style.top = UmpHtmlCarouselContainerPosition[this.umpModalPlayerSize].Top + 'px';
    this.HtmlCarousel.m_Container.style.marginLeft = UmpHtmlCarouselContainerPosition[this.umpModalPlayerSize].Left + 'px';
    this.HtmlCarousel.m_Header.Container.style.top = UmpHtmlCarouselHeaderContainerTop[this.umpModalPlayerSize] + 'px';

    this.HtmlCarousel.m_PreviewPane.Container.style.width = UmpHtmlCarouselPreviewPaneSizeDimensions[this.umpModalPlayerSize].Width + 'px';
    this.HtmlCarousel.m_PreviewPane.Container.style.height = UmpHtmlCarouselPreviewPaneSizeDimensions[this.umpModalPlayerSize].Height + 'px';
    this.HtmlCarousel.m_PreviewPane.Anchor.style.width = UmpHtmlCarouselPreviewPaneSizeDimensions[this.umpModalPlayerSize].Width + 'px';
    this.HtmlCarousel.m_PreviewPane.Anchor.style.height = UmpHtmlCarouselPreviewPaneSizeDimensions[this.umpModalPlayerSize].Height + 'px';
}


//*********************** Modal Universal Media Player Flash/JS Interop Callbacks ***************************
ModalUniversalMediaPlayer.prototype.UmpModalClickCallBack = function(clickedSWF, clickedComponent) {
    this.OnPlayerClick(clickedSWF, clickedComponent);
};

ModalUniversalMediaPlayer.prototype.UmpModalLoadCallBack = function(loadedSWF) {
    this.OnPlayerLoad(loadedSWF);
    this.Initialize(UmpObjectId.MODAL);

    document.getElementById('mod-ump-outer-container-modal').className = 'mod-ump-container-hidded-modal';
    AddHandler(document.getElementById('mod-ump-top-right-corner'), "click", CreateDelegate(this, this.HideModalUmp));
    
    this.DisplayCarousel(UmpComponentDisplayState.OFF);
    this.DisplayContentInfo(UmpComponentDisplayState.OFF);

    this.HtmlCarousel.PlayerParent = this;
    this.HtmlCarousel.PlayerType = UniversalMediaPlayerCarouselPlayerType.Modal;

    this.RegisterElements(UmpSubscriber.MODAL);
};

ModalUniversalMediaPlayer.prototype.UmpModalEventCallBack = function(componentName, event) {
    this.OnPlayerEvent(componentName, event);
};


//*********************** Modal Universal Media Player Event Handlers ***************************
//ModalUniversalMediaPlayer.prototype.UmpCarouselMediaChangeEventHandler = function() {
//    this.FireEvent(UmpEvent.MEDIA_CHANGE);
//};

ModalUniversalMediaPlayer.prototype.UmpMediaEndEventHandler = function() {
    this.FireEvent(UmpEvent.MEDIA_END);
};

ModalUniversalMediaPlayer.prototype.UmpMediaPercentCompleteEventHandler = function() {
    this.FireEvent(UmpEvent.MEDIA_PERCENT_COMPLETE);
};

ModalUniversalMediaPlayer.prototype.SubscriberClickHandler = function(e) {
    e = e || window.event;

    var element = e.srcElement || e.target;
    element = this.FindTopNode(element, 'A');

    setTimeout(CreateDelegate(this, function() { this.LoadAsset(this.GetElementInfo(element)); }), 500);
};

ModalUniversalMediaPlayer.prototype.LoadAsset = function(asset) {
    this.m_HasRelatedMedia = (asset.RelatedMedia != '' && asset.RelatedMedia != undefined && asset.RelatedMedia != null) ? true : false;

    this.HtmlCarousel.LaunchAssetInUMP(asset);

    if (asset.RelatedMedia != '' && asset.RelatedMedia != undefined && asset.RelatedMedia != null) {
        this.HtmlCarousel.PopulateCarousel(asset.RelatedMedia);
    }
    else {
        this.HtmlCarousel.Clear();
    }
}



