/**
 * the VideoPlayer class
 * replaces link-element with JWplayer object, if required Flash version is present
 *
 * @author Klaas Dieleman, <klaas[AT]efocus.nl>
 * @author Lee Boonstra <lee.boonstra@efocus.nl>
 * @since 24 mar 2010
 * @version 1.0
 * @copyright eFocus
 *
 * @uses jQuery 1.4.2, <http://www.jquery.com>
 * @uses SWFobject 1.4, <http://code.google.com/p/swfobject>
 * @uses JWplayer 4.4, <http://www.longtailvideo.com>
 *
 * @param Element a-tag with url to movie to be replaced by JWplayer
 * @param Object options (optional)
 * @param String unique id for <object>-element (optional but recommended)
 *
 * @todo streaming options
 */
function VideoPlayer(elLink, options, uid){
    
    if(typeof(elLink) == 'object') {
        this.elLink = elLink;
        this.uid = uid || 0;
        
        var opt = options || {};
        
        this.options = {
            'width'             : 320,
            'height'            : 200,
            'autoplay'          : true,
            'playerurl'         : '',
            'skinurl'           : '',
            'controlbarheight'  : 20,
            'videofile'         : ''
        };
        
        for(i in this.options) {
            if(opt[i] != undefined) {
                this.options[i] = opt[i];
            }
        }
        
        this.initialize();
    }
    
};

VideoPlayer.prototype = {
    /**
     * intializes player with requested options and inserts it
     */
    initialize: function() {

        this.parseOptions();
        this.createPlaceholder();
        this.insertPlayer();
            
    },
    
    /**
     * reads specified options in the 'rel'-attribute and applies them, overwriting js-requested options
     */
    parseOptions: function() {
        
        var arrGivenOptions = [];
        var arrParsedOptions = [];
        
        arrGivenOptions = String(this.elLink.attr('rel')).replace(/ /g, '').split(';');

        for(var i=0; i<=arrGivenOptions.length; i++) {
            if(arrGivenOptions[i]){
                var strOptionName = arrGivenOptions[i].split('=')[0];
                var strOptionValue = arrGivenOptions[i].split('=')[1];
                arrParsedOptions[strOptionName] = strOptionValue;   
            }
        }   

        
        for(i in this.options) {
            if(arrParsedOptions[i] != undefined) {
                
                var blnOptionFormatInvalid = true;
                
                switch(i) {
                    case 'width':
                        blnOptionFormatInvalid = isNaN(arrParsedOptions[i]);
                        arrParsedOptions[i]    = parseInt(arrParsedOptions[i]);
                        break;
                    case 'height':
                        blnOptionFormatInvalid = isNaN(arrParsedOptions[i]);
                        arrParsedOptions[i]    = parseInt(arrParsedOptions[i]);
                        break;
                    case 'autoplay':
                        if(arrParsedOptions[i] == 'true' || arrParsedOptions[i] == 'false') blnOptionFormatInvalid = false;
                        break;
                    default:
                        this.options[i] = this.options[i];
                }

                if(blnOptionFormatInvalid == false) {
                    this.options[i] = arrParsedOptions[i];
                }

            }
        }
        
        this.options.videofile = jQuery(this.elLink).attr('href');
        
    },

    /**
     * creates placeholder and replaces link element with it
     */
    createPlaceholder: function() {
    
        this.container = jQuery('<span></span>');
        this.container.attr('id', ('videoplayer_' + this.uid));
        this.elLink.after(this.container);
        this.elLink.remove();
        
    },
     
    /**
     * embeds JWplayer on placeholder
     */
    insertPlayer: function() {
        var strIdPlayer = this.container.attr("id");
        var so = new SWFObject('/_swf/playerlicensed_tcm177-524312.swf',"pl_" + strIdPlayer,'430','32','9');
        so.addParam('allowscriptaccess','always');
        so.addVariable('file', this.options.videofile);
        so.addVariable('backcolor','000000');
        so.addVariable('frontcolor','FFFFFF');
        so.addVariable('lightcolor','FF6600');
        so.addVariable('screencolor','FF6600'); 
        so.addVariable('stretching','fill');
        so.addVariable('wmode','transparent');
        so.addVariable('skin','/_swf/modieus_tcm177-535958.swf'); 
        //so.addVariable('autostart','true');
        //so.addVariable('controlbar','none');
        so.write(strIdPlayer);
    }
} 
