﻿/*
    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);
  
    //******************************
    //  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("duration_txt");
        _elements.addItem("volume_btn");
        _elements.addItem("progress_bar");
        _elements.addItem("restart_btn");
        
        //IMAGE
        _elements.addItem("playBtnImage");
        _elements.addItem("pauseBtnImage");
        _elements.addItem("volumeDown");
        _elements.addItem("volumeUp");
        _elements.addItem("fullscreenImage");
        _elements.addItem("defaultScreenImage");
        
        //NAV ELEMENTS
        _elements.addItem("bground_nav");
        
        //PROGRESS BAR BASE
        _elements.addItem("scrub_container");
        _elements.addItem("Rectangle_base");
        _elements.addItem("Rectangle_shadow");
        
        //PROGRESS BAR
        _elements.addItem("Border1");
        _elements.addItem("Border2");
        
        //DIVIDERS
        _elements.addItem("Path1");
        _elements.addItem("Path2");
        _elements.addItem("Path3");
        _elements.addItem("Path4");
   }
    
    
    //***************************************
    //  VIDEO CLASS
    //***************************************
    function initiateVideo() {
        //DECLARE ELEMENTS
        var oMedia = _elements.getItem("media_player");
        var oMediaContainer = _elements.getItem("media_container");
        var oNavContainer =   _elements.getItem("media_nav");
       
       //PATH ELEMENTS
       var aPaths = new Array();
       aPaths[0]=  _elements.getItem("Path1");
       aPaths[1]=  _elements.getItem("Path2");
       aPaths[2]=  _elements.getItem("Path3");
       aPaths[3]=  _elements.getItem("Path4");
       
        //NAV PROPERTIES
        var oNavProps = new Object();
        oNavProps.background = _elements.getItem("bground_nav");
        oNavProps.paths = aPaths;
        
        //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.duration = _elements.getItem("duration_txt");
        oNavProps.volume = _elements.getItem("volume_btn");
        
        oNavProps.progressContainer = _elements.getItem("scrub_container");
      
       
        //NAV PROPERTIES
        _video.addNavProperties(oNavProps);
        
        //ADD ELEMENTS TO INSTANCE
        _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 = 245
        oProperties.height = 156;
        _video.addProperties(oProperties);
        
        //INITIATES
        _video.initiate();
    }
    
    
  
  
  
    //*************************************************
    //  UI 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.duration = _elements.getItem("duration_txt");
        oNavElements.volume = _elements.getItem("volume_btn");
        oNavElements.progressBar = _elements.getItem("progress_bar");
        oNavElements.progressBase = _elements.getItem("Rectangle_base");
        oNavElements.restart = _elements.getItem("restart_btn");
        
        //IMAGE
        oNavElements.playBtnImage = _elements.getItem("playBtnImage");
        oNavElements.pauseBtnImage = _elements.getItem("pauseBtnImage");
        oNavElements.volumeUpImage =  _elements.getItem("volumeUp");
        oNavElements.volumeDownImage =  _elements.getItem("volumeDown");
        oNavElements.fullScreenImage = _elements.getItem("fullscreenImage");
        oNavElements.defaultScreenImage =  _elements.getItem("defaultScreenImage");
    
        //ADD NAV ELEMENTS
        _Nav.addNavElements(oNavElements);
        _Nav.addVideoClass(_video);
        _Nav.intitate();
      
    }
    
    
    //******************************
    //  PUBLIC
    //******************************
    
    this.initiate = function() {
        initiateComponents();
        initiateVideo();
        initiateUI();
    }
    
    this.showVideo = function(sURL) {
         //var sURL = "video/PDC2008Sept22_2MB_ch9.wmv";
        _video.runVideo(sURL);
    }
	
	this.stopVideo = function() {
		_video.stopVideo();
	}
}