/**
 * @author kfrank
 */
EXPOTV.EarnMoney.Overview = new function()
{
    var self = this;
    this.playerIdStr = "earnMoneyOverviewVideoPlayer";
    this.playerEventsTriggerFunctionStr = "EXPOTV.VideoPlayerManager.broadcastEventsHandler";
    this.videoPlayer = null;
    this.featuredVideosElementArray = [];

    this.broadcastEventsHandler = function(oBroadcastEvents)
    {
        var broadcastEventsObj = oBroadcastEvents;
        var eventTypeStr = broadcastEventsObj.eventType;
        //is this our player or another one
        if (EXPOTV.VideoPlayerManager.players[broadcastEventsObj.playerId] === self.videoPlayer)
        {
            if(eventTypeStr === "onready" || eventTypeStr === "onpause")
            {
                self.videoPlayer.isReady = true;
                self.setLinkClass("ready");
            }
        }
    };

    this.setLinkClass = function(sState)
    {
        for(var i = 0; i < self.featuredVideosElementArray.length; i++)
        {
           if (sState === "wait")
           {
               YAHOO.util.Dom.addClass(self.featuredVideosElementArray[i], "wait");
           }
           else if(sState === "ready")
           {
               YAHOO.util.Dom.removeClass(self.featuredVideosElementArray[i], "wait");
           }
        }
    };

    this.loadVideo = function(oEvent, oVideo)
    {
        YAHOO.util.Event.preventDefault(oEvent);
        if (self.videoPlayer.isReady && !YAHOO.util.Dom.hasClass(this, "nowPlaying"))
        {
            self.videoPlayer.isReady = false;
            for(var i = 0; i < self.featuredVideosElementArray.length; i++)
            {
                YAHOO.util.Dom.removeClass(self.featuredVideosElementArray[i], "nowPlaying");
            }
            YAHOO.util.Dom.addClass(this, "nowPlaying");
            self.setLinkClass("wait");
            self.videoPlayer.loadVideo(oVideo);
        }
        else
        {
            //player is not ready so we cancel click
            return false;
        }
    }

    this.onEarnMoneyInit = function(sEvent, oPlayerData)
    {
        var playerDataObj =  oPlayerData;
        self.featuredVideosElementArray = YAHOO.util.Dom.get("featuredVideosModule").getElementsByTagName("ul")[0].getElementsByTagName("a");
        for(var i = 0; i < self.featuredVideosObjArray.length; i++)
        {
            YAHOO.util.Event.on(self.featuredVideosElementArray[i], "click", self.loadVideo, self.featuredVideosObjArray[i]);
            YAHOO.util.Dom.setStyle(self.featuredVideosElementArray[i], "visibility", "visible");
        }

        var videoInfoObj = self.featuredVideosObjArray[0];
        self.videoPlayer = EXPOTV.VideoPlayerManager.instantiateVideoPlayer("http://images.expotv.com/expotvplayer/videoPlayer.swf", self.playerIdStr, "328", "320", "9", "#000000");

        var configParamDefaultsObj = {
                                    "allowFullScreen": "true",
                         	        "scale": "noscale",
                            	    "salign": "TL",
                            	    "wmode": "false",
                                    "allowScriptAccess": "always"
                                 };

        var flashVarDefaultsObj = {
                                    "triggerFunctionName": self.playerEventsTriggerFunctionStr,
                                    "playerId": self.playerIdStr,
                                    "video_url": videoInfoObj.video_url,
                                    "video_id": videoInfoObj.video_id,
                                    "still_image_url": videoInfoObj.still_image_url,
                                    "video_title": videoInfoObj.video_title,
                                    "beacon_post_url": "http://stats.expotv.com/ping/log.php",
                                    "beacon_threshold_type": "time",
                                    "beacon_threshold_frequency": "10",
                                    "host": "www.expotv.com",
                                    "partner_id": "5",
                                    "show_controls": "true",
                                    "autoplay": "false"
                               };
        var target = (playerDataObj.target) ? playerDataObj.target : "playerBlock";

        function joinObjects(oDefaults, oOverrides)
        {
            var defaultsObj = oDefaults;
            var overridesObj = oOverrides;
            for(prop in overridesObj)
            {
               defaultsObj[prop] =  overridesObj[prop];
            }
            return defaultsObj;
        }

        self.videoPlayer.configParams(joinObjects(configParamDefaultsObj, playerDataObj.configParamObj));
        self.videoPlayer.setFlashVars(joinObjects(flashVarDefaultsObj, playerDataObj.flashVarObj));
        self.videoPlayer.replaceContent(target);
        //set isReady = false if autoplay = true
        self.videoPlayer.isReady = true;
    }

    EXPOTV.EarnMoney.onInit.subscribe(this.onEarnMoneyInit, this);
    EXPOTV.VideoPlayerManager.onBroadcastEvents.subscribe(this.broadcastEventsHandler);
}