sbin/res/jsdoc/LdtPlayer-release.js
author hamidouk
Fri, 23 Dec 2011 11:38:47 +0100
branchjsdoc
changeset 520 fe008e95a716
permissions -rw-r--r--
added jsdoc support, and a script to generate the docs. Also added sample documentation for the IriSP.widget base class.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
520
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
     1
/* 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
     2
 * 	
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
     3
 *	Copyright 2010 Institut de recherche et d'innovation 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
     4
 *	contributor(s) : Samuel Huron 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
     5
 *	 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
     6
 *	contact@iri.centrepompidou.fr
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
     7
 *	http://www.iri.centrepompidou.fr 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
     8
 *	 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
     9
 *	This software is a computer program whose purpose is to show and add annotations on a video .
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    10
 *	This software is governed by the CeCILL-C license under French law and
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    11
 *	abiding by the rules of distribution of free software. You can  use, 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    12
 *	modify and/ or redistribute the software under the terms of the CeCILL-C
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    13
 *	license as circulated by CEA, CNRS and INRIA at the following URL
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    14
 *	"http://www.cecill.info". 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    15
 *	
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    16
 *	The fact that you are presently reading this means that you have had
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    17
 *	knowledge of the CeCILL-C license and that you accept its terms.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    18
*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    19
/*! LAB.js (LABjs :: Loading And Blocking JavaScript)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    20
    v2.0.3 (c) Kyle Simpson
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    21
    MIT License
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    22
*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    23
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    24
(function(global){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    25
	var _$LAB = global.$LAB,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    26
	
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    27
		// constants for the valid keys of the options object
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    28
		_UseLocalXHR = "UseLocalXHR",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    29
		_AlwaysPreserveOrder = "AlwaysPreserveOrder",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    30
		_AllowDuplicates = "AllowDuplicates",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    31
		_CacheBust = "CacheBust",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    32
		/*!START_DEBUG*/_Debug = "Debug",/*!END_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    33
		_BasePath = "BasePath",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    34
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    35
		// stateless variables used across all $LAB instances
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    36
		root_page = /^[^?#]*\//.exec(location.href)[0],
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    37
		root_domain = /^\w+\:\/\/\/?[^\/]+/.exec(root_page)[0],
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    38
		append_to = document.head || document.getElementsByTagName("head"),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    39
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    40
		// inferences... ick, but still necessary
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    41
		opera_or_gecko = (global.opera && Object.prototype.toString.call(global.opera) == "[object Opera]") || ("MozAppearance" in document.documentElement.style),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    42
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    43
/*!START_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    44
		// console.log() and console.error() wrappers
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    45
		log_msg = function(){}, 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    46
		log_error = log_msg,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    47
/*!END_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    48
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    49
		// feature sniffs (yay!)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    50
		test_script_elem = document.createElement("script"),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    51
		explicit_preloading = typeof test_script_elem.preload == "boolean", // http://wiki.whatwg.org/wiki/Script_Execution_Control#Proposal_1_.28Nicholas_Zakas.29
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    52
		real_preloading = explicit_preloading || (test_script_elem.readyState && test_script_elem.readyState == "uninitialized"), // will a script preload with `src` set before DOM append?
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    53
		script_ordered_async = !real_preloading && test_script_elem.async === true, // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    54
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    55
		// XHR preloading (same-domain) and cache-preloading (remote-domain) are the fallbacks (for some browsers)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    56
		xhr_or_cache_preloading = !real_preloading && !script_ordered_async && !opera_or_gecko
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    57
	;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    58
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    59
/*!START_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    60
	// define console wrapper functions if applicable
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    61
	if (global.console && global.console.log) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    62
		if (!global.console.error) global.console.error = global.console.log;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    63
		log_msg = function(msg) { global.console.log(msg); };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    64
		log_error = function(msg,err) { global.console.error(msg,err); };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    65
	}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    66
/*!END_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    67
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    68
	// test for function
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    69
	function is_func(func) { return Object.prototype.toString.call(func) == "[object Function]"; }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    70
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    71
	// test for array
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    72
	function is_array(arr) { return Object.prototype.toString.call(arr) == "[object Array]"; }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    73
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    74
	// make script URL absolute/canonical
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    75
	function canonical_uri(src,base_path) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    76
		var absolute_regex = /^\w+\:\/\//;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    77
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    78
		// is `src` is protocol-relative (begins with // or ///), prepend protocol
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    79
		if (/^\/\/\/?/.test(src)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    80
			src = location.protocol + src;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    81
		}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    82
		// is `src` page-relative? (not an absolute URL, and not a domain-relative path, beginning with /)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    83
		else if (!absolute_regex.test(src) && src.charAt(0) != "/") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    84
			// prepend `base_path`, if any
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    85
			src = (base_path || "") + src;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    86
		}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    87
		// make sure to return `src` as absolute
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    88
		return absolute_regex.test(src) ? src : ((src.charAt(0) == "/" ? root_domain : root_page) + src);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    89
	}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    90
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    91
	// merge `source` into `target`
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    92
	function merge_objs(source,target) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    93
		for (var k in source) { if (source.hasOwnProperty(k)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    94
			target[k] = source[k]; // TODO: does this need to be recursive for our purposes?
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    95
		}}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    96
		return target;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    97
	}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    98
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
    99
	// does the chain group have any ready-to-execute scripts?
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   100
	function check_chain_group_scripts_ready(chain_group) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   101
		var any_scripts_ready = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   102
		for (var i=0; i<chain_group.scripts.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   103
			if (chain_group.scripts[i].ready && chain_group.scripts[i].exec_trigger) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   104
				any_scripts_ready = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   105
				chain_group.scripts[i].exec_trigger();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   106
				chain_group.scripts[i].exec_trigger = null;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   107
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   108
		}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   109
		return any_scripts_ready;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   110
	}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   111
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   112
	// creates a script load listener
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   113
	function create_script_load_listener(elem,registry_item,flag,onload) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   114
		elem.onload = elem.onreadystatechange = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   115
			if ((elem.readyState && elem.readyState != "complete" && elem.readyState != "loaded") || registry_item[flag]) return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   116
			elem.onload = elem.onreadystatechange = null;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   117
			onload();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   118
		};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   119
	}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   120
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   121
	// script executed handler
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   122
	function script_executed(registry_item) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   123
		registry_item.ready = registry_item.finished = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   124
		for (var i=0; i<registry_item.finished_listeners.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   125
			registry_item.finished_listeners[i]();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   126
		}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   127
		registry_item.ready_listeners = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   128
		registry_item.finished_listeners = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   129
	}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   130
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   131
	// make the request for a scriptha
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   132
	function request_script(chain_opts,script_obj,registry_item,onload,preload_this_script) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   133
		// setTimeout() "yielding" prevents some weird race/crash conditions in older browsers
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   134
		setTimeout(function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   135
			var script, src = script_obj.real_src, xhr;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   136
			
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   137
			// don't proceed until `append_to` is ready to append to
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   138
			if ("item" in append_to) { // check if `append_to` ref is still a live node list
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   139
				if (!append_to[0]) { // `append_to` node not yet ready
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   140
					// try again in a little bit -- note: will re-call the anonymous function in the outer setTimeout, not the parent `request_script()`
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   141
					setTimeout(arguments.callee,25);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   142
					return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   143
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   144
				// reassign from live node list ref to pure node ref -- avoids nasty IE bug where changes to DOM invalidate live node lists
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   145
				append_to = append_to[0];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   146
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   147
			script = document.createElement("script");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   148
			if (script_obj.type) script.type = script_obj.type;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   149
			if (script_obj.charset) script.charset = script_obj.charset;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   150
			
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   151
			// should preloading be used for this script?
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   152
			if (preload_this_script) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   153
				// real script preloading?
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   154
				if (real_preloading) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   155
					/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script preload: "+src);/*!END_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   156
					registry_item.elem = script;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   157
					if (explicit_preloading) { // explicit preloading (aka, Zakas' proposal)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   158
						script.preload = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   159
						script.onpreload = onload;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   160
					}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   161
					else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   162
						script.onreadystatechange = function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   163
							if (script.readyState == "loaded") onload();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   164
						};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   165
					}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   166
					script.src = src;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   167
					// NOTE: no append to DOM yet, appending will happen when ready to execute
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   168
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   169
				// same-domain and XHR allowed? use XHR preloading
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   170
				else if (preload_this_script && src.indexOf(root_domain) == 0 && chain_opts[_UseLocalXHR]) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   171
					xhr = new XMLHttpRequest(); // note: IE never uses XHR (it supports true preloading), so no more need for ActiveXObject fallback for IE <= 7
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   172
					/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script preload (xhr): "+src);/*!END_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   173
					xhr.onreadystatechange = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   174
						if (xhr.readyState == 4) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   175
							xhr.onreadystatechange = function(){}; // fix a memory leak in IE
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   176
							registry_item.text = xhr.responseText + "\n//@ sourceURL=" + src; // http://blog.getfirebug.com/2009/08/11/give-your-eval-a-name-with-sourceurl/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   177
							onload();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   178
						}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   179
					};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   180
					xhr.open("GET",src);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   181
					xhr.send();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   182
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   183
				// as a last resort, use cache-preloading
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   184
				else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   185
					/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script preload (cache): "+src);/*!END_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   186
					script.type = "text/cache-script";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   187
					create_script_load_listener(script,registry_item,"ready",function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   188
						append_to.removeChild(script);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   189
						onload();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   190
					});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   191
					script.src = src;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   192
					append_to.insertBefore(script,append_to.firstChild);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   193
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   194
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   195
			// use async=false for ordered async? parallel-load-serial-execute http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   196
			else if (script_ordered_async) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   197
				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script load (ordered async): "+src);/*!END_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   198
				script.async = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   199
				create_script_load_listener(script,registry_item,"finished",onload);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   200
				script.src = src;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   201
				append_to.insertBefore(script,append_to.firstChild);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   202
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   203
			// otherwise, just a normal script element
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   204
			else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   205
				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script load: "+src);/*!END_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   206
				create_script_load_listener(script,registry_item,"finished",onload);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   207
				script.src = src;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   208
				append_to.insertBefore(script,append_to.firstChild);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   209
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   210
		},0);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   211
	}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   212
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   213
	// create a clean instance of $LAB
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   214
	function create_sandbox() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   215
		var global_defaults = {},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   216
			can_use_preloading = real_preloading || xhr_or_cache_preloading,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   217
			queue = [],
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   218
			registry = {},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   219
			instanceAPI
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   220
		;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   221
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   222
		// global defaults
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   223
		global_defaults[_UseLocalXHR] = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   224
		global_defaults[_AlwaysPreserveOrder] = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   225
		global_defaults[_AllowDuplicates] = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   226
		global_defaults[_CacheBust] = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   227
		/*!START_DEBUG*/global_defaults[_Debug] = false;/*!END_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   228
		global_defaults[_BasePath] = "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   229
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   230
		// execute a script that has been preloaded already
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   231
		function execute_preloaded_script(chain_opts,script_obj,registry_item) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   232
			var script;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   233
			
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   234
			function preload_execute_finished() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   235
				if (script != null) { // make sure this only ever fires once
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   236
					script = null;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   237
					script_executed(registry_item);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   238
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   239
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   240
			
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   241
			if (registry[script_obj.src].finished) return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   242
			if (!chain_opts[_AllowDuplicates]) registry[script_obj.src].finished = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   243
			
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   244
			script = registry_item.elem || document.createElement("script");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   245
			if (script_obj.type) script.type = script_obj.type;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   246
			if (script_obj.charset) script.charset = script_obj.charset;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   247
			create_script_load_listener(script,registry_item,"finished",preload_execute_finished);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   248
			
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   249
			// script elem was real-preloaded
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   250
			if (registry_item.elem) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   251
				registry_item.elem = null;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   252
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   253
			// script was XHR preloaded
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   254
			else if (registry_item.text) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   255
				script.onload = script.onreadystatechange = null;	// script injection doesn't fire these events
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   256
				script.text = registry_item.text;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   257
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   258
			// script was cache-preloaded
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   259
			else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   260
				script.src = script_obj.real_src;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   261
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   262
			append_to.insertBefore(script,append_to.firstChild);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   263
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   264
			// manually fire execution callback for injected scripts, since events don't fire
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   265
			if (registry_item.text) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   266
				preload_execute_finished();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   267
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   268
		}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   269
	
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   270
		// process the script request setup
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   271
		function do_script(chain_opts,script_obj,chain_group,preload_this_script) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   272
			var registry_item,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   273
				registry_items,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   274
				ready_cb = function(){ script_obj.ready_cb(script_obj,function(){ execute_preloaded_script(chain_opts,script_obj,registry_item); }); },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   275
				finished_cb = function(){ script_obj.finished_cb(script_obj,chain_group); }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   276
			;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   277
			
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   278
			script_obj.src = canonical_uri(script_obj.src,chain_opts[_BasePath]);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   279
			script_obj.real_src = script_obj.src + 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   280
				// append cache-bust param to URL?
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   281
				(chain_opts[_CacheBust] ? ((/\?.*$/.test(script_obj.src) ? "&_" : "?_") + ~~(Math.random()*1E9) + "=") : "")
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   282
			;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   283
			
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   284
			if (!registry[script_obj.src]) registry[script_obj.src] = {items:[],finished:false};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   285
			registry_items = registry[script_obj.src].items;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   286
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   287
			// allowing duplicates, or is this the first recorded load of this script?
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   288
			if (chain_opts[_AllowDuplicates] || registry_items.length == 0) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   289
				registry_item = registry_items[registry_items.length] = {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   290
					ready:false,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   291
					finished:false,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   292
					ready_listeners:[ready_cb],
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   293
					finished_listeners:[finished_cb]
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   294
				};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   295
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   296
				request_script(chain_opts,script_obj,registry_item,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   297
					// which callback type to pass?
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   298
					(
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   299
					 	(preload_this_script) ? // depends on script-preloading
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   300
						function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   301
							registry_item.ready = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   302
							for (var i=0; i<registry_item.ready_listeners.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   303
								registry_item.ready_listeners[i]();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   304
							}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   305
							registry_item.ready_listeners = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   306
						} :
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   307
						function(){ script_executed(registry_item); }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   308
					),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   309
					// signal if script-preloading should be used or not
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   310
					preload_this_script
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   311
				);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   312
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   313
			else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   314
				registry_item = registry_items[0];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   315
				if (registry_item.finished) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   316
					finished_cb();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   317
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   318
				else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   319
					registry_item.finished_listeners.push(finished_cb);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   320
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   321
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   322
		}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   323
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   324
		// creates a closure for each separate chain spawned from this $LAB instance, to keep state cleanly separated between chains
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   325
		function create_chain() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   326
			var chainedAPI,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   327
				chain_opts = merge_objs(global_defaults,{}),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   328
				chain = [],
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   329
				exec_cursor = 0,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   330
				scripts_currently_loading = false,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   331
				group
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   332
			;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   333
			
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   334
			// called when a script has finished preloading
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   335
			function chain_script_ready(script_obj,exec_trigger) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   336
				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("script preload finished: "+script_obj.real_src);/*!END_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   337
				script_obj.ready = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   338
				script_obj.exec_trigger = exec_trigger;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   339
				advance_exec_cursor(); // will only check for 'ready' scripts to be executed
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   340
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   341
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   342
			// called when a script has finished executing
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   343
			function chain_script_executed(script_obj,chain_group) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   344
				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("script execution finished: "+script_obj.real_src);/*!END_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   345
				script_obj.ready = script_obj.finished = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   346
				script_obj.exec_trigger = null;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   347
				// check if chain group is all finished
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   348
				for (var i=0; i<chain_group.scripts.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   349
					if (!chain_group.scripts[i].finished) return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   350
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   351
				// chain_group is all finished if we get this far
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   352
				chain_group.finished = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   353
				advance_exec_cursor();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   354
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   355
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   356
			// main driver for executing each part of the chain
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   357
			function advance_exec_cursor() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   358
				while (exec_cursor < chain.length) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   359
					if (is_func(chain[exec_cursor])) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   360
						/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("$LAB.wait() executing: "+chain[exec_cursor]);/*!END_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   361
						try { chain[exec_cursor++](); } catch (err) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   362
							/*!START_DEBUG*/if (chain_opts[_Debug]) log_error("$LAB.wait() error caught: ",err);/*!END_DEBUG*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   363
						}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   364
						continue;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   365
					}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   366
					else if (!chain[exec_cursor].finished) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   367
						if (check_chain_group_scripts_ready(chain[exec_cursor])) continue;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   368
						break;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   369
					}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   370
					exec_cursor++;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   371
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   372
				// we've reached the end of the chain (so far)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   373
				if (exec_cursor == chain.length) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   374
					scripts_currently_loading = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   375
					group = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   376
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   377
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   378
			
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   379
			// setup next chain script group
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   380
			function init_script_chain_group() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   381
				if (!group || !group.scripts) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   382
					chain.push(group = {scripts:[],finished:true});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   383
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   384
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   385
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   386
			// API for $LAB chains
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   387
			chainedAPI = {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   388
				// start loading one or more scripts
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   389
				script:function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   390
					for (var i=0; i<arguments.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   391
						(function(script_obj,script_list){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   392
							var splice_args;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   393
							
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   394
							if (!is_array(script_obj)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   395
								script_list = [script_obj];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   396
							}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   397
							for (var j=0; j<script_list.length; j++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   398
								init_script_chain_group();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   399
								script_obj = script_list[j];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   400
								
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   401
								if (is_func(script_obj)) script_obj = script_obj();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   402
								if (!script_obj) continue;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   403
								if (is_array(script_obj)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   404
									// set up an array of arguments to pass to splice()
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   405
									splice_args = [].slice.call(script_obj); // first include the actual array elements we want to splice in
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   406
									splice_args.unshift(j,1); // next, put the `index` and `howMany` parameters onto the beginning of the splice-arguments array
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   407
									[].splice.apply(script_list,splice_args); // use the splice-arguments array as arguments for splice()
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   408
									j--; // adjust `j` to account for the loop's subsequent `j++`, so that the next loop iteration uses the same `j` index value
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   409
									continue;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   410
								}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   411
								if (typeof script_obj == "string") script_obj = {src:script_obj};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   412
								script_obj = merge_objs(script_obj,{
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   413
									ready:false,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   414
									ready_cb:chain_script_ready,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   415
									finished:false,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   416
									finished_cb:chain_script_executed
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   417
								});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   418
								group.finished = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   419
								group.scripts.push(script_obj);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   420
								
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   421
								do_script(chain_opts,script_obj,group,(can_use_preloading && scripts_currently_loading));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   422
								scripts_currently_loading = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   423
								
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   424
								if (chain_opts[_AlwaysPreserveOrder]) chainedAPI.wait();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   425
							}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   426
						})(arguments[i],arguments[i]);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   427
					}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   428
					return chainedAPI;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   429
				},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   430
				// force LABjs to pause in execution at this point in the chain, until the execution thus far finishes, before proceeding
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   431
				wait:function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   432
					if (arguments.length > 0) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   433
						for (var i=0; i<arguments.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   434
							chain.push(arguments[i]);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   435
						}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   436
						group = chain[chain.length-1];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   437
					}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   438
					else group = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   439
					
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   440
					advance_exec_cursor();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   441
					
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   442
					return chainedAPI;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   443
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   444
			};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   445
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   446
			// the first chain link API (includes `setOptions` only this first time)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   447
			return {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   448
				script:chainedAPI.script, 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   449
				wait:chainedAPI.wait, 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   450
				setOptions:function(opts){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   451
					merge_objs(opts,chain_opts);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   452
					return chainedAPI;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   453
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   454
			};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   455
		}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   456
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   457
		// API for each initial $LAB instance (before chaining starts)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   458
		instanceAPI = {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   459
			// main API functions
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   460
			setGlobalDefaults:function(opts){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   461
				merge_objs(opts,global_defaults);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   462
				return instanceAPI;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   463
			},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   464
			setOptions:function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   465
				return create_chain().setOptions.apply(null,arguments);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   466
			},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   467
			script:function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   468
				return create_chain().script.apply(null,arguments);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   469
			},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   470
			wait:function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   471
				return create_chain().wait.apply(null,arguments);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   472
			},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   473
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   474
			// built-in queuing for $LAB `script()` and `wait()` calls
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   475
			// useful for building up a chain programmatically across various script locations, and simulating
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   476
			// execution of the chain
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   477
			queueScript:function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   478
				queue[queue.length] = {type:"script", args:[].slice.call(arguments)};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   479
				return instanceAPI;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   480
			},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   481
			queueWait:function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   482
				queue[queue.length] = {type:"wait", args:[].slice.call(arguments)};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   483
				return instanceAPI;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   484
			},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   485
			runQueue:function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   486
				var $L = instanceAPI, len=queue.length, i=len, val;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   487
				for (;--i>=0;) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   488
					val = queue.shift();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   489
					$L = $L[val.type].apply(null,val.args);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   490
				}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   491
				return $L;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   492
			},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   493
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   494
			// rollback `[global].$LAB` to what it was before this file was loaded, the return this current instance of $LAB
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   495
			noConflict:function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   496
				global.$LAB = _$LAB;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   497
				return instanceAPI;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   498
			},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   499
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   500
			// create another clean instance of $LAB
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   501
			sandbox:function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   502
				return create_sandbox();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   503
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   504
		};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   505
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   506
		return instanceAPI;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   507
	}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   508
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   509
	// create the main instance of $LAB
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   510
	global.$LAB = create_sandbox();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   511
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   512
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   513
	/* The following "hack" was suggested by Andrea Giammarchi and adapted from: http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   514
	   NOTE: this hack only operates in FF and then only in versions where document.readyState is not present (FF < 3.6?).
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   515
	   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   516
	   The hack essentially "patches" the **page** that LABjs is loaded onto so that it has a proper conforming document.readyState, so that if a script which does 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   517
	   proper and safe dom-ready detection is loaded onto a page, after dom-ready has passed, it will still be able to detect this state, by inspecting the now hacked 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   518
	   document.readyState property. The loaded script in question can then immediately trigger any queued code executions that were waiting for the DOM to be ready. 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   519
	   For instance, jQuery 1.4+ has been patched to take advantage of document.readyState, which is enabled by this hack. But 1.3.2 and before are **not** safe or 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   520
	   fixed by this hack, and should therefore **not** be lazy-loaded by script loader tools such as LABjs.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   521
	*/ 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   522
	(function(addEvent,domLoaded,handler){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   523
		if (document.readyState == null && document[addEvent]){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   524
			document.readyState = "loading";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   525
			document[addEvent](domLoaded,handler = function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   526
				document.removeEventListener(domLoaded,handler,false);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   527
				document.readyState = "complete";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   528
			},false);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   529
		}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   530
	})("addEventListener","DOMContentLoaded");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   531
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   532
})(this);/*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   533
  mustache.js — Logic-less templates in JavaScript
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   534
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   535
  See http://mustache.github.com/ for more info.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   536
*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   537
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   538
var Mustache = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   539
  var Renderer = function() {};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   540
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   541
  Renderer.prototype = {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   542
    otag: "{{",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   543
    ctag: "}}",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   544
    pragmas: {},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   545
    buffer: [],
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   546
    pragmas_implemented: {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   547
      "IMPLICIT-ITERATOR": true
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   548
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   549
    context: {},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   550
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   551
    render: function(template, context, partials, in_recursion) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   552
      // reset buffer & set context
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   553
      if(!in_recursion) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   554
        this.context = context;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   555
        this.buffer = []; // TODO: make this non-lazy
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   556
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   557
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   558
      // fail fast
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   559
      if(!this.includes("", template)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   560
        if(in_recursion) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   561
          return template;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   562
        } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   563
          this.send(template);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   564
          return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   565
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   566
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   567
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   568
      template = this.render_pragmas(template);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   569
      var html = this.render_section(template, context, partials);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   570
      if(in_recursion) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   571
        return this.render_tags(html, context, partials, in_recursion);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   572
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   573
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   574
      this.render_tags(html, context, partials, in_recursion);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   575
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   576
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   577
    /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   578
      Sends parsed lines
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   579
    */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   580
    send: function(line) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   581
      if(line !== "") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   582
        this.buffer.push(line);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   583
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   584
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   585
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   586
    /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   587
      Looks for %PRAGMAS
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   588
    */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   589
    render_pragmas: function(template) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   590
      // no pragmas
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   591
      if(!this.includes("%", template)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   592
        return template;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   593
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   594
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   595
      var that = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   596
      var regex = new RegExp(this.otag + "%([\\w-]+) ?([\\w]+=[\\w]+)?" +
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   597
            this.ctag, "g");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   598
      return template.replace(regex, function(match, pragma, options) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   599
        if(!that.pragmas_implemented[pragma]) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   600
          throw({message: 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   601
            "This implementation of mustache doesn't understand the '" +
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   602
            pragma + "' pragma"});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   603
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   604
        that.pragmas[pragma] = {};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   605
        if(options) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   606
          var opts = options.split("=");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   607
          that.pragmas[pragma][opts[0]] = opts[1];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   608
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   609
        return "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   610
        // ignore unknown pragmas silently
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   611
      });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   612
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   613
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   614
    /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   615
      Tries to find a partial in the curent scope and render it
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   616
    */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   617
    render_partial: function(name, context, partials) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   618
      name = this.trim(name);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   619
      if(!partials || partials[name] === undefined) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   620
        throw({message: "unknown_partial '" + name + "'"});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   621
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   622
      if(typeof(context[name]) != "object") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   623
        return this.render(partials[name], context, partials, true);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   624
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   625
      return this.render(partials[name], context[name], partials, true);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   626
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   627
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   628
    /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   629
      Renders inverted (^) and normal (#) sections
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   630
    */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   631
    render_section: function(template, context, partials) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   632
      if(!this.includes("#", template) && !this.includes("^", template)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   633
        return template;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   634
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   635
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   636
      var that = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   637
      // CSW - Added "+?" so it finds the tighest bound, not the widest
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   638
      var regex = new RegExp(this.otag + "(\\^|\\#)\\s*(.+)\\s*" + this.ctag +
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   639
              "\n*([\\s\\S]+?)" + this.otag + "\\/\\s*\\2\\s*" + this.ctag +
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   640
              "\\s*", "mg");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   641
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   642
      // for each {{#foo}}{{/foo}} section do...
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   643
      return template.replace(regex, function(match, type, name, content) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   644
        var value = that.find(name, context);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   645
        if(type == "^") { // inverted section
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   646
          if(!value || that.is_array(value) && value.length === 0) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   647
            // false or empty list, render it
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   648
            return that.render(content, context, partials, true);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   649
          } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   650
            return "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   651
          }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   652
        } else if(type == "#") { // normal section
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   653
          if(that.is_array(value)) { // Enumerable, Let's loop!
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   654
            return that.map(value, function(row) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   655
              return that.render(content, that.create_context(row),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   656
                partials, true);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   657
            }).join("");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   658
          } else if(that.is_object(value)) { // Object, Use it as subcontext!
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   659
            return that.render(content, that.create_context(value),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   660
              partials, true);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   661
          } else if(typeof value === "function") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   662
            // higher order section
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   663
            return value.call(context, content, function(text) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   664
              return that.render(text, context, partials, true);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   665
            });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   666
          } else if(value) { // boolean section
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   667
            return that.render(content, context, partials, true);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   668
          } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   669
            return "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   670
          }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   671
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   672
      });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   673
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   674
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   675
    /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   676
      Replace {{foo}} and friends with values from our view
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   677
    */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   678
    render_tags: function(template, context, partials, in_recursion) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   679
      // tit for tat
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   680
      var that = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   681
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   682
      var new_regex = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   683
        return new RegExp(that.otag + "(=|!|>|\\{|%)?([^\\/#\\^]+?)\\1?" +
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   684
          that.ctag + "+", "g");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   685
      };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   686
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   687
      var regex = new_regex();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   688
      var tag_replace_callback = function(match, operator, name) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   689
        switch(operator) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   690
        case "!": // ignore comments
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   691
          return "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   692
        case "=": // set new delimiters, rebuild the replace regexp
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   693
          that.set_delimiters(name);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   694
          regex = new_regex();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   695
          return "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   696
        case ">": // render partial
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   697
          return that.render_partial(name, context, partials);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   698
        case "{": // the triple mustache is unescaped
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   699
          return that.find(name, context);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   700
        default: // escape the value
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   701
          return that.escape(that.find(name, context));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   702
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   703
      };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   704
      var lines = template.split("\n");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   705
      for(var i = 0; i < lines.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   706
        lines[i] = lines[i].replace(regex, tag_replace_callback, this);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   707
        if(!in_recursion) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   708
          this.send(lines[i]);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   709
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   710
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   711
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   712
      if(in_recursion) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   713
        return lines.join("\n");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   714
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   715
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   716
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   717
    set_delimiters: function(delimiters) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   718
      var dels = delimiters.split(" ");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   719
      this.otag = this.escape_regex(dels[0]);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   720
      this.ctag = this.escape_regex(dels[1]);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   721
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   722
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   723
    escape_regex: function(text) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   724
      // thank you Simon Willison
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   725
      if(!arguments.callee.sRE) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   726
        var specials = [
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   727
          '/', '.', '*', '+', '?', '|',
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   728
          '(', ')', '[', ']', '{', '}', '\\'
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   729
        ];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   730
        arguments.callee.sRE = new RegExp(
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   731
          '(\\' + specials.join('|\\') + ')', 'g'
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   732
        );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   733
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   734
      return text.replace(arguments.callee.sRE, '\\$1');
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   735
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   736
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   737
    /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   738
      find `name` in current `context`. That is find me a value
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   739
      from the view object
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   740
    */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   741
    find: function(name, context) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   742
      name = this.trim(name);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   743
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   744
      // Checks whether a value is thruthy or false or 0
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   745
      function is_kinda_truthy(bool) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   746
        return bool === false || bool === 0 || bool;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   747
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   748
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   749
      var value;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   750
      if(is_kinda_truthy(context[name])) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   751
        value = context[name];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   752
      } else if(is_kinda_truthy(this.context[name])) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   753
        value = this.context[name];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   754
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   755
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   756
      if(typeof value === "function") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   757
        return value.apply(context);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   758
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   759
      if(value !== undefined) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   760
        return value;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   761
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   762
      // silently ignore unkown variables
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   763
      return "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   764
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   765
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   766
    // Utility methods
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   767
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   768
    /* includes tag */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   769
    includes: function(needle, haystack) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   770
      return haystack.indexOf(this.otag + needle) != -1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   771
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   772
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   773
    /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   774
      Does away with nasty characters
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   775
    */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   776
    escape: function(s) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   777
      s = String(s === null ? "" : s);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   778
      return s.replace(/&(?!\w+;)|["'<>\\]/g, function(s) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   779
        switch(s) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   780
        case "&": return "&amp;";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   781
        case "\\": return "\\\\";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   782
        case '"': return '&quot;';
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   783
        case "'": return '&#39;';
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   784
        case "<": return "&lt;";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   785
        case ">": return "&gt;";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   786
        default: return s;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   787
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   788
      });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   789
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   790
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   791
    // by @langalex, support for arrays of strings
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   792
    create_context: function(_context) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   793
      if(this.is_object(_context)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   794
        return _context;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   795
      } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   796
        var iterator = ".";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   797
        if(this.pragmas["IMPLICIT-ITERATOR"]) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   798
          iterator = this.pragmas["IMPLICIT-ITERATOR"].iterator;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   799
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   800
        var ctx = {};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   801
        ctx[iterator] = _context;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   802
        return ctx;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   803
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   804
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   805
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   806
    is_object: function(a) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   807
      return a && typeof a == "object";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   808
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   809
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   810
    is_array: function(a) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   811
      return Object.prototype.toString.call(a) === '[object Array]';
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   812
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   813
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   814
    /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   815
      Gets rid of leading and trailing whitespace
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   816
    */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   817
    trim: function(s) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   818
      return s.replace(/^\s*|\s*$/g, "");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   819
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   820
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   821
    /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   822
      Why, why, why? Because IE. Cry, cry cry.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   823
    */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   824
    map: function(array, fn) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   825
      if (typeof array.map == "function") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   826
        return array.map(fn);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   827
      } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   828
        var r = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   829
        var l = array.length;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   830
        for(var i = 0; i < l; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   831
          r.push(fn(array[i]));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   832
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   833
        return r;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   834
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   835
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   836
  };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   837
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   838
  return({
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   839
    name: "mustache.js",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   840
    version: "0.3.1-dev",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   841
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   842
    /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   843
      Turns a template and view into HTML
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   844
    */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   845
    to_html: function(template, view, partials, send_fun) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   846
      var renderer = new Renderer();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   847
      if(send_fun) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   848
        renderer.send = send_fun;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   849
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   850
      renderer.render(template, view, partials);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   851
      if(!send_fun) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   852
        return renderer.buffer.join("\n");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   853
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   854
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   855
  });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   856
}();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   857
// Underscore.js 1.2.3
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   858
// (c) 2009-2011 Jeremy Ashkenas, DocumentCloud Inc.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   859
// Underscore is freely distributable under the MIT license.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   860
// Portions of Underscore are inspired or borrowed from Prototype,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   861
// Oliver Steele's Functional, and John Resig's Micro-Templating.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   862
// For all details and documentation:
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   863
// http://documentcloud.github.com/underscore
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   864
(function(){function r(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   865
c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&r(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(m.call(a,h)&&(f++,!(g=m.call(c,h)&&r(a[h],c[h],d))))break;if(g){for(h in c)if(m.call(c,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   866
h)&&!f--)break;g=!f}}d.pop();return g}var s=this,F=s._,o={},k=Array.prototype,p=Object.prototype,i=k.slice,G=k.concat,H=k.unshift,l=p.toString,m=p.hasOwnProperty,v=k.forEach,w=k.map,x=k.reduce,y=k.reduceRight,z=k.filter,A=k.every,B=k.some,q=k.indexOf,C=k.lastIndexOf,p=Array.isArray,I=Object.keys,t=Function.prototype.bind,b=function(a){return new n(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else typeof define==="function"&&
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   867
define.amd?define("underscore",function(){return b}):s._=b;b.VERSION="1.2.3";var j=b.each=b.forEach=function(a,c,b){if(a!=null)if(v&&a.forEach===v)a.forEach(c,b);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(b,a[e],e,a)===o)break}else for(e in a)if(m.call(a,e)&&c.call(b,a[e],e,a)===o)break};b.map=function(a,c,b){var e=[];if(a==null)return e;if(w&&a.map===w)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});return e};b.reduce=b.foldl=b.inject=function(a,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   868
c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(x&&a.reduce===x)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(y&&a.reduceRight===y)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   869
c,d,e):b.reduce(g,c)};b.find=b.detect=function(a,c,b){var e;D(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(z&&a.filter===z)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(A&&a.every===A)return a.every(c,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   870
b);j(a,function(a,g,h){if(!(e=e&&c.call(b,a,g,h)))return o});return e};var D=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(B&&a.some===B)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return o});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return q&&a.indexOf===q?a.indexOf(c)!=-1:b=D(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(c.call?c||a:a[c]).apply(a,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   871
d)})};b.pluck=function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   872
computed:b})});return e.value};b.shuffle=function(a){var c=[],b;j(a,function(a,f){f==0?c[0]=a:(b=Math.floor(Math.random()*(f+1)),c[f]=c[b],c[b]=a)});return c};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,c){var b=a.criteria,d=c.criteria;return b<d?-1:b>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   873
function(a,c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   874
1]};b.rest=b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   875
[]);return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   876
c,d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(q&&a.indexOf===q)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(C&&a.lastIndexOf===C)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   877
var E=function(){};b.bind=function(a,c){var d,e;if(a.bind===t&&t)return t.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));E.prototype=a.prototype;var b=new E,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   878
c){var d={};c||(c=b.identity);return function(){var b=c.apply(this,arguments);return m.call(d,b)?d[b]:d[b]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   879
a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=G.apply([a],arguments);return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};b.after=
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   880
function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=I||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var b=[],d;for(d in a)m.call(a,d)&&(b[b.length]=d);return b};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)b[d]!==void 0&&(a[d]=b[d])});return a};b.defaults=function(a){j(i.call(arguments,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   881
1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return r(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(m.call(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=p||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   882
Object(a)};b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!m.call(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)==
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   883
"[object Date]"};b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.noConflict=function(){s._=F;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),function(c){J(c,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   884
b[c]=a[c])})};var K=0;b.uniqueId=function(a){var b=K++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape,function(a,b){return"',_.escape("+b.replace(/\\'/g,"'")+"),'"}).replace(d.interpolate,function(a,b){return"',"+b.replace(/\\'/g,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   885
"'")+",'"}).replace(d.evaluate||null,function(a,b){return"');"+b.replace(/\\'/g,"'").replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};var n=function(a){this._wrapped=a};b.prototype=n.prototype;var u=function(a,c){return c?b(a).chain():a},J=function(a,c){n.prototype[a]=function(){var a=i.call(arguments);H.call(a,this._wrapped);return u(c.apply(b,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   886
a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];n.prototype[a]=function(){b.apply(this._wrapped,arguments);return u(this._wrapped,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];n.prototype[a]=function(){return u(b.apply(this._wrapped,arguments),this._chain)}});n.prototype.chain=function(){this._chain=true;return this};n.prototype.value=function(){return this._wrapped}}).call(this);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   887
/* main file */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   888
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   889
if ( window.IriSP === undefined && window.__IriSP === undefined ) { 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   890
	var IriSP = {}; 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   891
	var __IriSP = IriSP; /* for backward compatibility */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   892
}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   893
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   894
IriSP.loadLibs = function( libs, config, metadata_url, callback ) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   895
    // Localize jQuery variable
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   896
		IriSP.jQuery = null;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   897
    var $L = $LAB.script(libs.jQuery).script(libs.swfObject)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   898
                .script(libs.jQueryUI)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   899
                                   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   900
    if (config.player.type === "jwplayer") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   901
      // load our popcorn.js lookalike
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   902
      $L = $L.script(libs.jwplayer);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   903
    } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   904
      // load the real popcorn
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   905
      $L = $L.script(libs.popcorn).script(libs["popcorn.code"]);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   906
      if (config.player.type === "youtube") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   907
        $L = $L.script(libs["popcorn.youtube"]);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   908
      } 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   909
      if (config.player.type === "vimeo")
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   910
        $L = $L.script(libs["popcorn.vimeo"]);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   911
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   912
      /* do nothing for html5 */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   913
    }       
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   914
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   915
    /* widget specific requirements */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   916
    for (var idx in config.gui.widgets) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   917
      if (config.gui.widgets[idx].type === "PolemicWidget") {        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   918
        $L.script(libs.raphael);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   919
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   920
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   921
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   922
    // same for modules
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   923
    /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   924
    for (var idx in config.modules) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   925
      if (config.modules[idx].type === "PolemicWidget")
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   926
        $L.script(libs.raphaelJs);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   927
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   928
    */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   929
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   930
    $L.wait(function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   931
      IriSP.jQuery = window.jQuery.noConflict( true );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   932
      IriSP._ = window._.noConflict();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   933
      IriSP.underscore = IriSP._;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   934
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   935
      var css_link_jquery = IriSP.jQuery( "<link>", { 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   936
        rel: "stylesheet", 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   937
        type: "text/css", 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   938
        href: libs.cssjQueryUI,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   939
        'class': "dynamic_css"
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   940
      } );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   941
      var css_link_custom = IriSP.jQuery( "<link>", { 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   942
        rel: "stylesheet", 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   943
        type: "text/css", 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   944
        href: config.gui.css,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   945
        'class': "dynamic_css"
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   946
      } );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   947
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   948
      css_link_jquery.appendTo('head');
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   949
      css_link_custom.appendTo('head');
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   950
          
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   951
      IriSP.setupDataLoader();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   952
      IriSP.__dataloader.get(metadata_url, 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   953
          function(data) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   954
            /* save the data so that we could re-use it to
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   955
               configure the video
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   956
            */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   957
            IriSP.__jsonMetadata = data;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   958
            callback.call(window) });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   959
    });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   960
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   961
IriSP.annotation_template = "{{! template for an annotation displayed in a segmentWidget }}<div title='{{divTitle}}' id='{{id}}'	class='Ldt-iri-chapter' 	style='left: {{startPixel}}px;          width: {{pxWidth}}px;          background-color:#{{hexa_color}};' 	></div>";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   962
IriSP.annotationWidget_template = "{{! template for the annotation widget }}<div class='Ldt-AnnotationsWidget'>  <!-- ugly div because we want to have a double border -->  <div class='Ldt-Annotation-DoubleBorder'>      <div class='Ldt-AnnotationContent'>        <div class='Ldt-AnnotationShareIcons'>         <a class='Ldt-fbShare' href=''><img src='{{img_dir}}/facebook.png' alt='share on facebook'></img></a>         <a class='Ldt-TwShare' href=''><img src='{{img_dir}}/twitter.png' alt='share on twitter'></img></a>         <a class='Ldt-GplusShare' href=''><img src='{{img_dir}}/google.png' alt='share on google+'></img></a>      </div>		  <div class='Ldt-SaTitle'></div>	  	<div class='Ldt-SaDescription'></div>    </div>  </div></div>";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   963
IriSP.annotation_loading_template = "{{! template shown while the annotation widget is loading }}<div id='Ldt-load-container'><div id='Ldt-loader'>&nbsp;</div> Chargement... </div>";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   964
IriSP.arrowWidget_template = "<div class='Ldt-arrowWidget'></div>";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   965
IriSP.overlay_marker_template = "{{! the template for the small bars which is z-indexed over our segment widget }}<div class='Ldt-SegmentPositionMarker' style='background-color: #F7268E;'></div>";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   966
IriSP.player_template = "{{! template for the radio player }}<div class='Ldt-controler demo'>	<div class='Ldt-LeftPlayerControls'>    <div class='Ldt-button Ldt-CtrlPlay'></div>		<div class='Ldt-button Ldt-CtrlAnnotate'></div>    <div class='Ldt-button Ldt-CtrlSearch'></div>	</div>		<div class='Ldt-RightPlayerControls'>    <div class='Ldt-Time'>      <div class='Ldt-ElapsedTime'></div>      <div class='Ldt-TimeSeparator'>/</div>      <div class='Ldt-TotalTime'></div>    </div>		<div class='Ldt-button Ldt-CtrlSound'></div>	</div></div>";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   967
IriSP.search_template = "{{! template for the search container }}<div class='LdtSearchContainer'	style='margin-left: {{margin_left}}; position: absolute; margin-top: -60px;'>	<div class='LdtSearch'		style='display: none; background-color: #EEE; width: 165px; boder: 1px; border-color: #CFCFCF; position: absolute; text-align: center;'>		<input class='LdtSearchInput'			style='margin-top: 2px; margin-bottom: 2px;' />	</div></div><div class='cleaner'></div>";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   968
IriSP.share_template = "{{! social network sharing template }}<a onclick='__IriSP.MyApiPlayer.share(\'delicious\');' title='partager avec delicious'><span class='share shareDelicious'>&nbsp;</span></a>		<a onclick='__IriSP.MyApiPlayer.share(\'facebook\');' title='partager avec facebook'> <span class='share shareFacebook'>&nbsp;</span></a><a onclick='__IriSP.MyApiPlayer.share(\'twitter\');' title='partager avec twitter'>  <span class='share shareTwitter'>&nbsp;</span></a><a onclick='__IriSP.MyApiPlayer.share(\'myspace\');' title='partager avec Myspace'>  <span class='share shareMySpace'>&nbsp;</span></a>";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   969
IriSP.sliderWidget_template = "{{! template for the slider widget - it's composed of two divs we one overlayed on top    of the other }}<div class='Ldt-sliderBackground'></div><div class='Ldt-sliderForeground'></div><div class='Ldt-sliderPositionMarker'></div>";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   970
IriSP.tooltip_template = "{{! template used by the jquery ui tooltip }}<div class='Ldt-tooltip'>  <div class='title'>{{title}}</div>  <div class='time'>{{begin}} : {{end}} </div>  <div class='description'>{{description}}</div></div>";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   971
IriSP.tooltipWidget_template = "{{! template for the tooltip widget }}<div class='tip'>	<div class='tipcolor' style='height:10px;width:10px'></div>	<div class='tiptext'></div>";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   972
IriSP.tweetWidget_template = "{{! template for the tweet widget }}<div class='Ldt-tweetWidget'>  <div class='Ldt-tweet-DoubleBorder'>      <img src='{{img_dir}}/minimize.png' class='Ldt-tweetWidgetKeepOpen' alt='dont minimize automatically'></img>      <img src='{{img_dir}}/minimize.png' class='Ldt-tweetWidgetMinimize' alt='minimize window'></img>      <div class='Ldt-tweetAvatar'></div>      <img src='{{img_dir}}/profile_arrow.png' class='Ldt-tweetAvatar-profileArrow'></img>      <div class='Ldt-tweetContents'></div>      <a href='' target='_blank' class='Ldt-Retweet'><div class='Ldt-RetweetIcon'></div> - Retweet </a>      <a href='' target='_blank' class='Ldt-TweetReply'><div class='Ldt-TweetReplyIcon'></div> - Reply</a>  </div></div>";/* wrapper that simulates popcorn.js because
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   973
   popcorn is a bit unstable at the time */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   974
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   975
IriSP.PopcornReplacement = {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   976
  msgPump : {} /* used by jquery to receive and send messages */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   977
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   978
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   979
IriSP.PopcornReplacement.media = { 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   980
  "paused": true,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   981
  "muted": false
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   982
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   983
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   984
IriSP.PopcornReplacement.listen = function(msg, callback) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   985
//  IriSP.jQuery(IriSP.PopcornReplacement.msgPump).bind(msg, function(event, rest) { callback(rest); });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   986
  if (!IriSP.PopcornReplacement.msgPump.hasOwnProperty(msg))
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   987
    IriSP.PopcornReplacement.msgPump[msg] = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   988
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   989
  IriSP.PopcornReplacement.msgPump[msg].push(callback);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   990
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   991
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   992
IriSP.PopcornReplacement.trigger = function(msg, params) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   993
//  IriSP.jQuery(IriSP.PopcornReplacement.msgPump).trigger(msg, params);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   994
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   995
  if (!IriSP.PopcornReplacement.msgPump.hasOwnProperty(msg))
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   996
    return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   997
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   998
  var d = IriSP.PopcornReplacement.msgPump[msg];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
   999
  for(var entry in d) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1000
    d[entry].call(window, params);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1001
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1002
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1003
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1004
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1005
IriSP.PopcornReplacement.guid = function(prefix) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1006
  var str = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1007
      var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1008
      return v.toString(16);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1009
   });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1010
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1011
  return prefix + str;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1012
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1013
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1014
IriSP.PopcornReplacement.__initApi = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1015
  IriSP.PopcornReplacement.trigger("loadedmetadata"); // we've done more than loading metadata of course,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1016
                                                      // but popcorn doesn't need to know more.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1017
  IriSP.PopcornReplacement.media.muted = jwplayer(IriSP.PopcornReplacement._container).getMute();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1018
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1019
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1020
IriSP.PopcornReplacement.jwplayer = function(container, options) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1021
  IriSP.PopcornReplacement._container = container.slice(1); //eschew the '#'
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1022
  options.events = {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1023
      onReady: IriSP.PopcornReplacement.__initApi,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1024
      onTime: IriSP.PopcornReplacement.__timeHandler,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1025
      onPlay: IriSP.PopcornReplacement.__playHandler,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1026
      onPause: IriSP.PopcornReplacement.__pauseHandler,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1027
      onSeek: IriSP.PopcornReplacement.__seekHandler 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1028
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1029
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1030
  jwplayer(IriSP.PopcornReplacement._container).setup(options);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1031
  IriSP.PopcornReplacement.media.duration = options.duration;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1032
  return IriSP.PopcornReplacement;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1033
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1034
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1035
IriSP.PopcornReplacement.currentTime = function(time) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1036
  if (typeof(time) === "undefined") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1037
      return jwplayer(IriSP.PopcornReplacement._container).getPosition();            
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1038
  } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1039
     var currentTime = +time;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1040
     jwplayer( IriSP.PopcornReplacement._container ).seek( currentTime );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1041
     IriSP.PopcornReplacement.trigger("seeked");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1042
     return jwplayer(IriSP.PopcornReplacement._container).getPosition();            
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1043
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1044
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1045
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1046
IriSP.PopcornReplacement.play = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1047
      IriSP.PopcornReplacement.media.paused = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1048
      IriSP.PopcornReplacement.trigger("play");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1049
