src/js/main.js
author veltr
Mon, 14 May 2012 11:57:05 +0200
changeset 901 12b2cd7e9159
parent 842 4ae2247a59f4
permissions -rw-r--r--
Compatibility for tracemanager

/* main file */
// Why is it called main ? It only loads the libs !

if ( window.IriSP === undefined && window.__IriSP === undefined ) { 
  /**
    @class
    the object under which everything goes.        
  */
	IriSP = {}; 
  
  /** Alias to IriSP for backward compatibility */
	__IriSP = IriSP;
}

/* underscore comes bundled with the player and we need 
   it ASAP, so load it that way
*/

IriSP._ = window._.noConflict();
IriSP.underscore = IriSP._;

IriSP.getLib = function(lib) {
    return (
        IriSP.libFiles.useCdn && typeof IriSP.libFiles.cdn[lib] == "string"
        ? IriSP.libFiles.cdn[lib]
        : (
            typeof IriSP.libFiles.locations[lib] == "string"
            ? IriSP.libFiles.locations[lib]
            : (
                typeof IriSP.libFiles.inDefaultDir[lib] == "string"
                ? IriSP.libFiles.defaultDir + IriSP.libFiles.inDefaultDir[lib]
                : null
            )
        )
    )
}

IriSP._cssCache = [];

IriSP.loadCss = function(_cssFile) {
    if (typeof _cssFile === "string" && _cssFile && IriSP._(IriSP._cssCache).indexOf(_cssFile) === -1) {
        IriSP.jQuery("<link>", {
            rel : "stylesheet",
            type : "text/css",
            href : _cssFile
        }).appendTo('head');
        IriSP._cssCache.push(_cssFile);
    }
}

IriSP.loadLibs = function( config, metadata_url, callback ) {
    var $L = $LAB.script(IriSP.getLib("jQuery")).script(IriSP.getLib("swfObject")).wait()
                .script(IriSP.getLib("jQueryUI"));
                                   
    if (config.player.type === "jwplayer" || config.player.type === "allocine") {
      // load our popcorn.js lookalike
      $L.script(IriSP.getLib("jwplayer"));
    } else {
      // load the real popcorn
      $L.script(IriSP.getLib("popcorn")).script(IriSP.getLib("popcorn.code"));
      if (config.player.type === "youtube") {
        $L.script(IriSP.getLib("popcorn.youtube"));
      } 
      if (config.player.type === "vimeo")
        $L.script(IriSP.getLib("popcorn.vimeo"));
      
      /* do nothing for html5 */
    }       
    
    /* widget specific requirements */
    for (var idx in config.gui.widgets) {
      if (config.gui.widgets[idx].type === "PolemicWidget" ||
          config.gui.widgets[idx].type === "StackGraphWidget" ||
          config.gui.widgets[idx].type === "SparklineWidget") {        
        $L.script(IriSP.getLib("raphael"));
      }
    }
    
    // same for modules
    /*
    for (var idx in config.modules) {
      if (config.modules[idx].type === "PolemicWidget")
        $L.script(IriSP.getLib("raphaelJs"));
    }
    */
    $L.wait(function() {
        if (typeof IriSP.jQuery === "undefined" && typeof window.jQuery !== "undefined") {
            IriSP.jQuery = window.jQuery.noConflict();
        }
        IriSP.loadCss(IriSP.getLib("cssjQueryUI"));
        IriSP.loadCss(config.gui.css);
          
      IriSP.setupDataLoader();
      IriSP.__dataloader.get(metadata_url, 
          function(data) {
            /* save the data so that we could re-use it to
               configure the video
            */
            IriSP.__jsonMetadata = data;
            callback.call(window) });
    });
};