/***************************************************************************************************
 * A custom object created to centralize the functionalities of NML 2.0 media players. 
 * It uses prototype.js 1.6.0.3 (http://www.prototypejs.org)
 * and cookiejar.js 0.5 (http://www.lalit.org/lab/jsoncookies)
 * 
 * Author : Roaniver Madrid
 * Version: 1.0
 * Created: February 17, 2009 
 *****************************
 * Version: 1.0.1
 * Modified: June 18, 2009 
 * Change(s):   - removed the requirement for Silverlight.js.
 *              - make Flash as the default player. 
 *****************************
 * Version: 1.1.0
 * Modified: February 01, 2010 
 * Change(s):   - removed the windows media player option.
 *              - make the Flash HTTP player as the default player. 
 ***************************************************************************************************/

var NMLPlayer = Class.create();

NMLPlayer.prototype = {
    RequiredProtoTypeVersion: '1.6.0'
    , CookieName: 'MPlayer'
    , JSONQueryString: null
    , initialize: function(p_QS) {
        //borrowed from script.aculo.us method.
        function convertVersionString(versionString){
            var r = versionString.split('.');
            return parseInt(r[0])*100000 + parseInt(r[1])*1000 + parseInt(r[2]);
        }
        
        var m_ErrorMessage = '';
        
        //borrowed from script.aculo.us required framework check algorithm.
        if((typeof Prototype=='undefined') || 
            (convertVersionString(Prototype.Version) < convertVersionString(this.RequiredProtoTypeVersion))) {
            m_ErrorMessage = 'NMLPlayer object requires the Prototype JavaScript framework version >= ' + this.RequiredProtoTypeVersion;
        } else if (typeof CookieJar=='undefined') {
            m_ErrorMessage = 'NMLPlayer object requires the CookieJar class which can be found at http://www.lalit.org/lab/jsoncookies';
        }
        
        if (m_ErrorMessage.length > 0) {
            alert(m_ErrorMessage); 
            return false;   
        } else {
            if (p_QS) {
                if (Object.toJSON(this.JSONQueryString).isJSON()) {
                    this.JSONQueryString = p_QS
                }
            }
            return true;
        }
    }
    , Cookie: function() {
        return new CookieJar({
            expires:2419200,   // in seconds (current value is equivalent to 28 days)
            path: '/'
        });
    }
    , getPlayerLinks: function() {
        var m_Hash = $H();
        
        m_Hash.set('fmp_http','/mediaplayer/flash/http-fplayer.asp');
        m_Hash.set('fmp','/mediaplayer/flash/fplayer.asp');
        
        /*
        //removed from version 1.1.0. commented here in case there's a need to put it back.
        m_Hash.set('slp','/mediaplayer/sl/slplayer.asp');
        m_Hash.set('wmp','/mediaplayer/wm/wmplayer.asp');
        */
        
        return m_Hash;
    }
    , setDefaultPlayer: function(p_PlayerKey) {
        var m_Cookie = this.Cookie();
        var m_hashPlayers = this.getPlayerLinks();
        
        //force the windows media player key to become an fmp key. this changed is part of version 1.1.0.
        if ((p_PlayerKey=='slp')||(p_PlayerKey=='wmp')) {
            p_PlayerKey = 'fmp_http';
        }
        
        return m_Cookie.put(this.CookieName,{Type:p_PlayerKey,Url:m_hashPlayers.get(p_PlayerKey)});
    }
    , getDefaultPlayer: function() {
        var m_Cookie = this.Cookie();
        var m_hashPlayers = this.getPlayerLinks();
        var m_jsonDefaultPlayer = m_Cookie.get(this.CookieName);
        
        if (m_jsonDefaultPlayer==null) {
            //let's offer Flash Media Player as the default player.
            m_jsonDefaultPlayer = {Type:'fmp_http',Url:m_hashPlayers.get('fmp_http')};
            m_Cookie.put(this.CookieName,m_jsonDefaultPlayer);
        }
        
        if (this.JSONQueryString!=null) {
            m_jsonDefaultPlayer.Url = m_jsonDefaultPlayer.Url + '?' + Object.toQueryString(this.JSONQueryString);
        }
        
        return m_jsonDefaultPlayer;
    }
};