//      IriSP.PopcornReplacement.trigger("playing");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1050
      jwplayer( IriSP.PopcornReplacement._container ).play();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1051
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1052
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1053
IriSP.PopcornReplacement.pause = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1054
      if ( !IriSP.PopcornReplacement.media.paused ) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1055
        IriSP.PopcornReplacement.media.paused = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1056
        IriSP.PopcornReplacement.trigger( "pause" );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1057
        jwplayer( IriSP.PopcornReplacement._container ).pause();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1058
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1059
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1060
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1061
IriSP.PopcornReplacement.muted = function(val) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1062
  if (typeof(val) !== "undefined") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1063
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1064
    if (jwplayer(IriSP.PopcornReplacement._container).getMute() !== val) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1065
      if (val) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1066
        jwplayer(IriSP.PopcornReplacement._container).setMute(true);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1067
        IriSP.PopcornReplacement.media.muted = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1068
      } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1069
        jwplayer( IriSP.PopcornReplacement._container ).setMute(false);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1070
        IriSP.PopcornReplacement.media.muted = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1071
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1072
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1073
      IriSP.PopcornReplacement.trigger( "volumechange" );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1074
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1075
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1076
    return jwplayer( IriSP.PopcornReplacement._container ).getMute();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1077
  } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1078
    return jwplayer( IriSP.PopcornReplacement._container ).getMute();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1079
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1080
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1081
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1082
IriSP.PopcornReplacement.mute = IriSP.PopcornReplacement.muted;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1083
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1084
IriSP.PopcornReplacement.__codes = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1085
IriSP.PopcornReplacement.code = function(options) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1086
  IriSP.PopcornReplacement.__codes.push(options);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1087
  return IriSP.PopcornReplacement;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1088
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1089
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1090
IriSP.PopcornReplacement.__runCode = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1091
  var currentTime = jwplayer(IriSP.PopcornReplacement._container).getPosition();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1092
  var i = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1093
  for(i = 0; i < IriSP.PopcornReplacement.__codes.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1094
    var c = IriSP.PopcornReplacement.__codes[i];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1095
    if (currentTime == c.start) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1096
      c.onStart();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1097
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1098
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1099
    if (currentTime == c.end) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1100
      c.onEnd();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1101
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1102
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1103
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1104
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1105
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1106
/* called everytime the player updates itself 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1107
   (onTime event)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1108
 */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1109
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1110
IriSP.PopcornReplacement.__timeHandler = function(event) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1111
  var pos = event.position;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1112
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1113
  var i = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1114
  for(i = 0; i < IriSP.PopcornReplacement.__codes.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1115
     var c = IriSP.PopcornReplacement.__codes[i];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1116
     
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1117
     if (pos >= c.start && pos < c.end && 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1118
         pos - 0.1 <= c.start) {       
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1119
        c.onStart();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1120
     }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1121
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1122
     if (pos > c.start && pos > c.end && 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1123
         pos - 0.1 <= c.end) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1124
         console.log("eonedn");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1125
        c.onEnd();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1126
     }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1127
   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1128
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1129
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1130
  IriSP.PopcornReplacement.trigger("timeupdate");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1131
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1132
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1133
IriSP.PopcornReplacement.__seekHandler = function(event) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1134
  var i = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1135
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1136
  for(i = 0; i < IriSP.PopcornReplacement.__codes.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1137
     var c = IriSP.PopcornReplacement.__codes[i];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1138
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1139
     if (event.position >= c.start && event.position < c.end) {        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1140
        c.onEnd();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1141
     }         
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1142
   }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1143
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1144
   for(i = 0; i < IriSP.PopcornReplacement.__codes.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1145
     var c = IriSP.PopcornReplacement.__codes[i];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1146
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1147
     if (typeof(event.offset) === "undefined")
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1148
       event.offset = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1149
           
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1150
     if (event.offset >= c.start && event.offset < c.end) { 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1151
       c.onStart();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1152
     }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1153
     
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1154
   }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1155
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1156
  IriSP.PopcornReplacement.trigger("timeupdate");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1157
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1158
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1159
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1160
IriSP.PopcornReplacement.__playHandler = function(event) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1161
  IriSP.PopcornReplacement.media.paused = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1162
  IriSP.PopcornReplacement.trigger("play");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1163
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1164
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1165
IriSP.PopcornReplacement.__pauseHandler = function(event) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1166
  IriSP.PopcornReplacement.media.paused = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1167
  IriSP.PopcornReplacement.trigger("pause");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1168
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1169
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1170
IriSP.PopcornReplacement.roundTime = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1171
  var currentTime = IriSP.PopcornReplacement.currentTime();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1172
  return Math.round(currentTime);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1173
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1174
/* utils.js - various utils that don't belong anywhere else */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1175
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1176
/* trace function, for debugging */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1177
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1178
IriSP.traceNum = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1179
IriSP.trace = function( msg, value ) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1180
/*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1181
	if( IriSP.config.gui.debug === true ) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1182
		IriSP.traceNum += 1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1183
		IriSP.jQuery( "<div>"+IriSP.traceNum+" - "+msg+" : "+value+"</div>" ).appendTo( "#Ldt-output" );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1184
	}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1185
*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1186
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1187
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1188
/* used in callbacks - because in callbacks we lose "this",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1189
   we need to have a special function which wraps "this" in 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1190
   a closure. This way, the 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1191
*/   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1192
IriSP.wrap = function (obj, fn) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1193
  return function() {    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1194
    var args = Array.prototype.slice.call(arguments, 0);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1195
    return fn.apply(obj, args);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1196
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1197
}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1198
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1199
/* convert a time to a percentage in the media */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1200
IriSP.timeToPourcent = function(time, timetotal){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1201
	var time = Math.abs(time);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1202
  var timetotal = Math.abs(timetotal);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1203
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1204
	return Math.floor((time/timetotal) * 100);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1205
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1206
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1207
IriSP.padWithZeros = function(num) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1208
  if (Math.abs(num) < 10) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1209
    return "0" + num.toString();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1210
  } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1211
    return num.toString();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1212
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1213
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1214
/* convert a number of seconds to a tuple of the form 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1215
   [hours, minutes, seconds]
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1216
*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1217
IriSP.secondsToTime = function(secs) {  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1218
  var hours = Math.abs(parseInt( secs / 3600 ) % 24);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1219
  var minutes = Math.abs(parseInt( secs / 60 ) % 60);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1220
  var seconds = parseFloat(Math.abs(secs % 60).toFixed(0));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1221
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1222
  var toString_fn = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1223
    var ret = "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1224
    if (hours > 0)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1225
       ret = IriSP.padWithZeros(this.hours) + ":";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1226
    ret += IriSP.padWithZeros(this.minutes) + ":" + IriSP.padWithZeros(this.seconds);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1227
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1228
    return ret;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1229
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1230
  return {"hours" : hours, "minutes" : minutes, "seconds" : seconds, toString: toString_fn};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1231
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1232
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1233
IriSP.secondsToString
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1234
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1235
/* format a tweet - replaces @name by a link to the profile, #hashtag, etc. */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1236
IriSP.formatTweet = function(tweet) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1237
  /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1238
    an array of arrays which hold a regexp and its replacement.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1239
  */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1240
  var regExps = [
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1241
    /* copied from http://codegolf.stackexchange.com/questions/464/shortest-url-regex-match-in-javascript/480#480 */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1242
    [/((https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi, "<a href='$1'>$1</a>"],
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1243
    [/@(\w+)/gi, "<a href='http://twitter.com/$1'>@$1</a>"], // matches a @handle
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1244
    [/#(\w+)/gi, "<a href='http://twitter.com/search?q=%23$1'>#$1</a>"],// matches a hashtag
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1245
    [/(\+\+)/gi, "<span class='Ldt-PolemicPlusPlus'>$1</span>"],
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1246
    [/(--)/gi, "<span class='Ldt-PolemicMinusMinus'>$1</span>"],
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1247
    [/(==)/gi, "<span class='Ldt-PolemicEqualEqual'>$1</span>"],
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1248
    [/(\?\?)/gi, "<span class='Ldt-PolemicQuestion'>$1</span>"]
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1249
  ]; 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1250
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1251
  var i = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1252
  for(i = 0; i < regExps.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1253
     tweet = tweet.replace(regExps[i][0], regExps[i][1]);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1254
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1255
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1256
  return tweet;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1257
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1258
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1259
IriSP.countProperties = function(obj) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1260
    var count = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1261
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1262
    for(var prop in obj) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1263
        if(obj.hasOwnProperty(prop))
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1264
                ++count;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1265
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1266
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1267
    return count;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1268
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1269
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1270
// conversion de couleur Decimal vers HexaDecimal || 000 si fff
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1271
IriSP.DEC_HEXA_COLOR = function (dec) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1272
	 var hexa='0123456789ABCDEF';
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1273
   var hex='';
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1274
	 var tmp;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1275
	 while (dec>15){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1276
		  tmp = dec-(Math.floor(dec/16))*16;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1277
		  hex = hexa.charAt(tmp)+hex;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1278
		  dec = Math.floor(dec/16);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1279
	 }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1280
	 hex = hexa.charAt(dec)+hex;	 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1281
	 return(hex);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1282
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1283
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1284
/* shortcut to have global variables in templates */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1285
IriSP.templToHTML = function(template, values) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1286
  var params = IriSP.jQuery.extend(IriSP.default_templates_vars, values);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1287
  return Mustache.to_html(template, params);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1288
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1289
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1290
/* we need to be stricter than encodeURIComponent,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1291
   because of twitter
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1292
*/  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1293
IriSP.encodeURI = function(str) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1294
  return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1295
                                 replace(/\)/g, '%29').replace(/\*/g, '%2A');  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1296
}  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1297
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1298
IriSP.__guidCounter = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1299
IriSP.guid = function(prefix) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1300
  IriSP.__guidCounter += 1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1301
  return prefix + IriSP.__guidCounter;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1302
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1303
/* for ie compatibility
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1304
if (Object.prototype.__defineGetter__&&!Object.defineProperty) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1305
   Object.defineProperty=function(obj,prop,desc) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1306
      if ("get" in desc) obj.__defineGetter__(prop,desc.get);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1307
      if ("set" in desc) obj.__defineSetter__(prop,desc.set);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1308
   }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1309
}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1310
*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1311
/* data.js - this file deals with how the players gets and sends data */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1312
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1313
IriSP.DataLoader = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1314
  this._cache = {};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1315
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1316
  /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1317
    A structure to hold callbacks for specific urls. We need it because
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1318
    ajax calls are asynchronous, so it means that sometimes we ask
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1319
    multiple times for a ressource because the first call hasn't been
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1320
    received yet.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1321
  */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1322
  this._callbacks = {};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1323
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1324
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1325
IriSP.DataLoader.prototype.get = function(url, callback) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1326
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1327
  var base_url = url.split("&")[0]
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1328
  if (this._cache.hasOwnProperty(base_url)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1329
    callback(this._cache[base_url]);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1330
  } else {  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1331
    if (!this._callbacks.hasOwnProperty(base_url)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1332
      this._callbacks[base_url] = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1333
      this._callbacks[base_url].push(callback);   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1334
      /* we need a closure because this gets lost when it's called back */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1335
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1336
      // uncomment you don't want to use caching.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1337
      // IriSP.jQuery.get(url, callback);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1338
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1339
      var func = function(data) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1340
                  this._cache[base_url] = data;                                
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1341
                  var i = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1342
                  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1343
                  for (i = 0; i < this._callbacks[base_url].length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1344
                    this._callbacks[base_url][i](this._cache[base_url]);                                  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1345
                  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1346
      };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1347
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1348
      /* automagically choose between json and jsonp */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1349
      if (url.indexOf(document.location.hostname) === -1 &&
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1350
          url.indexOf("http://") !== -1 /* not a relative url */ ) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1351
        // we contacting a foreign domain, use JSONP
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1352
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1353
        IriSP.jQuery.get(url, {}, IriSP.wrap(this, func), "jsonp");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1354
      } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1355
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1356
        // otherwise, hey, whatever rows your boat
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1357
        IriSP.jQuery.get(url, IriSP.wrap(this, func));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1358
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1359
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1360
    } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1361
      /* simply push the callback - it'll get called when the ressource
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1362
         has been received */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1363
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1364
      this._callbacks[base_url].push(callback);   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1365
   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1366
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1367
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1368
}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1369
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1370
/* the base abstract "class" */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1371
IriSP.Serializer = function(DataLoader, url) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1372
  this._DataLoader = DataLoader;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1373
  this._url = url;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1374
  this._data = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1375
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1376
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1377
IriSP.Serializer.prototype.serialize = function(data) { };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1378
IriSP.Serializer.prototype.deserialize = function(data) {};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1379
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1380
IriSP.Serializer.prototype.currentMedia = function() {  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1381
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1382
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1383
IriSP.Serializer.prototype.sync = function(callback) {  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1384
  callback.call(this, this._data);  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1385
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1386
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1387
IriSP.SerializerFactory = function(DataLoader) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1388
  this._dataloader = DataLoader;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1389
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1390
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1391
IriSP.SerializerFactory.prototype.getSerializer = function(metadataOptions) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1392
  /* This function returns serializer set-up with the correct
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1393
     configuration - takes a metadata struct describing the metadata source
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1394
  */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1395
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1396
  if (metadataOptions === undefined)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1397
    /* return an empty serializer */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1398
    return IriSP.Serializer("", "");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1399
            
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1400
  switch(metadataOptions.type) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1401
    case "json":
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1402
      return new IriSP.JSONSerializer(this._dataloader, metadataOptions.src);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1403
      break;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1404
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1405
    case "dummy": /* only used for unit testing - not defined in production */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1406
      return new IriSP.MockSerializer(this._dataloader, metadataOptions.src);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1407
      break;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1408
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1409
    case "empty":
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1410
      return new IriSP.Serializer("", "empty");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1411
      break;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1412
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1413
    default:      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1414
      return undefined;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1415
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1416
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1417
/* site.js - all our site-dependent config : player chrome, cdn locations, etc...*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1418
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1419
IriSP.lib = { 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1420
		jQuery : "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1421
		jQueryUI : "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.js",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1422
		jQueryToolTip : "http://cdn.jquerytools.org/1.2.4/all/jquery.tools.min.js",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1423
		swfObject : "http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1424
		cssjQueryUI : "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1425
    popcorn : "/mdp/src/js/libs/popcorn.js",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1426
    jwplayer : "/mdp/src/js/libs/jwplayer.js",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1427
    popcornReplacement: "/mdp/src/js/libs/pop.js",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1428
    raphael: "/mdp/src/js/libs/raphael.js",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1429
    "popcorn.mediafragment" : "/mdp/src/js/libs/popcorn.mediafragment.js",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1430
    "popcorn.code" : "/mdp/src/js/libs/popcorn.code.js",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1431
    "popcorn.jwplayer": "/mdp/src/js/libs/popcorn.jwplayer.js",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1432
    "popcorn.youtube": "/mdp/src/js/libs/popcorn.youtube.js"
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1433
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1434
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1435
//Player Configuration 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1436
IriSP.config = undefined;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1437
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1438
IriSP.widgetsDefaults = {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1439
  "LayoutManager" : {spacer_div_height : "0px" },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1440
  "PlayerWidget" : {},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1441
  "AnnotationsWidget": {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1442
    "share_text" : "I'm watching ",     
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1443
    "fb_link" : "http://www.facebook.com/share.php?u=",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1444
    "tw_link" : "http://twitter.com/home?status=",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1445
    "gplus_link" : ""
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1446
    },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1447
  "TweetsWidget" : {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1448
      default_profile_picture : "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1449
      tweet_display_period: 10000 // how long do we show a tweet ?
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1450
  },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1451
  "SliderWidget" : {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1452
      minimize_period: 850 // how long does the slider stays maximized after the user leaves the zone ?
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1453
  },
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1454
  "Main" : {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1455
      autoplay: true
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1456
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1457
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1458
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1459
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1460
IriSP.paths = {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1461
//  "imgs": "/tweetlive/res/metadataplayer/src/css/imgs"
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1462
  "imgs": "/mdp/src/css/imgs"
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1463
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1464
IriSP.default_templates_vars = {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1465
  "img_dir" : IriSP.paths.imgs 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1466
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1467
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1468
/* ui.js - ui related functions */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1469
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1470
/* FIXME: use an sharing library */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1471
IriSP.LdtShareTool = IriSP.share_template; /* the contents come from share.html */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1472
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1473
IriSP.createPlayerChrome = function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1474
	var width = IriSP.config.gui.width;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1475
	var height = IriSP.config.gui.height;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1476
	var heightS = IriSP.config.gui.height-20;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1477
	
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1478
	// AUDIO  */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1479
	// PB dans le html : ; 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1480
	IriSP.trace( "__IriSP.createMyHtml",IriSP.config.gui.container );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1481
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1482
	
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1483
	/* FIXME : factor this in another file */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1484
	if( IriSP.config.gui.mode=="radio" ){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1485
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1486
		IriSP.jQuery( "#"+IriSP.config.gui.container ).before(IriSP.search_template);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1487
		var radioPlayer = Mustache.to_html(IriSP.radio_template, {"share_template" : IriSP.share_template});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1488
		IriSP.jQuery(radioPlayer).appendTo("#"+IriSP.config.gui.container);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1489
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1490
		// special tricks for IE 7
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1491
		if (IriSP.jQuery.browser.msie==true && IriSP.jQuery.browser.version=="7.0"){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1492
			//LdtSearchContainer
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1493
			//__IriSP.jQuery("#LdtPlayer").attr("margin-top","50px");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1494
			IriSP.jQuery("#Ldt-Root").css("padding-top","25px");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1495
			IriSP.trace("__IriSP.createHtml","IE7 SPECIAL ");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1496
		}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1497
	} else if(IriSP.config.gui.mode=="video") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1498
	
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1499
		var videoPlayer = Mustache.to_html(IriSP.video_template, {"share_template" : IriSP.share_template, "heightS" : heightS});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1500
		IriSP.jQuery(videoPlayer).appendTo("#"+IriSP.config.gui.container);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1501
	}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1502
	
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1503
	IriSP.jQuery("#Ldt-Annotations").width(width-(75*2));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1504
	IriSP.jQuery("#Ldt-Show-Arrow-container").width(width-(75*2));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1505
	IriSP.jQuery("#Ldt-ShowAnnotation-audio").width(width-10);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1506
	IriSP.jQuery("#Ldt-ShowAnnotation-video").width(width-10);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1507
	IriSP.jQuery("#Ldt-SaKeyword").width(width-10);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1508
	IriSP.jQuery("#Ldt-controler").width(width-10);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1509
	IriSP.jQuery("#Ldt-Control").attr("z-index","100");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1510
	IriSP.jQuery("#Ldt-controler").hide();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1511
	
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1512
	IriSP.jQuery(IriSP.annotation_loading_template).appendTo("#Ldt-ShowAnnotation-audio");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1513
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1514
	if(IriSP.config.gui.mode=='radio'){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1515
		IriSP.jQuery("#Ldt-load-container").attr("width",IriSP.config.gui.width);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1516
	}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1517
	// Show or not the output
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1518
	if(IriSP.config.gui.debug===true){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1519
		IriSP.jQuery("#Ldt-output").show();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1520
	} else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1521
		IriSP.jQuery("#Ldt-output").hide();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1522
	}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1523
	
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1524
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1525
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1526
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1527
/* create the buttons and the slider   */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1528
IriSP.createInterface = function( width, height, duration ) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1529
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1530
		IriSP.jQuery( "#Ldt-controler" ).show();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1531
		//__IriSP.jQuery("#Ldt-Root").css('display','visible');
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1532
		IriSP.trace( "__IriSP.createInterface" , width+","+height+","+duration+"," );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1533
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1534
		IriSP.jQuery( "#Ldt-ShowAnnotation").click( function () { 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1535
			 //__IriSP.jQuery(this).slideUp(); 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1536
		} );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1537
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1538
		var LdtpPlayerY = IriSP.jQuery("#Ldt-PlaceHolder").attr("top");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1539
		var LdtpPlayerX = IriSP.jQuery("#Ldt-PlaceHolder").attr("left");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1540
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1541
		IriSP.jQuery( "#slider-range-min" ).slider( { //range: "min",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1542
			value: 0,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1543
			min: 1,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1544
			max: duration/1000,//1:54:52.66 = 3600+3240+
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1545
			step: 0.1,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1546
			slide: function(event, ui) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1547
				
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1548
				//__IriSP.jQuery("#amount").val(ui.value+" s");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1549
				//player.sendEvent('SEEK', ui.value)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1550
				IriSP.MyApiPlayer.seek(ui.value);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1551
				//changePageUrlOffset(ui.value);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1552
				//player.sendEvent('PAUSE')
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1553
			}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1554
		} );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1555
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1556
		IriSP.trace("__IriSP.createInterface","ICI");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1557
		IriSP.jQuery("#amount").val(IriSP.jQuery("#slider-range-min").slider("value")+" s");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1558
		IriSP.jQuery(".Ldt-Control1 button:first").button({
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1559
			icons: {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1560
				primary: 'ui-icon-play'
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1561
			},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1562
			text: false
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1563
		}).next().button({
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1564
			icons: {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1565
				primary: 'ui-icon-seek-next'
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1566
			},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1567
			 text: false
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1568
		});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1569
		IriSP.jQuery(".Ldt-Control2 button:first").button({
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1570
			icons: {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1571
				primary: 'ui-icon-search'//,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1572
				//secondary: 'ui-icon-volume-off'
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1573
			},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1574
			text: false
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1575
		}).next().button({
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1576
			icons: {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1577
				primary: 'ui-icon-volume-on'
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1578
			},
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1579
			 text: false
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1580
		});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1581
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1582
		// /!\ PB A MODIFIER 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1583
		//__IriSP.MyTags.draw();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1584
		IriSP.trace("__IriSP.createInterface","ICI2");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1585
		IriSP.jQuery( "#ldt-CtrlPlay" ).attr( "style", "background-color:#CD21C24;" );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1586
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1587
		IriSP.jQuery( "#Ldt-load-container" ).hide();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1588
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1589
		if( IriSP.config.gui.mode=="radio" & IriSP.jQuery.browser.msie != true ) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1590
			IriSP.jQuery( "#Ldtplayer1" ).attr( "height", "0" );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1591
		}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1592
		IriSP.trace( "__IriSP.createInterface" , "3" );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1593
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1594
		IriSP.trace( "__IriSP.createInterface", "END" );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1595
		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1596
	};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1597
