﻿/*
    Video Player Frame work v0.1
    Class Type: Singleton

*/
//**************************
//  CONSTRUCTOR
//**************************
function Framework(control, rootElement) {

    //******************************
    //  PROPERTIES
    //******************************
    
    var _control = control;
    var _rootElement = rootElement;
    var _scope = this;
    
    //XAML COMPONENET REFERENCE
    var _oXamlComponents = new Object();
    
    
    //URL FOR VIDEO REFERENCE
    var _sURL = new String();
    
    
    //CLASS REFERENCE
    var _elements = new Elements(_control, _rootElement);
    var _video = new Video(_control, _rootElement);
    var _Nav = new Nav(_control, _elements);
    var _NavRollOver = new NavRollover(_control, _elements);
    
    
    
  
    //******************************
    //  GETTER / SETTERS
    //******************************
    this.addComponent = function(oXamlComponents) {_oXamlComponents = oXamlComponents;};
    this.component = function() {return _oXamlComponents;};
    
    //URL REFERENCE
    this.addURL = function(sURL) {_sURL = sURL;};
    this.url = function() {return _sURL;};
    
    
    //******************************
    //  PRIVATE
    //******************************
    
    function initiateComponents() {
        _elements.addItem("media_player"); 
        _elements.addItem("fullSceen_btn"); 
        _elements.addItem("media_container"); 
        _elements.addItem("media_nav"); 
        _elements.addItem("playPause_btn");
        _elements.addItem("volume_btn");
        _elements.addItem("progress_bar");
        
        //IMAGE
        _elements.addItem("playBtnImage");
        _elements.addItem("pauseBtnImage");
        _elements.addItem("volumeDown");
        _elements.addItem("volumeUp");
        _elements.addItem("fullscreenImage");
        _elements.addItem("defaultScreenImage");
        _elements.addItem("arrow");
        
        
        //NAV ELEMENTS
        
        //BKGD NAV BAR
        _elements.addItem("defaultNavBkgd");
        _elements.addItem("fullScreenNavBkgd");        
        
        //PROGRESS BAR BASE
        _elements.addItem("scrub_container");
        _elements.addItem("Rectangle_base");
        _elements.addItem("Rectangle_shadow");
        
        //PROGRESS BAR
        _elements.addItem("Border1");
        _elements.addItem("Border2");
        
        //DROPDOWN BAR
        _elements.addItem("DropDown_container");
        
        //ANIMATION
         _elements.addItem("navigation_in");
         _elements.addItem("navigation_out");
         
         
         //SPEAKER OPTION BUTTONS
         _elements.addItem("SpeakerSelection_container");


   }
    
    
    //***************************************
    //  VIDEO CLASS
    //***************************************
    function initiateVideo() {
        //DECLARE ELEMENTS
        var oMedia = _elements.getItem("media_player");
        var oMediaContainer = _elements.getItem("media_container");
        var oNavContainer =   _elements.getItem("media_nav");

        //NAV PROPERTIES
        var oNavProps = new Object();

        //PROGRESS BAR ELEMENTS
        oNavProps.progressBase = _elements.getItem("Rectangle_base");
        oNavProps.progressShadow = _elements.getItem("Rectangle_shadow");
        oNavProps.border1 =  _elements.getItem("Border1");
        oNavProps.border2 =  _elements.getItem("Border2");
         
        //NAV ELEMENTS
        oNavProps.fullScreen = _elements.getItem("fullSceen_btn");
        oNavProps.volume = _elements.getItem("volume_btn");
        oNavProps.fullScreenImage = _elements.getItem("fullscreenImage");
        oNavProps.defaultScreenImage =  _elements.getItem("defaultScreenImage");        
        oNavProps.progressContainer = _elements.getItem("scrub_container");
        oNavProps.dropDown_container = _elements.getItem("DropDown_container");
        oNavProps.defaultNavBkgd = _elements.getItem("defaultNavBkgd");
        oNavProps.fullScreenNavBkgd = _elements.getItem("fullScreenNavBkgd");
        oNavProps.arrowImage = _elements.getItem("arrow");
        oNavProps.playPauseBtn = _elements.getItem("playPause_btn");
        oNavProps.speakerNav = _elements.getItem("SpeakerSelection_container");
       
        //NAV PROPERTIES
        _video.addNavProperties(oNavProps);
        
        //ADD ELEMENTS TO INSTANCE
        _video.addIsProgressBar(true);
        _video.addVideoElement(oMedia);
        _video.addVideoHolderElement(oMediaContainer);
        _video.addNavHolderElement(oNavContainer);
     
        

        
        //APPLY PROPERTIES TO THE INITIATE STATE OF VIDEO
        var oProperties = new Object();
        oProperties.canvasTop = 0;
        oProperties.canvasLeft = 0;
        oProperties.width = 499
        oProperties.height = 270;
        _video.addProperties(oProperties);
        
        //INITIATES
        _video.initiate();
    }
    
    
  
  
  
    //*************************************************
    //  UI NAV EVENTS CLASSS
    //*************************************************
    function initiateUI() {
    
        //GENERAL PROPERTIES
        var oScope = this;
        
        var oNavElements = new Object();
        oNavElements.playPause = _elements.getItem("playPause_btn");
        oNavElements.fullScreen = _elements.getItem("fullSceen_btn");
        oNavElements.volume = _elements.getItem("volume_btn");
        oNavElements.progressBar = _elements.getItem("progress_bar");
        oNavElements.progressBase = _elements.getItem("Rectangle_base");        
        oNavElements.fullScreenImage = _elements.getItem("fullscreenImage");
        oNavElements.defaultScreenImage =  _elements.getItem("defaultScreenImage"); 
        
        //IMAGE
        oNavElements.playBtnImage = _elements.getItem("playBtnImage");
        oNavElements.pauseBtnImage = _elements.getItem("pauseBtnImage");
        oNavElements.volumeUpImage =  _elements.getItem("volumeUp");
        oNavElements.volumeDownImage =  _elements.getItem("volumeDown");
    
        //ADD NAV ELEMENTS
        _Nav.addIsProgressBar(true);
        _Nav.addNavElements(oNavElements);
        _Nav.addVideoClass(_video);
        _Nav.intitate();
      
    }
    
    //************************************************
    //  NAV ROLLOVER CONTROL
    //************************************************
    
    function rollOverControl() {
        var oMediaContainer =  _elements.getItem("media_container"); 
        var oNavAniIn = _elements.getItem("navigation_in");
        var oNavAniOut = _elements.getItem("navigation_out");
    
        //PROPERTIES
        _NavRollOver.addNavIn(oNavAniIn);
        _NavRollOver.addNavOut(oNavAniOut);
        _NavRollOver.addNavRollOver(oMediaContainer);
        _NavRollOver.initiate();
    }
    
   
    
    
    //******************************
    //  PUBLIC
    //******************************
    
    this.initiate = function() {
        initiateComponents();
        initiateVideo();
        initiateUI();
        rollOverControl();
      //  initiateSpeakerOption();
    }
   
    
    this.showVideo = function(sURL) {
         //var sURL = "video/PDC2008Sept22_2MB_ch9.wmv";
        _video.runVideo(sURL);
    }
    
    this.pauseVideo = function() {
        _video.stopVideo();
    }
}