﻿var Movies = new MovieDiction();

function Media(m) {
    var movie = m;
    
    var OnStop;
    var OnPause;
    var OnPlay;
    var OnFinish;
    var OnStartBuffer;
    var OnProgress;
    var OnSeek;
    var OnUpdate;

    this.SetSkin = function(url) {
        movie.ExternalSetSkin(url);
    };

    this.LoadMedia = function(url, urlDest) {
        movie.ExternalLoadMedia(url, urlDest);
    };

    this.PlayMedia = function() {
        movie.ExternalPlayMedia();
    };

    this.PauseMedia = function() {
        movie.ExternalPauseMedia();
    };

    this.StopMedia = function() {
        movie.ExternalStopMedia();
    };

    this.Mute = function() {
        movie.ExternalMute();
    };

    this.GetVolume = function GetVolume() {
        return movie.ExternaGetVolume();
    };

    this.SetVolume = function(volume) {
        movie.ExternalSetVolume(volume);
    };

    this.GetPosition = function() {
        return movie.ExternalGetPosition();
    };

    this.SetPosition = function(position) {
        movie.ExternalSetPosition(position);
    };
}

var MediaController = new function() {
    this.FlashMedia = function(movieName) {

        var m = Movies.Lookup(movieName);

        if (m == null) {
        	var movie = window[movieName];
        	
               if(movie == null)
            	movie = document.getElementById(movieName);
            	
            m = new Media(movie);
            Movies[movieName] = m;
        }
        return Movies[movieName];
    };
}

function MovieDiction() {
    this.Add = mAdd;
    this.Lookup = mLookup;
    this.Delete = mDelete;

    function mDelete(strKeyName) {
        for (c = 0; c < mDelete.arguments.length; c++) {
            this[mDelete.arguments[c]] = null;
        }
    }

    function mAdd() {
        for (c = 0; c < mAdd.arguments.length; c += 2) {
            this[mAdd.arguments[c]] = mAdd.arguments[c + 1];
        }
    }

    function mLookup(strKeyName) {
        return (this[strKeyName]);
    }
}