/* the widget classes and definitions */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1598
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1599
IriSP.Widget = function(Popcorn, config, Serializer) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1600
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1601
  if (config === undefined || config === null) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1602
    config = {}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1603
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1604
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1605
  this._Popcorn = Popcorn;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1606
  this._config = config;  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1607
  this._serializer = Serializer;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1608
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1609
  if (config.hasOwnProperty("container")) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1610
     this._id = config.container;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1611
     this.selector = IriSP.jQuery("#" + this._id);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1612
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1613
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1614
  if (config.hasOwnProperty("spacer")) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1615
     this._spacerId = config.spacer;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1616
     this.spacer = IriSP.jQuery("#" + this._spacerId);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1617
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1618
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1619
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1620
  if (config.hasOwnProperty("width")) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1621
     // this.width and not this._width because we consider it public.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1622
     this.width = config.width;     
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1623
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1624
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1625
  if (config.hasOwnProperty("height")) {    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1626
     this.height = config.height;     
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1627
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1628
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1629
  if (config.hasOwnProperty("heightmax")) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1630
     this.heightmax = config.heightmax;     
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1631
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1632
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1633
  if (config.hasOwnProperty("widthmax")) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1634
     this.widthmax = config.widthmax;     
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1635
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1636
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1637
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1638
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1639
IriSP.Widget.prototype.draw = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1640
  /* implemented by "sub-classes" */  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1641
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1642
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1643
IriSP.Widget.prototype.redraw = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1644
  /* implemented by "sub-classes" */  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1645
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1646
/* modules are non-graphical entities, similar to widgets */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1647
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1648
IriSP.Module = function(Popcorn, config, Serializer) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1649
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1650
  if (config === undefined || config === null) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1651
    config = {}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1652
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1653
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1654
  this._Popcorn = Popcorn;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1655
  this._config = config;  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1656
  this._serializer = Serializer;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1657
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1658
/* layout.js - very basic layout management */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1659
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1660
/*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1661
  a layout manager manages a div and the layout of objects
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1662
  inside it.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1663
*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1664
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1665
IriSP.LayoutManager = function(options) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1666
    this._Popcorn = null;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1667
    this._widgets = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1668
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1669
    this._div = "LdtPlayer";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1670
    this._width = 640;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1671
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1672
    if (options === undefined) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1673
      options = {};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1674
    };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1675
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1676
    if (options.hasOwnProperty('container')) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1677
      this._div = options.container;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1678
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1679
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1680
    if (options.hasOwnProperty('width')) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1681
      this._width = options.width;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1682
    }    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1683
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1684
    if (options.hasOwnProperty('height')) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1685
      this._height = options.height;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1686
    } 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1687
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1688
    /* this is a shortcut */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1689
    this.selector = IriSP.jQuery("#" + this._div);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1690
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1691
    this.selector.css("width", this._width);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1692
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1693
    if (this._height !== undefined)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1694
      this.selector.css("height", this._height);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1695
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1696
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1697
/* we need this special setter because of a chicken and egg problem :
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1698
   we want the manager to use popcorn but the popcorn div will be managed
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1699
   by the manager. So we need a way to set the instance the manager uses
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1700
*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1701
   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1702
IriSP.LayoutManager.prototype.setPopcornInstance = function(popcorn) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1703
    this._Popcorn = popcorn;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1704
}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1705
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1706
/* stem is a string to append to the id of the widget */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1707
IriSP.LayoutManager.prototype.createDiv = function(stem) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1708
    if (typeof(stem) === "undefined")
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1709
       stem = "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1710
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1711
    var newDiv = IriSP.guid(this._div + "_widget_" + stem + "_");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1712
    var spacerDiv = IriSP.guid("LdtPlayer_spacer_");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1713
    this._widgets.push(newDiv);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1714
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1715
    var divTempl = "<div id='{{id}}' style='width: {{width}}px; position: relative;'></div";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1716
    var spacerTempl = "<div id='{{spacer_id}}' style='width: {{width}}px; position: relative; height: {{spacer_div_height}};'></div";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1717
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1718
    var divCode = Mustache.to_html(divTempl, {id: newDiv, width: this._width});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1719
    var spacerCode = Mustache.to_html(spacerTempl, {spacer_id: spacerDiv, width: this._width,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1720
                                                    spacer_div_height: IriSP.widgetsDefaults.LayoutManager.spacer_div_height });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1721
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1722
    this.selector.append(divCode);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1723
    this.selector.append(spacerCode);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1724
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1725
    return [newDiv, spacerDiv];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1726
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1727
/* init.js - initialization and configuration of Popcorn and the widgets
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1728
exemple json configuration:
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1729
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1730
 */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1731
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1732
IriSP.setupDataLoader = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1733
  /* we set it up separately because we need to
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1734
     get data at the very beginning, for instance when
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1735
     setting up the video */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1736
  IriSP.__dataloader = new IriSP.DataLoader();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1737
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1738
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1739
IriSP.configurePopcorn = function (layoutManager, options) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1740
    var pop;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1741
    var ret = layoutManager.createDiv(); 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1742
    var containerDiv = ret[0];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1743
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1744
    switch(options.type) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1745
      /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1746
        todo : dynamically create the div/video tag which
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1747
        will contain the video.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1748
      */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1749
      case "html5":
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1750
           var tmpId = Popcorn.guid("video"); 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1751
           IriSP.jQuery("#" + containerDiv).append("<video src='" + options.file + "' id='" + tmpId + "'></video>");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1752
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1753
           if (options.hasOwnProperty("width"))
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1754
             IriSP.jQuery("#" + containerDiv).css("width", options.width);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1755
           
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1756
           if (options.hasOwnProperty("height"))
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1757
             IriSP.jQuery("#" + containerDiv).css("height", options.height);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1758
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1759
           pop = Popcorn("#" + tmpId);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1760
        break;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1761
        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1762
      case "jwplayer":
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1763
          var opts = IriSP.jQuery.extend({}, options);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1764
          delete opts.container;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1765
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1766
          if (options.provider === "rtmp") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1767
            /* exit if we can't access the metadata */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1768
            if (typeof(IriSP.__jsonMetadata) === "undefined") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1769
                break;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1770
            };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1771
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1772
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1773
            // the json format is totally illogical
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1774
            opts.streamer = IriSP.__jsonMetadata["medias"][0]["meta"]["item"]["value"];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1775
            var source = IriSP.__jsonMetadata["medias"][0]["href"];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1776
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1777
            // the source if a full url but jwplayer wants an url relative to the
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1778
            // streamer url, so we've got to remove the common part.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1779
            opts.file = source.slice(opts.streamer.length);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1780
          } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1781
            /* other providers type, video for instance -
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1782
               pass everything as is */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1783
          }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1784
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1785
          pop = IriSP.PopcornReplacement.jwplayer("#" + containerDiv, opts);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1786
        break;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1787
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1788
      case "youtube":
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1789
          var opts = IriSP.jQuery.extend({}, options);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1790
          delete opts.container;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1791
          opts.controls = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1792
          opts.autostart = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1793
          templ = "width: {{width}}px; height: {{height}}px;";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1794
          var str = Mustache.to_html(templ, {width: opts.width, height: opts.height});    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1795
          // Popcorn.youtube wants us to specify the size of the player in the style attribute of its container div.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1796
          IriSP.jQuery("#" + containerDiv).attr("style", str);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1797
          
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1798
          pop = Popcorn.youtube("#" + containerDiv, opts.video, opts);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1799
        break;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1800
        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1801
      default:
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1802
        pop = undefined;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1803
    };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1804
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1805
    return pop;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1806
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1807
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1808
IriSP.configureWidgets = function (popcornInstance, layoutManager, guiOptions) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1809
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1810
  var serialFactory = new IriSP.SerializerFactory(IriSP.__dataloader);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1811
  var params = {width: guiOptions.width, height: guiOptions.height};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1812
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1813
  var ret_widgets = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1814
  var index;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1815
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1816
  for (index = 0; index < guiOptions.widgets.length; index++) {    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1817
    var widgetConfig = guiOptions.widgets[index];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1818
    var widget = IriSP.instantiateWidget(popcornInstance, serialFactory, layoutManager, widgetConfig);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1819
    ret_widgets.push(widget);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1820
   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1821
  };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1822
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1823
  return ret_widgets;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1824
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1825
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1826
IriSP.configureModules = function (popcornInstance, modulesList) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1827
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1828
  var serialFactory = new IriSP.SerializerFactory(IriSP.__dataloader);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1829
  var ret_modules = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1830
  var index;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1831
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1832
  for (index = 0; index < modulesList.length; index++) {    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1833
    var moduleConfig = modulesList[index];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1834
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1835
    var serializer = serialFactory.getSerializer(moduleConfig.metadata);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1836
    var module = new IriSP[moduleConfig.type](popcornInstance, moduleConfig, serializer);    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1837
    ret_modules.push(module);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1838
  };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1839
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1840
  return ret_modules;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1841
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1842
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1843
IriSP.instantiateWidget = function(popcornInstance, serialFactory, layoutManager, widgetConfig) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1844
    /* create div returns us a container for the widget and a spacer */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1845
    var ret = layoutManager.createDiv(widgetConfig.type);        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1846
    var container = ret[0];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1847
    var spacer = ret[1];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1848
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1849
    var arr = IriSP.jQuery.extend({}, widgetConfig);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1850
    arr.container = container;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1851
    arr.spacer = spacer;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1852
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1853
    var serializer = serialFactory.getSerializer(widgetConfig.metadata);    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1854
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1855
    if (typeof serializer == "undefined")   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1856
      debugger;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1857
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1858
    // instantiate the object passed as a string
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1859
    var widget = new IriSP[widgetConfig.type](popcornInstance, arr, serializer);    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1860
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1861
    if (widgetConfig.hasOwnProperty("requires")) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1862
      // also create the widgets this one depends on.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1863
      // the dependency widget is available in the parent widget context as
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1864
      // this.WidgetName (for instance, this.TipWidget);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1865
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1866
      var i = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1867
      for(i = 0; i < widgetConfig.requires.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1868
        var widgetName = widgetConfig.requires[i]["type"];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1869
        widget[widgetName] = IriSP.instantiateWidget(popcornInstance, serialFactory, layoutManager, widgetConfig.requires[i]);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1870
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1871
    }       
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1872
     
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1873
    serializer.sync(IriSP.wrap(widget, function() { this.draw(); }));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1874
    return widget;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1875
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1876
/* mediafragment module */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1877
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1878
IriSP.MediaFragment = function(Popcorn, config, Serializer) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1879
  IriSP.Module.call(this, Popcorn, config, Serializer);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1880
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1881
  this.mutex = false; /* a mutex because we access the url from two different functions */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1882
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1883
  this._Popcorn.listen( "loadedmetadata", IriSP.wrap(this, IriSP.MediaFragment.advanceTime));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1884
  this._Popcorn.listen( "pause", IriSP.wrap(this, IriSP.MediaFragment.updateTime));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1885
  this._Popcorn.listen( "seeked", IriSP.wrap(this, IriSP.MediaFragment.updateTime));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1886
  this._Popcorn.listen( "IriSP.PolemicTweet.click", IriSP.wrap(this, IriSP.MediaFragment.updateAnnotation));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1887
  this._Popcorn.listen( "IriSP.SegmentsWidget.click", IriSP.wrap(this, IriSP.MediaFragment.updateAnnotation));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1888
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1889
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1890
IriSP.MediaFragment.advanceTime = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1891
             var url = window.location.href;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1892
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1893
              if ( url.split( "#" )[ 1 ] != null ) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1894
                  pageoffset = url.split( "#" )[1];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1895
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1896
                  if ( pageoffset.substring(0, 2) === "t=") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1897
                    // timecode 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1898
                    if ( pageoffset.substring( 2 ) != null ) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1899
                    var offsettime = pageoffset.substring( 2 );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1900
                    this._Popcorn.currentTime( parseFloat( offsettime ) );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1901
                    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1902
                  } else if ( pageoffset.substring(0, 2) === "a=") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1903
                    // annotation
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1904
                    var annotationId = pageoffset.substring( 2 );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1905
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1906
                    // there's no better way than that because
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1907
                    // of possible race conditions
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1908
                    this._serializer.sync(IriSP.wrap(this, function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1909
                          IriSP.MediaFragment.lookupAnnotation.call(this, annotationId); 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1910
                          }));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1911
                  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1912
              }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1913
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1914
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1915
IriSP.MediaFragment.updateTime = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1916
  if (this.mutex === true) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1917
    return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1918
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1919
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1920
  var history = window.history;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1921
  if ( !history.pushState ) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1922
    return false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1923
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1924
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1925
  splitArr = window.location.href.split( "#" )
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1926
  history.replaceState( {}, "", splitArr[0] + "#t=" + this._Popcorn.currentTime().toFixed( 2 ) );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1927
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1928
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1929
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1930
IriSP.MediaFragment.updateAnnotation = function(annotationId) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1931
  var _this = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1932
  this.mutex = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1933
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1934
  var history = window.history;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1935
  if ( !history.pushState ) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1936
    return false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1937
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1938
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1939
  splitArr = window.location.href.split( "#" )
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1940
  history.replaceState( {}, "", splitArr[0] + "#a=" + annotationId);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1941
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1942
  window.setTimeout(function() { _this.mutex = false }, 50);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1943
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1944
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1945
// lookup and seek to the beginning of an annotation
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1946
IriSP.MediaFragment.lookupAnnotation = function(annotationId) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1947
  var annotation = undefined;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1948
  var annotations = this._serializer._data.annotations;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1949
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1950
  var i;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1951
  for (i = 0; i < annotations.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1952
      if (annotations[i].id === annotationId) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1953
        annotation = annotations[i];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1954
        break;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1955
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1956
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1957
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1958
  if (typeof(annotation) !== "undefined") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1959
    this._Popcorn.currentTime(annotation.begin / 1000);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1960
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1961
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1962
IriSP.AnnotationsWidget = function(Popcorn, config, Serializer) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1963
  IriSP.Widget.call(this, Popcorn, config, Serializer);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1964
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1965
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1966
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1967
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1968
IriSP.AnnotationsWidget.prototype = new IriSP.Widget();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1969
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1970
IriSP.AnnotationsWidget.prototype.clear = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1971
    this.selector.find(".Ldt-SaTitle").text("");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1972
    this.selector.find(".Ldt-SaDescription").text("");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1973
    this.selector.find(".Ldt-SaKeywordText").text("");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1974
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1975
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1976
IriSP.AnnotationsWidget.prototype.displayAnnotation = function(annotation) {   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1977
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1978
    var title = annotation.content.title;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1979
    var description = annotation.content.description;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1980
    var keywords =  "" // FIXME;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1981
    var begin = +annotation.begin / 1000;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1982
    var end = +annotation.end / 1000;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1983
    var duration = +this._serializer.currentMedia().meta["dc:duration"];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1984
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1985
    var title_templ = "{{title}} - ( {{begin}} - {{end}} )";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1986
    var endstr = Mustache.to_html(title_templ, {title: title, begin: IriSP.secondsToTime(begin), end: IriSP.secondsToTime(end)});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1987
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1988
    this.selector.find(".Ldt-SaTitle").text(endstr);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1989
    this.selector.find(".Ldt-SaDescription").text(description);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1990
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1991
    // update sharing buttons
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1992
    var defaults = IriSP.widgetsDefaults.AnnotationsWidget;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1993
    var text = defaults.share_text;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1994
    var fb_link = defaults.fb_link;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1995
    var tw_link = defaults.tw_link;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1996
    var gplus_link = defaults.gplus_link;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1997
    var url = document.location.href + "#a=" + annotation.id;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1998
    this.selector.find(".Ldt-fbShare").attr("href", fb_link + IriSP.encodeURI(text) + IriSP.encodeURI(url));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  1999
    this.selector.find(".Ldt-TwShare").attr("href", tw_link + IriSP.encodeURI(text) + IriSP.encodeURI(url));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2000
    this.selector.find(".Ldt-GplusShare").attr("href", fb_link + IriSP.encodeURI(text) + IriSP.encodeURI(url));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2001
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2002
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2003
IriSP.AnnotationsWidget.prototype.clearWidget = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2004
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2005
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2006
    /* retract the pane between two annotations */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2007
    this.selector.find(".Ldt-SaTitle").text("");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2008
    this.selector.find(".Ldt-SaDescription").text("");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2009
    this.selector.find(".Ldt-SaKeywordText").html("");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2010
    this.selector.find(".Ldt-ShowAnnotation").slideUp();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2011
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2012
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2013
IriSP.AnnotationsWidget.prototype.draw = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2014
  var _this = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2015
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2016
  var annotationMarkup = IriSP.templToHTML(IriSP.annotationWidget_template);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2017
	this.selector.append(annotationMarkup);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2018
  var view;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2019
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2020
  if (typeof(this._serializer._data.views) !== "undefined" && this._serializer._data.views !== null)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2021
     view = this._serializer._data.views[0];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2022
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2023
  var view_type = "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2024
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2025
  if(typeof(view) !== "undefined" && typeof(view.annotation_types) !== "undefined" && view.annotation_types.length > 1) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2026
          view_type = view.annotation_types[0];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2027
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2028
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2029
  var annotations = this._serializer._data.annotations;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2030
  var i;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2031
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2032
	for (i in annotations) {    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2033
    var annotation = annotations[i];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2034
    var begin = Math.round((+ annotation.begin) / 1000);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2035
    var end = Math.round((+ annotation.end) / 1000);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2036
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2037
    if (view_type != "" && typeof(annotation.meta) !== "undefined" && typeof(annotation.meta["id-ref"]) !== "undefined"
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2038
          && annotation.meta["id-ref"] != view_type) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2039
        continue;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2040
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2041
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2042
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2043
    var conf = {start: begin, end: end, 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2044
                onStart: 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2045
                       function(annotation) { 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2046
                        return function() { 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2047
                            _this.displayAnnotation(annotation); 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2048
                          
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2049
                        } }(annotation),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2050
                onEnd: 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2051
                       function() { _this.clearWidget.call(_this); }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2052
                };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2053
    this._Popcorn = this._Popcorn.code(conf);                                             
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2054
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2055
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2056
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2057
IriSP.ArrowWidget = function(Popcorn, config, Serializer) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2058
  IriSP.Widget.call(this, Popcorn, config, Serializer);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2059
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2060
  this._oldAnnotation = null;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2061
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2062
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2063
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2064
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2065
IriSP.ArrowWidget.prototype = new IriSP.Widget();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2066
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2067
IriSP.ArrowWidget.prototype.clear = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2068
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2069
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2070
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2071
IriSP.ArrowWidget.prototype.clearWidget = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2072
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2073
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2074
IriSP.ArrowWidget.prototype.draw = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2075
  var templ = Mustache.to_html(IriSP.arrowWidget_template, {});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2076
  this.selector.append(templ);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2077
  this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.timeUpdateHandler));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2078
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2079
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2080
IriSP.ArrowWidget.prototype.timeUpdateHandler = function(percents) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2081
  var currentTime = this._Popcorn.currentTime();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2082
  var currentAnnotation = this._serializer.currentAnnotations(currentTime)[0]; // FIXME : use the others ?
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2083
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2084
  /* move the arrow only if the current annotation changes */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2085
  if (currentAnnotation != this._oldAnnotation) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2086
    var begin = (+ currentAnnotation.begin) / 1000;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2087
    var end = (+ currentAnnotation.end) / 1000;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2088
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2089
    var duration = +this._serializer.currentMedia().meta["dc:duration"] / 1000;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2090
    var middle_time = (begin + end) / 2;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2091
    var percents = Math.floor((middle_time / duration) * 100);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2092
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2093
    // we need to apply a fix because the arrow has a certain length
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2094
    // it's half the length of the arrow (27 / 2). We need to convert
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2095
    // it in percents though.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2096
    var totalWidth = this.selector.width();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2097
    var correction = ((27 / 2) / totalWidth) * 100;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2098
    var corrected_percents = percents - correction;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2099
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2100
    /* don't move out of the screen */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2101
    if (corrected_percents <= 0)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2102
      corrected_percents = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2103
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2104
    this.selector.children(".Ldt-arrowWidget").animate({"left" : corrected_percents + "%"});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2105
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2106
    this._oldAnnotation = currentAnnotation;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2107
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2108
}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2109
IriSP.PlayerWidget = function(Popcorn, config, Serializer) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2110
  IriSP.Widget.call(this, Popcorn, config, Serializer);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2111
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2112
  this._searchBlockOpen = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2113
  this._searchLastValue = "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2114
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2115
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2116
IriSP.PlayerWidget.prototype = new IriSP.Widget();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2117
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2118
IriSP.PlayerWidget.prototype.draw = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2119
  var self = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2120
  var width = this.width;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2121
	var height = this.height;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2122
	var heightS = this.height-20;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2123
	  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2124
	var Player_templ = Mustache.to_html(IriSP.player_template, {"share_template" : IriSP.share_template});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2125
  this.selector.append(Player_templ);		
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2126
	
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2127
  this.selector.children(".Ldt-controler").show();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2128
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2129
  // handle clicks by the user on the video.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2130
  this._Popcorn.listen("play", IriSP.wrap(this, this.playButtonUpdater));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2131
  this._Popcorn.listen("pause", IriSP.wrap(this, this.playButtonUpdater));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2132
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2133
  this._Popcorn.listen("volumechange", IriSP.wrap(this, this.muteButtonUpdater));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2134
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2135
  this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.timeDisplayUpdater));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2136
  this._Popcorn.listen("IriSP.search.matchFound", IriSP.wrap(this, this.searchMatch));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2137
  this._Popcorn.listen("IriSP.search.noMatchFound", IriSP.wrap(this, this.searchNoMatch));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2138
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2139
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2140
  this.selector.find(".Ldt-CtrlPlay").click(function() { self.playHandler.call(self); });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2141
  this.selector.find(".Ldt-CtrlNext").click(function() { });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2142
  this.selector.find(".Ldt-CtrlSearch").click(function() { self.searchButtonHandler.call(self); });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2143
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2144
  this.selector.find('.Ldt-CtrlSound').click(function() { self.muteHandler.call(self); } );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2145
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2146
  this.selector.find(".Ldt-CtrlPlay").attr( "style", "background-color:#CD21C24;" );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2147
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2148
  var searchButtonPos = this.selector.find(".Ldt-CtrlSearch").position();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2149
  var searchBox = Mustache.to_html(IriSP.search_template, {margin_left : searchButtonPos.left + "px"});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2150
  this.selector.append(searchBox);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2151
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2152
  // trigger an IriSP.PlayerWidget.MouseOver to the widgets that are interested (i.e : sliderWidget)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2153
  this.selector.hover(function() { self._Popcorn.trigger("IriSP.PlayerWidget.MouseOver"); }, 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2154
                      function() { self._Popcorn.trigger("IriSP.PlayerWidget.MouseOut"); });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2155
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2156
  this.muteButtonUpdater(); /* some player - jwplayer notable - save the state of the mute button between sessions */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2157
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2158
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2159
/* Update the elasped time div */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2160
IriSP.PlayerWidget.prototype.timeDisplayUpdater = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2161
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2162
  if (this._previousSecond === undefined)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2163
    this._previousSecond = this._Popcorn.roundTime();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2164
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2165
  else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2166
    /* we're still in the same second, so it's not necessary to update time */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2167
    if (this._Popcorn.roundTime() == this._previousSecond)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2168
      return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2169
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2170
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2171
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2172
  // we get it at each call because it may change.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2173
  var duration = +this._serializer.currentMedia().meta["dc:duration"] / 1000; 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2174
  var totalTime = IriSP.secondsToTime(duration);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2175
  var elapsedTime = IriSP.secondsToTime(this._Popcorn.currentTime());
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2176
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2177
  this.selector.find(".Ldt-ElapsedTime").html(elapsedTime.toString());
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2178
  this.selector.find(".Ldt-TotalTime").html(totalTime.toString());
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2179
  this._previousSecond = this._Popcorn.roundTime();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2180
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2181
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2182
/* update the icon of the button - separate function from playHandler
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2183
   because in some cases (for instance, when the user directly clicks on
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2184
   the jwplayer window) we have to change the icon without playing/pausing
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2185
*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2186
IriSP.PlayerWidget.prototype.playButtonUpdater = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2187
  var status = this._Popcorn.media.paused;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2188
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2189
  if ( status == true ){        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2190
    this.selector.find(".Ldt-CtrlPlay").attr("title", "Play");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2191
   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2192
    // we use templToHTML because it has some predefined
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2193
    // vars like where to get the images
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2194
    var templ = IriSP.templToHTML("url({{img_dir}}/play_sprite.png)");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2195
    this.selector.find(".Ldt-CtrlPlay").css("background-image", templ);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2196
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2197
  } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2198
    this.selector.find(".Ldt-CtrlPlay").attr("title", "Pause");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2199
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2200
    // we use templToHTML because it has some predefined
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2201
    // vars like where to get the images
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2202
    var templ = IriSP.templToHTML("url({{img_dir}}/pause_sprite.png)");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2203
    this.selector.find(".Ldt-CtrlPlay").css("background-image", templ);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2204
  }  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2205
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2206
  return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2207
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2208
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2209
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2210
IriSP.PlayerWidget.prototype.playHandler = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2211
  var status = this._Popcorn.media.paused;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2212
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2213
  if ( status == true ){        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2214
    this._Popcorn.play();   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2215
  } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2216
    this._Popcorn.pause();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2217
  }  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2218
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2219
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2220
IriSP.PlayerWidget.prototype.muteHandler = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2221
  if (!this._Popcorn.muted()) {    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2222
      this._Popcorn.mute(true);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2223
    } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2224
      this._Popcorn.mute(false);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2225
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2226
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2227
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2228
IriSP.PlayerWidget.prototype.muteButtonUpdater = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2229
  var status = this._Popcorn.media.muted;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2230
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2231
  if ( status == true ){        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2232
    this.selector.find(".Ldt-CtrlSound").attr("title", "Unmute");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2233
   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2234
    // we use templToHTML because it has some predefined
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2235
    // vars like where to get the images
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2236
    var templ = IriSP.templToHTML("url({{img_dir}}/sound_sprite.png)");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2237
    this.selector.find(".Ldt-CtrlSound").css("background-image", templ);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2238
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2239
  } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2240
    this.selector.find(".Ldt-CtrlSound").attr("title", "Mute");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2241
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2242
    // we use templToHTML because it has some predefined
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2243
    // vars like where to get the images
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2244
    var templ = IriSP.templToHTML("url({{img_dir}}/mute_sprite.png)");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2245
    this.selector.find(".Ldt-CtrlSound").css("background-image", templ);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2246
  }  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2247
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2248
  return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2249
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2250
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2251
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2252
IriSP.PlayerWidget.prototype.searchButtonHandler = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2253
    var self = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2254
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2255
    /* show the search field if it is not shown */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2256
  	if ( this._searchBlockOpen == false ) {      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2257
      this.selector.find(".LdtSearch").show(100);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2258
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2259
      this.selector.find(".LdtSearchInput").css('background-color','#fff');
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2260
      this.selector.find(".LdtSearchInput").focus();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2261
      this.selector.find(".LdtSearchInput").attr('value', this._searchLastValue);      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2262
      this._Popcorn.trigger("IriSP.search", this._searchLastValue); // trigger the search to make it more natural.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2263
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2264
      this._searchBlockOpen = true;           
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2265
      this.selector.find(".LdtSearchInput").bind('keyup', null, function() { self.searchHandler.call(self); } );
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2266
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2267
      // we need this variable because some widget can find a match in
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2268
      // their data while at the same time other's don't. As we want the
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2269
      // search field to become green when there's a match, we need a 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2270
      // variable to remember that we had one.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2271
      this._positiveMatch = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2272
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2273
      // tell the world the field is open
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2274
      this._Popcorn.trigger("IriSP.search.open");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2275
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2276
	} else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2277
      this._searchLastValue = this.selector.find(".LdtSearchInput").attr('value');
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2278
      this.selector.find(".LdtSearchInput").attr('value','');
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2279
      this.selector.find(".LdtSearch").hide(100);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2280
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2281
      // unbind the watcher event.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2282
      this.selector.find(".LdtSearchInput").unbind('keypress set');
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2283
      this._searchBlockOpen = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2284
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2285
      this._positiveMatch = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2286
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2287
      this._Popcorn.trigger("IriSP.search.closed");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2288
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2289
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2290
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2291
/* this handler is called whenever the content of the search
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2292
   field changes */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2293
IriSP.PlayerWidget.prototype.searchHandler = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2294
  this._searchLastValue = this.selector.find(".LdtSearchInput").attr('value');
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2295
  this._positiveMatch = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2296
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2297
  // do nothing if the search field is empty, instead of highlighting everything.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2298
  if (this._searchLastValue == "") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2299
    this._Popcorn.trigger("IriSP.search.cleared");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2300
    this.selector.find(".LdtSearchInput").css('background-color','');
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2301
  } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2302
    this._Popcorn.trigger("IriSP.search", this._searchLastValue);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2303
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2304
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2305
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2306
/*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2307
  handler for the IriSP.search.found message, which is sent by some views when they
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2308
  highlight a match.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2309
*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2310
IriSP.PlayerWidget.prototype.searchMatch = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2311
  this._positiveMatch = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2312
  this.selector.find(".LdtSearchInput").css('background-color','#e1ffe1');
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2313
}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2314
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2315
/* the same, except that no value could be found */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2316
IriSP.PlayerWidget.prototype.searchNoMatch = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2317
  if (this._positiveMatch !== true)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2318
    this.selector.find(".LdtSearchInput").css('background-color', "#d62e3a");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2319
}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2320
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2321
/* 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2322
 *   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2323
 *  Copyright 2010 Institut de recherche et d'innovation 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2324
 *  contributor(s) : Samuel Huron 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2325
 *   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2326
 *  contact@iri.centrepompidou.fr
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2327
 *  http://www.iri.centrepompidou.fr 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2328
 *   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2329
 *  This software is a computer program whose purpose is to show and add annotations on a video .
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2330
 *  This software is governed by the CeCILL-C license under French law and
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2331
 *  abiding by the rules of distribution of free software. You can  use, 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2332
 *  modify and/ or redistribute the software under the terms of the CeCILL-C
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2333
 *  license as circulated by CEA, CNRS and INRIA at the following URL
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2334
 *  "http://www.cecill.info". 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2335
 *  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2336
 *  The fact that you are presently reading this means that you have had
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2337
 *  knowledge of the CeCILL-C license and that you accept its terms.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2338
*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2339
// CHART TIMELINE / VERSION PROTOTYPE  ::
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2340
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2341
IriSP.PolemicWidget = function(Popcorn, config, Serializer) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2342
  IriSP.Widget.call(this, Popcorn, config, Serializer);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2343
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2344
  this.userPol    = new Array();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2345
  this.userNoPol  = new Array();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2346
  this.userst      = new Array();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2347
  this.numberOfTweet = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2348
  this.Users;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2349
  this.TweetPolemic;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2350
  this.yMax        = this.height; 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2351
  this.PaperSlider;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2352
  this.heightOfChart;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2353
  this.tweets  = new Array();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2354
  this.svgElements = {};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2355
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2356
  // Make and define the Raphael area
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2357
  this.paper = Raphael(document.getElementById(this._id), config.width, config.height);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2358
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2359
  this.oldSearchMatches = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2360
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2361
  // event handlers
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2362
  this._Popcorn.listen("IriSP.search", IriSP.wrap(this, function(searchString) { this.searchHandler(searchString); }));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2363
  this._Popcorn.listen("IriSP.search.closed", IriSP.wrap(this, this.searchFieldClosedHandler));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2364
  this._Popcorn.listen("IriSP.search.cleared", IriSP.wrap(this, this.searchFieldClearedHandler));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2365
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2366
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2367
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2368
IriSP.PolemicWidget.prototype = new IriSP.Widget();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2369
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2370
IriSP.PolemicWidget.prototype.draw = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2371
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2372
    // variable 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2373
    // yMax
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2374
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2375
    var self = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2376
    var yCoef        = 2;             // coef for height of 1 tweet 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2377
    var frameSize     = 5;             // frame size 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2378
    var margin         = 1;            // marge between frame
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2379
    var lineSize      = this.width;        // timeline pixel width 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2380
    var nbrframes     = lineSize/frameSize;     // frame numbers
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2381
    var numberOfTweet   = 0;            // number of tweet overide later 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2382
    var duration      = +this._serializer.currentMedia().meta["dc:duration"];      // timescale width 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2383
    var frameLength   = lineSize / frameSize;    // frame timescale  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2384
    var timeline;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2385
    var colors  = new Array("","#1D973D","#C5A62D","#CE0A15","#036AAE","#585858");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2386
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2387
    // array 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2388
    //var tweets  = new Array();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2389
    var element = new Array();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2390
    var cluster = new Array();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2391
    var frames  = new Array(frameLength);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2392
    var slices  = new Array();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2393
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2394
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2395
    // Classes =======================================================================
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2396
    var Frames = function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2397
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2398
      var Myclusters;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2399
      var x;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2400
      var y;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2401
      var width;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2402
      var height;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2403
    };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2404
    Frames = function(json){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2405
      // make my clusters
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2406
      // ou Frame vide 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2407
    };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2408
    Frames.prototype.draw = function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2409
    };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2410
    Frames.prototype.zoom = function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2411
    };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2412
    Frames.prototype.inside = function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2413
    };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2414
    var Clusters = function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2415
      var Object;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2416
      var yDist;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2417
      var x;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2418
      var y;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2419
      var width;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2420
      var height;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2421
    };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2422
    Clusters = function(json){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2423
      // make my object
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2424
    };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2425
    var Tweet = function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2426
    };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2427
    // Classes =======================================================================
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2428
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2429
    // Refactoring (parametere) ************************************************************
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2430
    // color translastion
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2431
    var qTweet_0  =0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2432
    var qTweet_Q  =0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2433
    var qTweet_REF=0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2434
    var qTweet_OK =0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2435
    var qTweet_KO =0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2436
    function colorTranslation(value){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2437
      if(value == "Q"){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2438
        qTweet_Q+=1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2439
        return 2;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2440
      }else if(value =="REF"){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2441
        qTweet_REF+=1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2442
        return 4;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2443
      }else if(value =="OK"){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2444
        qTweet_OK+=1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2445
        return 1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2446
      }else if(value =="KO"){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2447
        qTweet_KO+=1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2448
        return 3;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2449
      }else if(value ==""){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2450
        qTweet_0+=1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2451
        return 5;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2452
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2453
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2454
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2455
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2456
      this._serializer.sync(function(data) { loaded_callback.call(self, data) });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2457
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2458
      function loaded_callback (json) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2459
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2460
        // get current view (the first ???)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2461
        view = json.views[0];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2462
        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2463
        // the tweets are by definition of the second annotation type FIXME ?
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2464
        tweet_annot_type = null;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2465
        if(typeof(view.annotation_types) !== "undefined" && view.annotation_types.length > 1) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2466
          tweet_annot_type = view.annotation_types[1];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2467
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2468
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2469
      for(var i = 0; i < json.annotations.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2470
        var item = json.annotations[i];        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2471
        var MyTime  = Math.floor(item.begin/duration*lineSize);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2472
        var Myframe = Math.floor(MyTime/lineSize*frameLength);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2473
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2474
        if (typeof(item.meta) !== "undefined" 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2475
          && typeof(item.meta["id-ref"]) !== "undefined"
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2476
          && item.meta["id-ref"] === tweet_annot_type) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2477
            
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2478
          var MyTJson = JSON.parse(item.meta['dc:source']['content']);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2479
          
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2480
            if (item.content['polemics'] != undefined 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2481
            && item.content['polemics'][0] != null) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2482
            
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2483
              // a tweet can have many polemics at the same time.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2484
              for(var j=0; j<item.content['polemics'].length; j++){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2485
                  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2486
                  this.tweets[numberOfTweet] = {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2487
                        id:i,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2488
                        qualification:colorTranslation(item.content['polemics'][j]),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2489
                        yIndicator:MyTime,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2490
                        yframe:Myframe,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2491
                        title:item.content['title'],
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2492
                        timeframe:item.begin,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2493
                        userId: MyTJson.id,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2494
                        userScreenName: MyTJson.screen_name,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2495
                        tsource:MyTJson,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2496
                        cinecast_id: item.id
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2497
                        };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2498
                  numberOfTweet+=1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2499
                  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2500
              }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2501
          }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2502
          else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2503
            this.tweets[numberOfTweet] = {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2504
                  id:i,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2505
                  qualification:colorTranslation(""),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2506
                  yIndicator:MyTime,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2507
                  yframe:Myframe,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2508
                  title:item.content['title'],
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2509
                  timeframe:item.begin,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2510
                  userId: MyTJson.id,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2511
                  userScreenName: MyTJson.screen_name,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2512
                  tsource:MyTJson,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2513
                  cinecast_id: item.id
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2514
            };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2515
            numberOfTweet+=1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2516
          }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2517
          
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2518
        } 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2519
      };  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2520
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2521
       DrawTweets.call (this); // FIXME: ugly.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2522
       
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2523
      };      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2524
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2525
    // tweet Drawing (in raphael) 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2526
    function DrawTweets (){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2527
    // GROUPES TWEET ============================================
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2528
    // Count nbr of cluster and tweet in a frame an save int in "frames"
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2529
      numberOfTweet = this.tweets.length;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2530
      for(var i=0; i<nbrframes; i++) {  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2531
        for(var j=0; j<numberOfTweet; j++) {  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2532
        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2533
          if (i==this.tweets[j].yframe){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2534
            
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2535
            var k = this.tweets[j].qualification;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2536
            
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2537
            // make array for frame cluster
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2538
            if(frames[i]==undefined){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2539
              frames[i] = {id:i,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2540
                     qualifVol:new Array(),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2541
                     mytweetsID:new Array()
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2542
                    };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2543
            }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2544
            // add my tweet to frame
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2545
            frames[i].mytweetsID.push(this.tweets[j]);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2546
            
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2547
            // count opinion by frame
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2548
            if( frames[i].qualifVol[k] == undefined){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2549
              frames[i].qualifVol[k] = 1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2550
            }else{
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2551
              frames[i].qualifVol[k] += 1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2552
            }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2553
            
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2554
          }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2555
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2556
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2557
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2558
    // GROUPES TWEET ============================================    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2559
    // max of tweet by Frame 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2560
      var max = 0; 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2561
      for(var i = 0; i < nbrframes; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2562
        var moy  = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2563
        for (var j = 0; j < 6; j++) {    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2564
          if (frames[i] != undefined) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2565
            if (frames[i].qualifVol[j] != undefined) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2566
              moy += frames[i].qualifVol[j];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2567
            }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2568
          }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2569
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2570
        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2571
        if (moy > max) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2572
          max = moy;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2573
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2574
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2575
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2576
      var tweetDrawed = new Array();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2577
      var TweetHeight = 5;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2578
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2579
      // DRAW  TWEETS ============================================
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2580
      for(var i = 0; i < nbrframes; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2581
        var addEheight = 5;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2582
        if (frames[i] != undefined){                
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2583
          // by type 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2584
          
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2585
          for (var j = 6; j > -1; j--) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2586
            if (frames[i].qualifVol[j] != undefined) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2587
              // show tweet by type 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2588
              for (var k = 0; k < frames[i].mytweetsID.length; k++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2589
              
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2590
                if (frames[i].mytweetsID[k].qualification == j) {                
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2591
                  var x = i * frameSize;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2592
                  var y = this.heightmax - addEheight;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2593
                  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2594
                  if (this.yMax > y) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2595
                    this.yMax = y;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2596
                  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2597
                  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2598
                  var e = this.paper.rect(x, y, frameSize - margin, TweetHeight /* height */)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2599
                                    .attr({stroke:"#00","stroke-width":0.1,  fill: colors[j]});  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2600
                  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2601
                  addEheight += TweetHeight;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2602
                  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2603
                  e.color = colors[j];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2604
                  e.time = frames[i].mytweetsID[k].timeframe;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2605
                  e.title = frames[i].mytweetsID[k].title;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2606
                  e.id = frames[i].mytweetsID[k].cinecast_id;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2607
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2608
                  this.svgElements[e.id] = e;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2609
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2610
                  /*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2611
                  e.mouseover(function(element) { return function (event) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2612
                        // event.clientX and event.clientY are to raphael what event.pageX and pageY are to jquery.                        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2613
                        self.TooltipWidget.show.call(self.TooltipWidget, element.title, element.attr("fill"), event.clientX - 106, event.clientY - 160);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2614
                        element.displayed = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2615
                  }}(e)).mouseout(function(element) { return function () {                          
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2616
                          self.TooltipWidget.hide.call(self.TooltipWidget);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2617
                  }}(e)).mousedown(function () {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2618
                    self._Popcorn.currentTime(this.time/1000);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2619
                    self._Popcorn.trigger("IriSP.PolemicTweet.click", this.id); 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2620
                  });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2621
                  */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2622
                  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2623
                  IriSP.jQuery(e.node).mouseenter(function(element) { return function (event) {                        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2624
                        // event.clientX and event.clientY are to raphael what event.pageX and pageY are to jquery.                        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2625
                        self.TooltipWidget.show.call(self.TooltipWidget, element.title, element.attr("fill"), event.pageX - 106, event.pageY - 160);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2626
                        element.displayed = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2627
                  }}(e)).mousedown(function(element) { return function () {                    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2628
                    self._Popcorn.currentTime(element.time/1000);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2629
                    self._Popcorn.trigger("IriSP.PolemicTweet.click", element.id); 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2630
                    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2631
                  }(e));                  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2632
                  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2633
                  IriSP.jQuery(e.node).attr('id', 't' + k + '');
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2634
                  IriSP.jQuery(e.node).attr('title', frames[i].mytweetsID[k].title);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2635
                  IriSP.jQuery(e.node).attr('begin',  frames[i].mytweetsID[k].timeframe);                  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2636
                }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2637
              }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2638
            }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2639
          }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2640
        }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2641
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2642
      }    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2643
      // DRAW UI :: resize border and bgd      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2644
      this.paperBackground = this.paper.rect(0, 0, this.width, this.heightmax).attr({fill:"#F8F8F8","stroke-width":0.1,opacity: 1});  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2645
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2646
      // outer borders
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2647
      this.outerBorders   = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2648
      this.outerBorders.push(this.paper.rect(0, this.height - 1, this.width, 1).attr({fill:"#ababab",stroke: "none",opacity: 1}));  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2649
      this.outerBorders.push(this.paper.rect(0, 0, this.width, 1).attr({fill:"#ababab",stroke: "none",opacity: 1}));  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2650
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2651
      // inner borders
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2652
      this.innerBorders   = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2653
      this.innerBorders.push(this.paper.rect(1, this.height - 2, this.width, 1).attr({fill:"#efefef",stroke: "none",opacity: 1}));  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2654
      this.innerBorders.push(this.paper.rect(1, 1, this.width, 1).attr({fill:"#efefef",stroke: "none",opacity: 1}));  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2655
      this.innerBorders.push(this.paper.rect(1, 1, 1, this.height - 2).attr({fill:"#d0d1d1",stroke: "none",opacity: 0.8}));  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2656
      this.innerBorders.push(this.paper.rect(this.width - 2, 1, 1, this.height - 2).attr({fill:"#efefef",stroke: "none",opacity: 1}));  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2657
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2658
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2659
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2660
      this.paperSlider   = this.paper.rect(0, 0, 0, this.heightmax).attr({fill:"#D4D5D5", stroke: "none", opacity: 1});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2661
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2662
      // the small white line displayed over the slider.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2663
      this.sliderTip = this.paper.rect(0, 0, 1, this.heightmax).attr({fill:"#fc00ff", stroke: "none", opacity: 1});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2664
      // decalage 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2665
      // tweetSelection = this.paper.rect(-100,-100,5,5).attr({fill:"#fff",stroke: "none",opacity: 1});  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2666
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2667
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2668
      this.paperSlider.toBack();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2669
      this.paperBackground.toBack();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2670
      this.sliderTip.toFront();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2671
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2672
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2673
    this.selector.mouseleave(IriSP.wrap(this, function() { self.TooltipWidget.hide.call(self.TooltipWidget); }));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2674
    this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.sliderUpdater));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2675
}
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2676
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2677
IriSP.PolemicWidget.prototype.sliderUpdater = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2678
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2679
    var time = +this._Popcorn.currentTime();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2680
    var duration = +this._serializer.currentMedia().meta["dc:duration"];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2681
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2682
    this.paperSlider.attr("width", time * (this.width / (duration / 1000)));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2683
        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2684
    this.sliderTip.attr("x", time * (this.width / (duration / 1000)));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2685
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2686
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2687
IriSP.PolemicWidget.prototype.searchHandler = function(searchString) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2688
  if (searchString == "")
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2689
    return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2690
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2691
  var matches = this._serializer.searchTweetsOccurences(searchString);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2692
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2693
  if (IriSP.countProperties(matches) > 0) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2694
    this._Popcorn.trigger("IriSP.search.matchFound");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2695
  } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2696
    this._Popcorn.trigger("IriSP.search.noMatchFound");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2697
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2698
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2699
  for (var id in matches) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2700
    if (this.svgElements.hasOwnProperty(id)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2701
      var e = this.svgElements[id];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2702
      this.svgElements[id].attr({fill: "#fc00ff"});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2703
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2704
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2705
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2706
  // clean up the blocks that were in the previous search
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2707
  // but who aren't in the current one.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2708
  for (var id in this.oldSearchMatches) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2709
    if (!matches.hasOwnProperty(id)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2710
      var e = this.svgElements[id];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2711
      e.attr({fill: e.color});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2712
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2713
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2714
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2715
  this.oldSearchMatches = matches;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2716
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2717
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2718
IriSP.PolemicWidget.prototype.searchFieldClearedHandler = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2719
  // clean up the blocks that were in the previous search
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2720
  // but who aren't in the current one.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2721
  for (var id in this.oldSearchMatches) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2722
      var e = this.svgElements[id];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2723
      e.attr({fill: e.color});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2724
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2725
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2726
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2727
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2728
IriSP.PolemicWidget.prototype.searchFieldClosedHandler = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2729
  // clean up the blocks that were in the previous search
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2730
  // but who aren't in the current one.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2731
  for (var id in this.oldSearchMatches) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2732
      var e = this.svgElements[id];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2733
      e.attr({fill: e.color});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2734
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2735
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2736
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2737
   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2738
IriSP.SegmentsWidget = function(Popcorn, config, Serializer) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2739
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2740
  var self = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2741
  IriSP.Widget.call(this, Popcorn, config, Serializer);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2742
  this.oldSearchMatches = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2743
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2744
  // event handlers
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2745
  this._Popcorn.listen("IriSP.search", function(searchString) { self.searchHandler.call(self, searchString); });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2746
  this._Popcorn.listen("IriSP.search.closed", function() { self.searchFieldClosedHandler.call(self); });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2747
  this._Popcorn.listen("IriSP.search.cleared", function() { self.searchFieldClearedHandler.call(self); });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2748
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2749
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2750
IriSP.SegmentsWidget.prototype = new IriSP.Widget();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2751
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2752
/* Get the width of a segment, in pixels. */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2753
IriSP.SegmentsWidget.prototype.segmentToPixel = function(annotation) {  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2754
  var begin = Math.round((+ annotation.begin) / 1000);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2755
  var end = Math.round((+ annotation.end) / 1000);    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2756
  var duration = this._serializer.currentMedia().meta["dc:duration"] / 1000;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2757
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2758
  var startPourcent 	= IriSP.timeToPourcent(begin, duration);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2759
  var startPixel = Math.floor(this.selector.parent().width() * (startPourcent / 100));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2760
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2761
  var endPourcent 	= Math.floor(IriSP.timeToPourcent(end, duration) - startPourcent);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2762
  var endPixel = Math.floor(this.selector.parent().width() * (endPourcent / 100));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2763
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2764
  return endPixel;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2765
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2766
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2767
/* compute the total length of a group of segments */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2768
IriSP.SegmentsWidget.prototype.segmentsLength = function(segmentsList) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2769
  var self = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2770
  var total = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2771
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2772
  for (var i = 0; i < segmentsList.length; i++)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2773
    total += self.segmentToPixel(segmentsList[i].annotation);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2774
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2775
  return total;  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2776
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2777
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2778
IriSP.SegmentsWidget.prototype.draw = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2779
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2780
  var self = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2781
  var annotations = this._serializer._data.annotations;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2782
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2783
  this.selector.addClass("Ldt-SegmentsWidget");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2784
  this.selector.append(Mustache.to_html(IriSP.overlay_marker_template));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2785
          
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2786
  var view_type = this._serializer.getNonTweetIds()[0];    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2787
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2788
  this.positionMarker = this.selector.children(":first");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2789
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2790
  this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.positionUpdater));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2791
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2792
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2793
  var i = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2794
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2795
  var segments_annotations = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2796
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2797
  for (i = 0; i < annotations.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2798
    var annotation = annotations[i];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2799
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2800
    /* filter the annotations whose type is not the one we want */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2801
    if (view_type != "" && typeof(annotation.meta) !== "undefined" && typeof(annotation.meta["id-ref"]) !== "undefined"
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2802
          && annotation.meta["id-ref"] != view_type) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2803
        continue;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2804
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2805
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2806
    segments_annotations.push(annotation);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2807
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2808
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2809
  var totalWidth = this.selector.width() - segments_annotations.length;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2810
  var lastSegment = IriSP.underscore.max(segments_annotations, function(annotation) { return annotation.end; });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2811
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2812
  for (i = 0; i < segments_annotations.length; i++) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2813
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2814
    var annotation = segments_annotations[i];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2815
    var begin = (+ annotation.begin);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2816
    var end = (+ annotation.end);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2817
    var duration = this._serializer.currentMedia().meta["dc:duration"];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2818
    var id = annotation.id;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2819
        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2820
    var startPixel = Math.floor(this.selector.parent().width() * (begin / duration));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2821
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2822
    var endPixel = Math.floor(this.selector.parent().width() * (end / duration));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2823
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2824
    if (annotation.id !== lastSegment.id) 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2825
      var pxWidth = endPixel - startPixel -1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2826
    else
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2827
      /* the last segment has no segment following it */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2828
      var pxWidth = endPixel - startPixel;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2829
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2830
    var divTitle = (annotation.content.title + " - " + annotation.content.description).substr(0,55);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2831
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2832
    if (typeof(annotation.content.color) !== "undefined")
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2833
      var color = annotation.content.color;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2834
    else
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2835
      var color = annotation.color;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2836
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2837
    var hexa_color = IriSP.DEC_HEXA_COLOR(color);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2838
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2839
    if (hexa_color === "FFCC00")
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2840
      hexa_color = "333";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2841
    if (hexa_color.length == 4)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2842
      hexa_color = hexa_color + '00';
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2843
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2844
    var annotationTemplate = Mustache.to_html(IriSP.annotation_template,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2845
        {"divTitle" : divTitle, "id" : id, "startPixel" : startPixel,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2846
        "pxWidth" : pxWidth, "hexa_color" : hexa_color,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2847
        "seekPlace" : Math.round(begin/1000)});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2848
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2849
        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2850
    this.selector.append(annotationTemplate);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2851
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2852
    /* add a special class to the last segment and change its border */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2853
    if (annotation.id === lastSegment.id) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2854
        this.selector.find("#" + id).addClass("Ldt-lastSegment");        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2855
        this.selector.find(".Ldt-lastSegment").css("border-color", "#" + hexa_color);        
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2856
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2857
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2858
    IriSP.jQuery("#" + id).fadeTo(0, 0.3);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2859
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2860
    IriSP.jQuery("#" + id).mouseover(
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2861
    /* we wrap the handler in another function because js's scoping
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2862
       rules are function-based - otherwise, the internal vars like
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2863
       divTitle are preserved but they are looked-up from the draw
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2864
       method scope, so after that the loop is run, so they're not
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2865
       preserved */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2866
    (function(divTitle) { 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2867
     return function(event) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2868
          IriSP.jQuery(this).animate({opacity: 0.6}, 5);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2869
          var offset = IriSP.jQuery(this).offset();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2870
          var correction = IriSP.jQuery(this).outerWidth() / 2;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2871
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2872
          var offset_x = offset.left + correction - 106;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2873
          if (offset_x < 0)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2874
            offset_x = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2875
                    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2876
          self.TooltipWidget.show(divTitle, color, offset_x, event.pageY - 160);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2877
    } })(divTitle)).mouseout(function(){
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2878
      IriSP.jQuery(this).animate({opacity: 0.3}, 5);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2879
      self.TooltipWidget.hide();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2880
    });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2881
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2882
    IriSP.jQuery("#" + id).click(function(_this, annotation) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2883
                                    return function() { _this.clickHandler(annotation)};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2884
                                 }(this, annotation));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2885
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2886
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2887
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2888
/* restores the view after a search */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2889
IriSP.SegmentsWidget.prototype.clear = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2890
  this.selector.children(".Ldt-iri-chapter").animate({opacity:0.3}, 100);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2891
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2892
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2893
IriSP.SegmentsWidget.prototype.clickHandler = function(annotation) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2894
  this._Popcorn.trigger("IriSP.SegmentsWidget.click", annotation.id);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2895
  var begin = (+ annotation.begin) / 1000;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2896
  this._Popcorn.currentTime(Math.round(begin));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2897
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2898
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2899
IriSP.SegmentsWidget.prototype.searchHandler = function(searchString) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2900
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2901
  if (searchString == "")
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2902
    return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2903
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2904
  var matches = this._serializer.searchOccurences(searchString);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2905
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2906
  if (IriSP.countProperties(matches) > 0) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2907
    this._Popcorn.trigger("IriSP.search.matchFound");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2908
  } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2909
    this._Popcorn.trigger("IriSP.search.noMatchFound");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2910
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2911
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2912
  // un-highlight all the blocks
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2913
  this.selector.children(".Ldt-iri-chapter").css("opacity", 0.1);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2914
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2915
  // then highlight the ones with matches.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2916
  for (var id in matches) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2917
    var factor = 0.5 + matches[id] * 0.2;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2918
    this.selector.find("#"+id).dequeue();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2919
    this.selector.find("#"+id).animate({opacity:factor}, 200);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2920
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2921
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2922
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2923
  this.oldSearchMatches = matches;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2924
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2925
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2926
IriSP.SegmentsWidget.prototype.searchFieldClearedHandler = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2927
  this.clear();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2928
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2929
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2930
IriSP.SegmentsWidget.prototype.searchFieldClosedHandler = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2931
  this.clear();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2932
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2933
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2934
IriSP.SegmentsWidget.prototype.positionUpdater = function() {  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2935
  var duration = this._serializer.currentMedia().meta["dc:duration"] / 1000;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2936
  var time = this._Popcorn.currentTime();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2937
  //var position 	= ((time / duration) * 100).toFixed(2);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2938
  var position 	= ((time / duration) * 100).toFixed(2);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2939
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2940
  this.positionMarker.css("left", position + "%");  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2941
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2942
IriSP.SliderWidget = function(Popcorn, config, Serializer) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2943
  IriSP.Widget.call(this, Popcorn, config, Serializer);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2944
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2945
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2946
IriSP.SliderWidget.prototype = new IriSP.Widget();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2947
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2948
IriSP.SliderWidget.prototype.draw = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2949
  var self = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2950
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2951
  this.selector.append(Mustache.to_html(IriSP.sliderWidget_template, {}));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2952
  this.selector.addClass("Ldt-SliderMinimized");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2953
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2954
  this.sliderBackground = this.selector.find(".Ldt-sliderBackground");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2955
  this.sliderForeground = this.selector.find(".Ldt-sliderForeground");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2956
  this.positionMarker = this.selector.find(".Ldt-sliderPositionMarker");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2957
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2958
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2959
  // a special variable to stop methods from tinkering
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2960
  // with the positionMarker when the user is dragging it
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2961
  this.draggingOngoing = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2962
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2963
  // another special variable used by the timeout handler to
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2964
  // open or close the slider.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2965
  this.sliderMaximized = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2966
  this.timeOutId = null;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2967
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2968
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2969
  this.positionMarker.draggable({axis: "x",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2970
  start: IriSP.wrap(this, this.positionMarkerDraggingStartedHandler),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2971
  stop: IriSP.wrap(this, this.positionMarkerDraggedHandler),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2972
  containment: "parent"
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2973
  });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2974
  this.positionMarker.css("position", "absolute");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2975
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2976
  this.sliderBackground.click(function(event) { self.backgroundClickHandler.call(self, event); });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2977
  this.sliderForeground.click(function(event) { self.foregroundClickHandler.call(self, event); });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2978
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2979
  this.selector.hover(IriSP.wrap(this, this.mouseOverHandler), IriSP.wrap(this, this.mouseOutHandler));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2980
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2981
  // update the positions
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2982
  this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.sliderUpdater));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2983
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2984
  // special messages :
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2985
  this._Popcorn.listen("IriSP.PlayerWidget.MouseOver", IriSP.wrap(this, this.mouseOverHandler));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2986
  this._Popcorn.listen("IriSP.PlayerWidget.MouseOut", IriSP.wrap(this, this.mouseOutHandler));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2987
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2988
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2989
/* update the slider and the position marker as time passes */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2990
IriSP.SliderWidget.prototype.sliderUpdater = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2991
  if(this.draggingOngoing || this._disableUpdate)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2992
    return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2993
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2994
  var time = this._Popcorn.currentTime();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2995
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2996
  var duration = this._serializer.currentMedia().meta["dc:duration"] / 1000;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2997
  var percent = ((time / duration) * 100).toFixed(2);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2998
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  2999
  /* we do these complicated calculations to center exactly
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3000
     the position Marker */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3001
  var pixels_to_percents = 100 / this.selector.width(); /* how much is a pixel in percents */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3002
  var positionMarker_width = this.positionMarker.width();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3003
  var correction = (pixels_to_percents * positionMarker_width) / 2;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3004
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3005
  var newPos = percent - correction;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3006
  if (newPos <= 0)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3007
    newPos = 0;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3008
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3009
	this.sliderForeground.css("width", percent + "%");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3010
	this.positionMarker.css("left", newPos + "%");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3011
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3012
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3013
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3014
IriSP.SliderWidget.prototype.backgroundClickHandler = function(event) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3015
  /* this piece of code is a little bit convoluted - here's how it works :
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3016
     we want to handle clicks on the progress bar and convert those to seeks in the media.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3017
     However, jquery only gives us a global position, and we want a number of pixels relative
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3018
     to our container div, so we get the parent position, and compute an offset to this position,
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3019
     and finally compute the progress ratio in the media.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3020
     Finally we multiply this ratio with the duration to get the correct time
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3021
  */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3022
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3023
  var parentOffset = this.sliderBackground.parent().offset();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3024
  var width = this.sliderBackground.width();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3025
  var relX = event.pageX - parentOffset.left;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3026
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3027
  var duration = this._serializer.currentMedia().meta["dc:duration"] / 1000;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3028
  var newTime = ((relX / width) * duration).toFixed(2);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3029
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3030
  this._Popcorn.currentTime(newTime);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3031
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3032
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3033
/* same function as the previous one, except that it handles clicks
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3034
   on the foreground element */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3035
IriSP.SliderWidget.prototype.foregroundClickHandler = function(event) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3036
  var parentOffset = this.sliderForeground.parent().offset();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3037
  var width = this.sliderBackground.width();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3038
  var relX = event.pageX - parentOffset.left;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3039
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3040
  var duration = this._serializer.currentMedia().meta["dc:duration"] / 1000;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3041
  var newTime = ((relX / width) * duration).toFixed(2);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3042
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3043
  this._Popcorn.currentTime(newTime);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3044
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3045
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3046
/* handles mouse over the slider */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3047
IriSP.SliderWidget.prototype.mouseOverHandler = function(event) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3048
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3049
  if (this.timeOutId !== null) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3050
    window.clearTimeout(this.timeOutId);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3051
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3052
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3053
  this.sliderMaximized = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3054
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3055
  this.sliderBackground.animate({"height": "9px"}, 100);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3056
  this.sliderForeground.animate({"height": "9px"}, 100);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3057
  this.positionMarker.animate({"height": "9px", "width": "9px"}, 100);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3058
  //this.positionMarker.css("margin-top", "-4px");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3059
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3060
//  this.selector.removeClass("Ldt-SliderMinimized");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3061
//  this.selector.addClass("Ldt-SliderMaximized");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3062
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3063
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3064
/* handles when the mouse leaves the slider */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3065
IriSP.SliderWidget.prototype.mouseOutHandler = function(event) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3066
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3067
  this.timeOutId = window.setTimeout(IriSP.wrap(this, this.minimizeOnTimeout),
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3068
                                     IriSP.widgetsDefaults.SliderWidget.minimize_period);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3069
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3070
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3071
IriSP.SliderWidget.prototype.minimizeOnTimeout = function(event) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3072
  this.sliderBackground.animate({"height": "5px"}, 100);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3073
  this.sliderForeground.animate({"height": "5px"}, 100);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3074
  this.positionMarker.animate({"height": "5px", "width": "5px"}, 100);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3075
  this.positionMarker.css("margin-top", "0px");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3076
  this.sliderMinimized = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3077
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3078
//  this.selector.removeClass("Ldt-SliderMaximized");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3079
//  this.selector.addClass("Ldt-SliderMinimized");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3080
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3081
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3082
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3083
// called when the user starts dragging the position indicator
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3084
IriSP.SliderWidget.prototype.positionMarkerDraggingStartedHandler = function(event, ui) {  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3085
  this.draggingOngoing = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3086
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3087
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3088
IriSP.SliderWidget.prototype.positionMarkerDraggedHandler = function(event, ui) {   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3089
  this._disableUpdate = true; // disable slider position updates while dragging is ongoing.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3090
  window.setTimeout(IriSP.wrap(this, function() { this._disableUpdate = false; }), 500);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3091
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3092
  var parentOffset = this.sliderForeground.parent().offset();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3093
  var width = this.sliderBackground.width();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3094
  var relX = event.pageX - parentOffset.left;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3095
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3096
  var duration = this._serializer.currentMedia().meta["dc:duration"] / 1000;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3097
  var newTime = ((relX / width) * duration).toFixed(2);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3098
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3099
  this._Popcorn.currentTime(newTime);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3100
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3101
  this.draggingOngoing = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3102
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3103
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3104
/* this widget displays a small tooltip */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3105
IriSP.TooltipWidget = function(Popcorn, config, Serializer) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3106
  IriSP.Widget.call(this, Popcorn, config, Serializer);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3107
  this._shown = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3108
  this._displayedText = "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3109
  this._hideTimeout = -1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3110
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3111
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3112
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3113
IriSP.TooltipWidget.prototype = new IriSP.Widget();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3114
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3115
IriSP.TooltipWidget.prototype.draw = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3116
  var templ = Mustache.to_html(IriSP.tooltipWidget_template);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3117
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3118
  this.selector.append(templ);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3119
  this.hide();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3120
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3121
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3122
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3123
IriSP.TooltipWidget.prototype.clear = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3124
	this.selector.find(".tiptext").text("");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3125
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3126
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3127
IriSP.TooltipWidget.prototype.show = function(text, color, x, y) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3128
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3129
  if (this._displayedText == text)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3130
    return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3131
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3132
  this.selector.find(".tipcolor").css("background-color", color);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3133
  this._displayedText = text;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3134
	this.selector.find(".tiptext").text(text);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3135
  //this.selector.find(".tip").css("left", x).css("top", y);  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3136
  this.selector.find(".tip").css("left", x).css("top", y);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3137
  this.selector.find(".tip").show();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3138
  this._shown = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3139
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3140
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3141
IriSP.TooltipWidget.prototype.hide = function() {                                                   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3142
  this.selector.find(".tip").hide();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3143
  this._shown = false;  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3144
};/* a widget that displays tweet - used in conjunction with the polemicWidget */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3145
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3146
IriSP.TweetsWidget = function(Popcorn, config, Serializer) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3147
  IriSP.Widget.call(this, Popcorn, config, Serializer);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3148
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3149
  this._displayingTweet = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3150
  this._timeoutId = undefined;  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3151
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3152
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3153
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3154
IriSP.TweetsWidget.prototype = new IriSP.Widget();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3155
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3156
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3157
IriSP.TweetsWidget.prototype.drawTweet = function(annotation) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3158
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3159
    var title = IriSP.formatTweet(annotation.content.title);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3160
    var img = annotation.content.img.src;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3161
    if (typeof(img) === "undefined" || img === "" || img === "None") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3162
      img = IriSP.widgetsDefaults.TweetsWidget.default_profile_picture;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3163
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3164
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3165
    var imageMarkup = IriSP.templToHTML("<img src='{{src}}' alt='user image'></img>", 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3166
                                       {src : img});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3167
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3168
    if (typeof(annotation.meta["dc:source"].content) !== "undefined") {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3169
      var tweetContents = JSON.parse(annotation.meta["dc:source"].content);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3170
      var creator = tweetContents.user.screen_name;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3171
      var real_name = tweetContents.user.name;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3172
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3173
      imageMarkup = IriSP.templToHTML("<a href='http://twitter.com/{{creator}}'><img src='{{src}}' alt='user image'></img></a>", 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3174
                                       {src : img, creator: creator});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3175
            
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3176
      var formatted_date = new Date(tweetContents.created_at).toLocaleDateString();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3177
      title = IriSP.templToHTML("<a class='Ldt-tweet_userHandle' href='http://twitter.com/{{creator}}'>@{{creator}}</a> - " + 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3178
                                "<div class='Ldt-tweet_realName'>{{real_name}}</div>" +
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3179
                                "<div class='Ldt-tweet_tweetContents'>{{{ contents }}}</div>" +
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3180
                                "<div class='Ldt-tweet_date'>{{ date }}</div>", 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3181
                                {creator: creator, real_name: real_name, contents : title, date : formatted_date});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3182
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3183
      this.selector.find(".Ldt-TweetReply").attr("href", "http://twitter.com/home?status=@" + creator + ":%20");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3184
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3185
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3186
      var rtText = Mustache.to_html("http://twitter.com/home?status=RT @{{creator}}: {{text}}",
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3187
                                    {creator: creator, text: IriSP.encodeURI(annotation.content.title)});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3188
      this.selector.find(".Ldt-Retweet").attr("href", rtText);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3189
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3190
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3191
    this.selector.find(".Ldt-tweetContents").html(title);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3192
    this.selector.find(".Ldt-tweetAvatar").html(imageMarkup);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3193
    this.selector.show("blind", 250); 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3194
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3195
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3196
IriSP.TweetsWidget.prototype.displayTweet = function(annotation) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3197
  if (this._displayingTweet === false) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3198
    this._displayingTweet = true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3199
  } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3200
    window.clearTimeout(this._timeoutId);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3201
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3202
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3203
  this.drawTweet(annotation);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3204
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3205
  var time = this._Popcorn.currentTime();  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3206
  this._timeoutId = window.setTimeout(IriSP.wrap(this, this.clearPanel), IriSP.widgetsDefaults.TweetsWidget.tweet_display_period);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3207
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3208
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3209
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3210
IriSP.TweetsWidget.prototype.clearPanel = function() {  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3211
    this._displayingTweet = false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3212
    this._timeoutId = undefined;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3213
    this.closePanel();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3214
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3215
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3216
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3217
IriSP.TweetsWidget.prototype.closePanel = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3218
    if (this._timeoutId != undefined) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3219
      /* we're called from the "close window" link */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3220
      /* cancel the timeout */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3221
      window.clearTimeout(this._timeoutId);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3222
      this._timeoutId = null;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3223
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3224
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3225
    this.selector.hide("blind", 400);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3226
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3227
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3228
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3229
/* cancel the timeout if the user clicks on the keep panel open button */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3230
IriSP.TweetsWidget.prototype.keepPanel = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3231
    if (this._timeoutId != undefined) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3232
      /* we're called from the "close window" link */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3233
      /* cancel the timeout */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3234
      window.clearTimeout(this._timeoutId);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3235
      this._timeoutId = null;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3236
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3237
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3238
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3239
IriSP.TweetsWidget.prototype.draw = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3240
  var _this = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3241
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3242
  var tweetMarkup = IriSP.templToHTML(IriSP.tweetWidget_template, {"share_template" : IriSP.share_template});
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3243
  this.selector.append(tweetMarkup);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3244
  this.selector.hide();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3245
  this.selector.find(".Ldt-tweetWidgetMinimize").click(IriSP.wrap(this, this.closePanel));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3246
  this.selector.find(".Ldt-tweetWidgetKeepOpen").click(IriSP.wrap(this, this.keepPanel));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3247
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3248
  this._Popcorn.listen("IriSP.PolemicTweet.click", IriSP.wrap(this, this.PolemicTweetClickHandler));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3249
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3250
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3251
IriSP.TweetsWidget.prototype.PolemicTweetClickHandler = function(tweet_id) {  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3252
  var index, annotation;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3253
  for (index in this._serializer._data.annotations) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3254
    annotation = this._serializer._data.annotations[index];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3255
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3256
    if (annotation.id === tweet_id)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3257
      break;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3258
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3259
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3260
  if (annotation.id !== tweet_id)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3261
      /* we haven't found it */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3262
      return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3263
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3264
  this.displayTweet(annotation);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3265
  return;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3266
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3267
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3268
IriSP.JSONSerializer = function(DataLoader, url) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3269
  IriSP.Serializer.call(this, DataLoader, url);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3270
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3271
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3272
IriSP.JSONSerializer.prototype = new IriSP.Serializer();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3273
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3274
IriSP.JSONSerializer.prototype.serialize = function(data) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3275
  return JSON.stringify(data);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3276
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3277
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3278
IriSP.JSONSerializer.prototype.deserialize = function(data) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3279
  return JSON.parse(data);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3280
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3281
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3282
IriSP.JSONSerializer.prototype.sync = function(callback) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3283
  /* we don't have to do much because jQuery handles json for us */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3284
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3285
  var self = this;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3286
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3287
  var fn = function(data) {      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3288
      self._data = data;      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3289
      // sort the data too     
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3290
      self._data["annotations"].sort(function(a, b) 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3291
          { var a_begin = +a.begin;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3292
            var b_begin = +b.begin;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3293
            return a_begin - b_begin;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3294
          });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3295
     
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3296
      callback(data);      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3297
  };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3298
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3299
  this._DataLoader.get(this._url, fn);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3300
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3301
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3302
IriSP.JSONSerializer.prototype.currentMedia = function() {  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3303
  return this._data.medias[0]; /* FIXME: don't hardcode it */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3304
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3305
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3306
/* this function searches for an annotation which matches title, description and keyword 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3307
   "" matches any field. 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3308
   Note: it ignores tweets.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3309
*/    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3310
IriSP.JSONSerializer.prototype.searchAnnotations = function(title, description, keyword) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3311
    /* we can have many types of annotations. We want search to only look for regular segments */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3312
    /* the next two lines are a bit verbose because for some test data, _serializer.data.view is either
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3313
       null or undefined.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3314
    */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3315
    var view;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3316
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3317
    if (typeof(this._data.views) !== "undefined" && this._data.views !== null)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3318
       view = this._data.views[0];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3319
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3320
    var searchViewType = "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3321
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3322
    if(typeof(view) !== "undefined" && typeof(view.annotation_types) !== "undefined" && view.annotation_types.length > 1) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3323
            searchViewType = view.annotation_types[0];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3324
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3325
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3326
    var filterfn = function(annotation) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3327
      if( searchViewType  != "" && 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3328
          typeof(annotation.meta) !== "undefined" && 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3329
          typeof(annotation.meta["id-ref"]) !== "undefined" &&
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3330
          annotation.meta["id-ref"] !== searchViewType) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3331
        return true; // don't pass
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3332
      } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3333
          return false;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3334
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3335
    };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3336
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3337
    return this.searchAnnotationsFilter(title, description, keyword, filterfn);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3338
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3339
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3340
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3341
/* only look for tweets */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3342
IriSP.JSONSerializer.prototype.searchTweets = function(title, description, keyword) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3343
    /* we can have many types of annotations. We want search to only look for regular segments */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3344
    /* the next two lines are a bit verbose because for some test data, _serializer.data.view is either
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3345
       null or undefined.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3346
    */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3347
    var view;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3348
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3349
    if (typeof(this._data.views) !== "undefined" && this._data.views !== null)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3350
       view = this._data.views[0];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3351
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3352
    var searchViewType = "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3353
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3354
    if(typeof(view) !== "undefined" && typeof(view.annotation_types) !== "undefined" && view.annotation_types.length > 1) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3355
            searchViewType = view.annotation_types[0];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3356
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3357
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3358
    var filterfn = function(annotation) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3359
      if( searchViewType  != "" && 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3360
          typeof(annotation.meta) !== "undefined" && 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3361
          typeof(annotation.meta["id-ref"]) !== "undefined" &&
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3362
          annotation.meta["id-ref"] !== searchViewType) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3363
        return false; // pass
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3364
      } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3365
          return true;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3366
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3367
    };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3368
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3369
    return this.searchAnnotationsFilter(title, description, keyword, filterfn);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3370
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3371
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3372
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3373
/*
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3374
  the previous function call this one, which is more general:
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3375
 */    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3376
IriSP.JSONSerializer.prototype.searchAnnotationsFilter = function(title, description, keyword, filter) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3377
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3378
    var rTitle;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3379
    var rDescription;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3380
    var rKeyword;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3381
    /* match anything if given the empty string */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3382
    if (title == "")
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3383
      title = ".*";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3384
    if (description == "")
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3385
      description = ".*";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3386
    if (keyword == "")
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3387
      keyword = ".*";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3388
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3389
    rTitle = new RegExp(title, "i");  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3390
    rDescription = new RegExp(description, "i");  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3391
    rKeyword = new RegExp(keyword, "i");  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3392
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3393
    var ret_array = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3394
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3395
    var i;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3396
    for (i in this._data.annotations) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3397
      var annotation = this._data.annotations[i];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3398
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3399
      /* filter the annotations whose type is not the one we want */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3400
      if (filter(annotation)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3401
          continue;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3402
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3403
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3404
      if (rTitle.test(annotation.content.title) && 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3405
          rDescription.test(annotation.content.description)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3406
          /* FIXME : implement keyword support */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3407
          ret_array.push(annotation);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3408
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3409
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3410
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3411
    return ret_array;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3412
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3413
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3414
/* breaks a string in words and searches each of these words. Returns an array
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3415
   of objects with the id of the annotation and its number of occurences.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3416
   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3417
   FIXME: optimize ? seems to be n^2 in the worst case.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3418
*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3419
IriSP.JSONSerializer.prototype.searchOccurences = function(searchString) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3420
  var ret = { };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3421
  var keywords = searchString.split(/\s+/);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3422
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3423
  for (var i in keywords) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3424
    var keyword = keywords[i];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3425
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3426
    // search this keyword in descriptions and title
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3427
    var found_annotations = []
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3428
    found_annotations = found_annotations.concat(this.searchAnnotations(keyword, "", ""));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3429
    found_annotations = found_annotations.concat(this.searchAnnotations("", keyword, ""));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3430
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3431
    for (var j in found_annotations) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3432
      var current_annotation = found_annotations[j];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3433
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3434
      if (!ret.hasOwnProperty(current_annotation.id)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3435
        ret[current_annotation.id] = 1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3436
      } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3437
        ret[current_annotation.id] += 1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3438
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3439
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3440
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3441
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3442
  };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3443
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3444
  return ret;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3445
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3446
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3447
/* breaks a string in words and searches each of these words. Returns an array
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3448
   of objects with the id of the annotation and its number of occurences.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3449
   
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3450
   FIXME: optimize ? seems to be n^2 in the worst case.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3451
*/
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3452
IriSP.JSONSerializer.prototype.searchTweetsOccurences = function(searchString) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3453
  var ret = { };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3454
  var keywords = searchString.split(/\s+/);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3455
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3456
  for (var i in keywords) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3457
    var keyword = keywords[i];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3458
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3459
    // search this keyword in descriptions and title
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3460
    var found_annotations = []
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3461
    found_annotations = found_annotations.concat(this.searchTweets(keyword, "", ""));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3462
    found_annotations = found_annotations.concat(this.searchTweets("", keyword, ""));
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3463
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3464
    for (var j in found_annotations) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3465
      var current_annotation = found_annotations[j];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3466
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3467
      if (!ret.hasOwnProperty(current_annotation.id)) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3468
        ret[current_annotation.id] = 1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3469
      } else {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3470
        ret[current_annotation.id] += 1;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3471
      }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3472
      
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3473
    }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3474
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3475
  };
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3476
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3477
  return ret;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3478
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3479
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3480
/* takes the currentTime and returns all the annotations that are displayable at the moment 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3481
   NB: only takes account the first type of annotations - ignores tweets 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3482
   currentTime is in seconds.
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3483
 */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3484
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3485
IriSP.JSONSerializer.prototype.currentAnnotations = function(currentTime) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3486
  var view;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3487
  var currentTimeMs = 1000 * currentTime;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3488
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3489
  if (typeof(this._data.views) !== "undefined" && this._data.views !== null)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3490
     view = this._data.views[0];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3491
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3492
  var view_type = "";
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3493
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3494
  if(typeof(view) !== "undefined" && typeof(view.annotation_types) !== "undefined" && view.annotation_types.length >= 1) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3495
          view_type = view.annotation_types[0];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3496
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3497
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3498
  var ret_array = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3499
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3500
  var i;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3501
 
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3502
  for (i in this._data.annotations) {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3503
    var annotation = this._data.annotations[i];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3504
    
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3505
    if (annotation.meta["id-ref"] === view_type && annotation.begin <= currentTimeMs && annotation.end >= currentTimeMs)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3506
      ret_array.push(annotation);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3507
  }
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3508
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3509
  return ret_array;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3510
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3511
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3512
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3513
/* this function returns a list of ids of tweet lines */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3514
IriSP.JSONSerializer.prototype.getTweetIds = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3515
  if (typeof(this._data.lists) === "undefined" || this._data.lists === null)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3516
    return [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3517
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3518
  var tweetsId = [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3519
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3520
  /* first get the list containing the tweets */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3521
  var tweets = IriSP.underscore.filter(this._data.lists, function(entry) { return entry.id.indexOf("tweet") !== -1 });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3522
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3523
  // FIXME: collect tweets from multiple sources ?
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3524
  tweetsId = IriSP.underscore.pluck(tweets[0].items, "id-ref");
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3525
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3526
  return tweetsId;
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3527
};
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3528
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3529
/* this function returns a list of lines which are not tweet lines */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3530
IriSP.JSONSerializer.prototype.getNonTweetIds = function() {
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3531
  if (typeof(this._data.lists) === "undefined" || this._data.lists === null)
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3532
    return [];
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3533
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3534
  /* get all the ids */
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3535
  var ids = IriSP.underscore.map(this._data.lists, function(entry) {                                                         
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3536
                                                         return IriSP.underscore.pluck(entry.items, "id-ref"); });
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3537
                                                         
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3538
  var illegal_values = this.getTweetIds();
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3539
  return IriSP.underscore.difference(ids, illegal_values);
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3540
  
fe008e95a716 added jsdoc support, and a script to generate the docs.
hamidouk
parents:
diff changeset
  3541
};