Big refactoring new-model
authorveltr
Thu, 03 May 2012 17:52:52 +0200
branchnew-model
changeset 882 61c384dda19e
parent 881 f11b234497f7
child 883 d35ad8111c5e
Big refactoring
.hgignore
assets/annotate.psd
assets/annotate_arrow.psd
assets/arrow.psd
assets/fullscreen.psd
assets/gplus_button.psd
assets/left_edge_arrow.psd
assets/left_handle.psd
assets/minimize.psd
assets/mute.psd
assets/pause_sprite.psd
assets/play.psd
assets/polemic_buttons_sprite.psd
assets/profile_arrow.psd
assets/psd/annotate_arrow.psd
assets/psd/mdpsprites.psd
assets/psd/pin-cross.psd
assets/psd/polemic_buttons_sprite.psd
assets/psd/profile_arrow.psd
assets/psd/socialbuttons.psd
assets/psd/submit_annotation.psd
assets/psd/wire_pattern.psd
assets/reply.psd
assets/retweet.psd
assets/right_edge_arrow.psd
assets/right_handle.psd
assets/search.psd
assets/sound.psd
assets/submit_annotation.psd
assets/tweet_button.psd
assets/wire_pattern.psd
examples/LdtPlayer-release.js
examples/index-youtube.htm
examples/index.htm
examples/test-youtube.json
examples/test.json
sbin/build/client.xml
src/css/LdtPlayer-base.css
src/css/LdtPlayer-core.css
src/css/img/loader.gif
src/css/imgs/loader.gif
src/js/defaults.js
src/js/iframe_embed/embed-mini.js
src/js/iframe_embed/embedder.js
src/js/init.js
src/js/layout.js
src/js/libs/LAB.min.js
src/js/libs/lab.js
src/js/libs/raphael-min.js
src/js/libs/raphael.js
src/js/libs/tracemanager.js
src/js/libs/underscore-min.js
src/js/libs/underscore.js
src/js/main.js
src/js/modules.js
src/js/modules/embed.js
src/js/serializers/CinecastSerializer.js
src/js/serializers/PlatformSerializer.js
src/js/utils.js
src/js/widgets/stackGraphWidget.js
src/js/widgets/traceWidget.js
src/templates/arrowWidget.html
src/templates/loading.html
src/templates/share.html
src/templates/tooltip.html
src/templates/tweetWidget.html
src/widgets/Annotation.css
src/widgets/AnnotationsList.css
src/widgets/Arrow.css
src/widgets/Arrow.js
src/widgets/Controller.css
src/widgets/Controller.js
src/widgets/CreateAnnotation.js
src/widgets/HelloWorld.css
src/widgets/Mediafragment.js
src/widgets/Polemic.css
src/widgets/Polemic.js
src/widgets/Segments.css
src/widgets/Sparkline.css
src/widgets/Tagcloud.css
src/widgets/Tagcloud.js
src/widgets/Tooltip.css
src/widgets/Tooltip.js
src/widgets/Trace.js
src/widgets/Tweet.css
src/widgets/img/pinstripe-grey.png
src/widgets/img/pinstripe.png
test/emission_fichiers/1219830366Middlex02BottomRight.js
test/emission_fichiers/265074200838.js
test/emission_fichiers/97820204039860-2000020811.jpg
test/emission_fichiers/Garrigou.jpg
test/emission_fichiers/addthis_widget.js
test/emission_fichiers/ajax-responder.js
test/emission_fichiers/baudin.jpg
test/emission_fichiers/comment.js
test/emission_fichiers/css_8af77a07a1f960afe4e4736580827c7c.css
test/emission_fichiers/css_bf9cf64d750be06f6006828a2bed7b98.css
test/emission_fichiers/css_e94d821d2c09c140834405452127e5ae.css
test/emission_fichiers/culture_les_retours_du_dimanche.jpg
test/emission_fichiers/direct.png
test/emission_fichiers/drupal.js
test/emission_fichiers/fc_antidot_recherche.js
test/emission_fichiers/fc_bloc_direct.js
test/emission_fichiers/fc_widget_twitter.js
test/emission_fichiers/fivestar.js
test/emission_fichiers/footer.js
test/emission_fichiers/fr_4fb8f115d8d263374d07dafa1b2a40b5.js
test/emission_fichiers/franceculture.png
test/emission_fichiers/high.js
test/emission_fichiers/inscription.png
test/emission_fichiers/jquery.js
test/emission_fichiers/jquery_002.js
test/emission_fichiers/jquery_003.js
test/emission_fichiers/jquery_004.js
test/emission_fichiers/jquery_005.js
test/emission_fichiers/jquery_006.js
test/emission_fichiers/la_nuit_du_monde20100423.jpg
test/emission_fichiers/le_mal_du_pays_autobiographie_de_la_belgique20100424.jpg
test/emission_fichiers/les_lites_contre_la_rpublique_histoire_et_mutations_de_scien.jpg
test/emission_fichiers/listen.png
test/emission_fichiers/logo.png
test/emission_fichiers/more-red.png
test/emission_fichiers/panels.js
test/emission_fichiers/picto-ecoute-rouge.png
test/emission_fichiers/picto-mobile.png
test/emission_fichiers/picto-rss.gif
test/emission_fichiers/popups.js
test/emission_fichiers/popups_002.js
test/emission_fichiers/retour_dimanche.png
test/emission_fichiers/rf_player.js
test/emission_fichiers/rollover.js
test/emission_fichiers/script.js
test/emission_fichiers/search-submit.png
test/emission_fichiers/sh20.htm
test/emission_fichiers/swfobject.txt
test/emission_fichiers/tableheader.js
test/emission_fichiers/textarea.js
test/emission_fichiers/widget40.css
test/emission_fichiers/xtcore.js
test/emission_fichiers/youtube.js
test/index-dailymotion.htm
test/index.htm
test/indexFC.htm
test/indexFC2.htm
test/integration/allocine_dossier_independant/allocine_test/AcPlayer_v3.0_new.swf
test/integration/allocine_dossier_independant/allocine_test/avatar.png
test/integration/allocine_dossier_independant/allocine_test/data_cinecast_new.xml
test/integration/allocine_dossier_independant/allocine_test/skin_fr.swf
test/integration/allocine_dossier_independant/css/LdtPlayer.css
test/integration/allocine_dossier_independant/css/img-cinecast/controlbarbgd.png
test/integration/allocine_dossier_independant/css/img-cinecast/controlbarspacer.png
test/integration/allocine_dossier_independant/css/img-cinecast/createannbgd.png
test/integration/allocine_dossier_independant/css/img-cinecast/greenbutton.png
test/integration/allocine_dossier_independant/css/img-cinecast/logo.iri.small.png
test/integration/allocine_dossier_independant/css/img-cinecast/moar.png
test/integration/allocine_dossier_independant/css/img-cinecast/player-sprites.png
test/integration/allocine_dossier_independant/css/img-cinecast/sliderpos.png
test/integration/allocine_dossier_independant/css/img-cinecast/tag.png
test/integration/allocine_dossier_independant/css/img-cinecast/textarea.png
test/integration/allocine_dossier_independant/css/imgs/annotate_arrow.png
test/integration/allocine_dossier_independant/css/imgs/arrow.png
test/integration/allocine_dossier_independant/css/imgs/black.png
test/integration/allocine_dossier_independant/css/imgs/black_arrow.png
test/integration/allocine_dossier_independant/css/imgs/black_arrow_big.png
test/integration/allocine_dossier_independant/css/imgs/black_arrow_long.png
test/integration/allocine_dossier_independant/css/imgs/black_big.png
test/integration/allocine_dossier_independant/css/imgs/delicious.png
test/integration/allocine_dossier_independant/css/imgs/facebook.png
test/integration/allocine_dossier_independant/css/imgs/facebook_button.png
test/integration/allocine_dossier_independant/css/imgs/google.png
test/integration/allocine_dossier_independant/css/imgs/gplus_button.png
test/integration/allocine_dossier_independant/css/imgs/grey_arrow_Show.png
test/integration/allocine_dossier_independant/css/imgs/left_edge_arrow.png
test/integration/allocine_dossier_independant/css/imgs/left_handle.gif
test/integration/allocine_dossier_independant/css/imgs/linkedin.png
test/integration/allocine_dossier_independant/css/imgs/loader.gif
test/integration/allocine_dossier_independant/css/imgs/minimize.png
test/integration/allocine_dossier_independant/css/imgs/player_gradient.png
test/integration/allocine_dossier_independant/css/imgs/polemic_buttons_sprite.png
test/integration/allocine_dossier_independant/css/imgs/purple_arrow_Show.png
test/integration/allocine_dossier_independant/css/imgs/reply_sprite.png
test/integration/allocine_dossier_independant/css/imgs/retweet_sprite.png
test/integration/allocine_dossier_independant/css/imgs/right_edge_arrow.png
test/integration/allocine_dossier_independant/css/imgs/right_handle.gif
test/integration/allocine_dossier_independant/css/imgs/spinner.gif
test/integration/allocine_dossier_independant/css/imgs/submit_annotation.png
test/integration/allocine_dossier_independant/css/imgs/transBlack.png
test/integration/allocine_dossier_independant/css/imgs/tweet_button.png
test/integration/allocine_dossier_independant/css/imgs/twitter.png
test/integration/allocine_dossier_independant/css/imgs/user_default_icon.png
test/integration/allocine_dossier_independant/css/imgs/video_sequence.png
test/integration/allocine_dossier_independant/css/imgs/white.png
test/integration/allocine_dossier_independant/css/imgs/white_arrow.png
test/integration/allocine_dossier_independant/css/imgs/white_arrow_big.png
test/integration/allocine_dossier_independant/css/imgs/white_arrow_long.png
test/integration/allocine_dossier_independant/css/imgs/white_arrow_mini.png
test/integration/allocine_dossier_independant/css/imgs/white_big.png
test/integration/allocine_dossier_independant/css/imgs/widget20.png
test/integration/allocine_dossier_independant/css/imgs/wire_pattern.png
test/integration/allocine_dossier_independant/js/LdtPlayer-release.js
test/integration/allocine_dossier_independant/js/libs/images/ui-bg_flat_0_aaaaaa_40x100.png
test/integration/allocine_dossier_independant/js/libs/images/ui-bg_flat_75_ffffff_40x100.png
test/integration/allocine_dossier_independant/js/libs/images/ui-bg_glass_55_fbf9ee_1x400.png
test/integration/allocine_dossier_independant/js/libs/images/ui-bg_glass_65_ffffff_1x400.png
test/integration/allocine_dossier_independant/js/libs/images/ui-bg_glass_75_dadada_1x400.png
test/integration/allocine_dossier_independant/js/libs/images/ui-bg_glass_75_e6e6e6_1x400.png
test/integration/allocine_dossier_independant/js/libs/images/ui-bg_glass_95_fef1ec_1x400.png
test/integration/allocine_dossier_independant/js/libs/images/ui-bg_highlight-soft_75_cccccc_1x100.png
test/integration/allocine_dossier_independant/js/libs/images/ui-icons_222222_256x240.png
test/integration/allocine_dossier_independant/js/libs/images/ui-icons_2e83ff_256x240.png
test/integration/allocine_dossier_independant/js/libs/images/ui-icons_454545_256x240.png
test/integration/allocine_dossier_independant/js/libs/images/ui-icons_888888_256x240.png
test/integration/allocine_dossier_independant/js/libs/images/ui-icons_cd0a0a_256x240.png
test/integration/allocine_dossier_independant/js/libs/jquery-ui.css
test/integration/allocine_dossier_independant/js/libs/jquery-ui.min.js
test/integration/allocine_dossier_independant/js/libs/jquery.min.js
test/integration/allocine_dossier_independant/js/libs/jquery.sparkline.js
test/integration/allocine_dossier_independant/js/libs/jquery.tools.min.js
test/integration/allocine_dossier_independant/js/libs/jwplayer.js
test/integration/allocine_dossier_independant/js/libs/lab.js
test/integration/allocine_dossier_independant/js/libs/mustache.js
test/integration/allocine_dossier_independant/js/libs/popcorn.code.js
test/integration/allocine_dossier_independant/js/libs/popcorn.js
test/integration/allocine_dossier_independant/js/libs/popcorn.jwplayer.js
test/integration/allocine_dossier_independant/js/libs/popcorn.youtube.js
test/integration/allocine_dossier_independant/js/libs/raphael.js
test/integration/allocine_dossier_independant/js/libs/swfobject.js
test/integration/allocine_dossier_independant/js/libs/tracemanager.js
test/integration/allocine_dossier_independant/js/libs/underscore.js
test/integration/allocine_dossier_independant/json_examples/annotations.json
test/integration/allocine_dossier_independant/json_examples/extracts.json
test/integration/allocine_dossier_independant/json_examples/media.json
test/integration/allocine_dossier_independant/json_examples/movie32.json
test/integration/allocine_dossier_independant/json_examples/posted_annotations.json
test/integration/allocine_dossier_independant/json_examples/return_after_post.json
test/integration/allocine_dossier_independant/test-allocine.htm
test/integration/allocine_dossier_independant/test-vodkaster.htm
test/integration/polemic.htm
test/libs/player.swf
test/player.swf
--- a/.hgignore	Fri Apr 27 19:18:21 2012 +0200
+++ b/.hgignore	Thu May 03 17:52:52 2012 +0200
@@ -12,4 +12,8 @@
 syntax: regexp
 ^src/css/LdtPlayer-release\.css$
 syntax: regexp
-^build$
\ No newline at end of file
+^build$
+syntax: regexp
+^test/libs$
+syntax: regexp
+^test/metadataplayer$
\ No newline at end of file
Binary file assets/annotate.psd has changed
Binary file assets/annotate_arrow.psd has changed
Binary file assets/arrow.psd has changed
Binary file assets/fullscreen.psd has changed
Binary file assets/gplus_button.psd has changed
Binary file assets/left_edge_arrow.psd has changed
Binary file assets/left_handle.psd has changed
Binary file assets/minimize.psd has changed
Binary file assets/mute.psd has changed
Binary file assets/pause_sprite.psd has changed
Binary file assets/play.psd has changed
Binary file assets/polemic_buttons_sprite.psd has changed
Binary file assets/profile_arrow.psd has changed
Binary file assets/psd/annotate_arrow.psd has changed
Binary file assets/psd/mdpsprites.psd has changed
Binary file assets/psd/pin-cross.psd has changed
Binary file assets/psd/polemic_buttons_sprite.psd has changed
Binary file assets/psd/profile_arrow.psd has changed
Binary file assets/psd/socialbuttons.psd has changed
Binary file assets/psd/submit_annotation.psd has changed
Binary file assets/psd/wire_pattern.psd has changed
Binary file assets/reply.psd has changed
Binary file assets/retweet.psd has changed
Binary file assets/right_edge_arrow.psd has changed
Binary file assets/right_handle.psd has changed
Binary file assets/search.psd has changed
Binary file assets/sound.psd has changed
Binary file assets/submit_annotation.psd has changed
Binary file assets/tweet_button.psd has changed
Binary file assets/wire_pattern.psd has changed
--- a/examples/LdtPlayer-release.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1750 +0,0 @@
-/* 	
- *	Copyright 2010 Institut de recherche et d'innovation 
- *	contributor(s) : Samuel Huron 
- *	Use Silvia Pfeiffer 's javascript mediafragment implementation
- *
- *	contact@iri.centrepompidou.fr
- *	http://www.iri.centrepompidou.fr 
- *	 
- *	This software is a computer program whose purpose is to show and add annotations on a video .
- *	This software is governed by the CeCILL-C license under French law and
- *	abiding by the rules of distribution of free software. You can  use, 
- *	modify and/ or redistribute the software under the terms of the CeCILL-C
- *	license as circulated by CEA, CNRS and INRIA at the following URL
- *	"http://www.cecill.info". 
- *	
- *	The fact that you are presently reading this means that you have had
- *	knowledge of the CeCILL-C license and that you accept its terms.
-*/
-
-if ( window.IriSP === undefined && window.__IriSP === undefined ) { 
-	var IriSP = {}; 
-	var __IriSP = IriSP; /* for backward compatibility */
-}
-
-		
-// Official instance - to refactor ?
-IriSP.MyLdt 		= null;
-IriSP.MyTags 		= null;
-IriSP.MyApiPlayer	= null;
-IriSP.player		= null;
-
-// genral var (old code) - to refactor 
-IriSP.Durration		= null;
-IriSP.playerLdtWidth	= null;
-IriSP.playerLdtHeight	= null;
-
-
-IriSP.init = function ( config ) {		
-		if ( config === null ) {
-			IriSP.config 			 = IriSP.configDefault;
-		} else {
-			
-			IriSP.config 			 = config;
-						
-			if ( IriSP.config.player.params == null ) {
-				IriSP.config.player.params = IriSP.configDefault.player.params;
-			}
-			
-			if ( IriSP.config.player.flashvars == null ) {
-				IriSP.config.player.flashvars = IriSP.configDefault.player.flashvars;
-			}
-			
-			if ( IriSP.config.player.attributes == null ) {
-				IriSP.config.player.attributes = IriSP.configDefault.player.attributes;
-			}
-		}
-		
-		var metadataSrc 		 = IriSP.config.metadata.src;
-		var guiContainer		 = IriSP.config.gui.container;
-		var guiMode				 = IriSP.config.gui.mode;
-		var guiLdtShareTool		 = IriSP.LdtShareTool;
-		
-		// Localize jQuery variable
-		IriSP.jQuery = null;
-
-		/* FIXME : to refactor using popcorn.getscript ? */
-		/******** Load jQuery if not present *********/
-		if ( window.jQuery === undefined || window.jQuery.fn.jquery !== '1.4.2' ) {
-			
-			var script_tag = document.createElement( 'script' );
-			script_tag.setAttribute( "type", "text/javascript" );
-			script_tag.setAttribute( "src", IriSP.lib.jQuery );
-			
-			script_tag.onload = scriptLibHandler;
-			script_tag.onreadystatechange = function () { // Same thing but for IE
-				if ( this.readyState == 'complete' || this.readyState == 'loaded' ) {
-					scriptLibHandler();					
-				}
-			};
-			
-			// Try to find the head, otherwise default to the documentElement
-			( document.getElementsByTagName("head")[0] || document.documentElement ).appendChild( script_tag );
-		} else {
-			// The jQuery version on the window is the one we want to use
-			 IriSP.jQuery = window.jQuery;
-			 scriptLibHandler();
-		}
-
-		/******** Called once jQuery has loaded ******/
-		function scriptLibHandler() {
-			
-			var script_jqUi_tooltip = document.createElement( 'script' );
-			script_jqUi_tooltip.setAttribute( "type", "text/javascript" );
-			script_jqUi_tooltip.setAttribute( "src", IriSP.lib.jQueryToolTip );
-			script_jqUi_tooltip.onload = scriptLoadHandler;
-			script_jqUi_tooltip.onreadystatechange = function () { // Same thing but for IE
-				if ( this.readyState == 'complete' || this.readyState == 'loaded' ) {
-					scriptLoadHandler( "jquery.tools.min.js loded" );
-				}
-			};
-			
-			var script_swfObj = document.createElement('script');
-			script_swfObj.setAttribute( "type","text/javascript" );
-			script_swfObj.setAttribute( "src",IriSP.lib.swfObject );
-			script_swfObj.onload = scriptLoadHandler;
-			script_swfObj.onreadystatechange = function () { // Same thing but for IE
-				if ( this.readyState == 'complete' || this.readyState == 'loaded' ) {
-					scriptLoadHandler( "swfobject.js loded" );
-				}
-			};
-		
-			var script_jqUi = document.createElement( 'script' );
-			script_jqUi.setAttribute( "type","text/javascript" );
-			script_jqUi.setAttribute( "src",IriSP.lib.jQueryUI );
-			script_jqUi.onload = scriptLoadHandler;
-			script_jqUi.onreadystatechange = function () { // Same thing but for IE
-				if ( this.readyState == 'complete' || this.readyState == 'loaded' ) {
-					scriptLoadHandler( "jquery-ui.min.js loded" );
-				}
-			};
-		
-
-			( document.getElementsByTagName("head")[0] || document.documentElement ).appendChild( script_jqUi_tooltip);
-			( document.getElementsByTagName("head")[0] || document.documentElement ).appendChild( script_jqUi );
-			( document.getElementsByTagName("head")[0] || document.documentElement ).appendChild( script_swfObj );
-			
-
-		};
-
-		/******** Called once all lib are loaded ******/
-		var loadLib = 0;
-		/* FIXME : ugly */
-		function scriptLoadHandler( Mylib ) {
-			//alert(Mylib);
-			loadLib +=1;
-			if( loadLib===3 ) { 
-				main(); 			  
-			}
-		};
-
-		/******** Our main function ********/
-		function main() { 
-			
-
-			//  Make our own IriSP.jQuery and restore window.jQuery if there was one. 
-			IriSP.jQuery = window.jQuery.noConflict( true );
-			// Call ours Jquery
-			IriSP.jQuery( document ).ready( function($) { 
-				
-				/******* Load CSS *******/
-				var css_link_jquery = IriSP.jQuery( "<link>", { 
-					rel: "stylesheet", 
-					type: "text/css", 
-					href: IriSP.lib.cssjQueryUI,
-					'class': "dynamic_css"
-				} );
-				var css_link_custom = IriSP.jQuery( "<link>", { 
-					rel: "stylesheet", 
-					type: "text/css", 
-					href: IriSP.config.gui.css,
-					'class': "dynamic_css"
-				} );
-				
-				css_link_jquery.appendTo( 'head' );
-				css_link_custom.appendTo( 'head' );   
-
-				// to see dynamicly loaded css on IE
-				if ( $.browser.msie ) {
-					$( '.dynamic_css' ).clone().appendTo( 'head' );
-				}
-				
-				//__IriSP.trace("main","ready createMyHtml");
-				
-				IriSP.createPlayerChrome();
-				
-				/******* Load Metadata *******/
-				IriSP.getMetadata();
-			
-			});
-		}
-
-};
-
-
-__IriSP.Media = function ( id, url, duration, title, description ) {
-		this.id 		 	= id;
-		this.url 		= url;
-		this.title 		= title;
-		this.description = description;
-		this.duration 	= duration;
-		this.lignes 	  	= new Array();
-
-		IriSP.trace( "__IriSP.Media" , "Media ID : "+id);
-		IriSP.trace( "__IriSP.Media" , "Media URL : "+url);
-		IriSP.trace( "__IriSP.Media" , "Media title : "+title);
-};
-
-__IriSP.Media.prototype.createPlayerMedia = function ( width, height, MyStreamer, MySwfPath) {
-		IriSP.MyApiPlayer = new __IriSP.APIplayer( width, height, this.url, this.duration, MyStreamer, MySwfPath);
-		//createPlayer(width,height,this.url,this.duration,MyStreamer,MySwfPath);
-};
-
-__IriSP.Media.prototype.getMediaDuration = function () {
-		return (this.duration);
-};
-
-__IriSP.Media.prototype.getMediaTitle = function (){
-		return (this.title);
-};
-
-
-
-
-
-
-/*  FIXME : API player - work in progress ... need refactoring of code */ 
-__IriSP.APIplayer = function ( width, height, url, duration, streamerPath, MySwfPath){
-		
-		
-		this.player 			= null;
-		this.hashchangeUpdate 	= null;
-		
-		this.width				= width;
-		this.height				= height;
-		this.url				= url;
-		this.duration			= duration;
-		this.streamerPath		= streamerPath;
-		this.MySwfPath			= MySwfPath;
-		
-		IriSP.MyApiPlayer		= this;
-		
-		IriSP.createPlayer( this.url, this.streamerPath );
-		IriSP.trace( "__IriSP.APIplayer", "__IriSP.createPlayer" );
-	
-	//__IriSP.config.player
-	/*
-	- dailymotion  // &enableApi=1&chromeless=1
-	- youtube 
-	- html5
-	- flowplayer 
-	- jwplayer
-	*/
-		
-};
-
-__IriSP.APIplayer.prototype.ready = function( player ) {
-
-	//__IriSP.trace("__IriSP.APIplayer.prototype.APIpReady"," __IriSP.createInterface");
-	IriSP.createInterface( this.width, this.height, this.duration );
-	//__IriSP.trace("__IriSP.APIplayer.prototype.APIpReady","END  __IriSP.createInterface");
-
-	// hashchange EVENT
-	if ( window.addEventListener ){
-	
-	// for firefox  hashchange EVENT
-		window.addEventListener( "hashchange", function() {
-		  var url = window.location.href;
-		  var time = IriSP.retrieveTimeFragment( url );
-		  IriSP.trace( "__IriSP.APIplayer.prototype.ready", time );
-		  if( IriSP.MyApiPlayer.hashchangeUpdate==null ){
-			IriSP.MyApiPlayer.seek( time );
-			
-		  } else {			  
-			IriSP.MyApiPlayer.hashchangeUpdate = null;
-		  }
-		}, false );
-	 
-	} else if (window.attachEvent){
-	// for ie hashchange EVENT
-		window.attachEvent( "onhashchange", function() {
-		  IriSP.trace( "hashchange",time );
-		  var url = window.location.href;
-		  var time = IriSP.retrieveTimeFragment( url );
-		  if( IriSP.MyApiPlayer.hashchangeUpdate == null ){
-			IriSP.MyApiPlayer.seek(time);
-		  } else {
-			IriSP.MyApiPlayer.hashchangeUpdate = null;
-		  }
-		}, false);
-	}
-	
-	// Search
-	//__IriSP.jQuery("#LdtSearchInput").change(function() {__IriSP.Search(this.value);});
-	//__IriSP.jQuery("#LdtSearchInput").live('change', function(event) {__IriSP.Search(this.value);}); 
-	IriSP.jQuery( "#LdtSearchInput" ).keydown( function() { IriSP.Search( this.value );} );
-	IriSP.jQuery("#LdtSearchInput").keyup( function() { IriSP.Search( this.value );} );
-	
-};
-
-__IriSP.APIplayer.prototype.pause = function(){
-	this.hashchangeUpdate = true;
-	IriSP.player.sendEvent( 'PAUSE' );
-};
-
-__IriSP.APIplayer.prototype.play  = function() {
-	this.hashchangeUpdate = true;
-	//__IriSP.trace("__IriSP.config.player.type",__IriSP.config.player.type);
-	if( IriSP.config.player.type=='jwplayer' ){
-	
-		IriSP.player.sendEvent( 'PLAY' );
-		
-	} else if(IriSP.config.player.type == 'dailymotion' 
-			  || IriSP.config.player.type == 'youtube' ) {
-			  
-		var status = IriSP.player.getPlayerState();
-		IriSP.trace( "__IriSP.APIplayer.prototype.play.status", status);
-		if ( status != 1 ){
-			IriSP.player.playVideo();
-		} else {
-			IriSP.player.pauseVideo();
-		}
-	}
-};
-
-__IriSP.APIplayer.prototype.mute  = function() {
-	IriSP.player.sendEvent( 'MUTE' );
-	
-	//alert(__IriSP.jQuery(".ui-icon-volume-on").css("background-position-x"));
-	/* FIXME : remove hardcoded values */
-	if ( IriSP.jQuery( ".ui-icon-volume-on" ).css( "background-position" ) == "-144px -160px" ){
-		IriSP.jQuery(" .ui-icon-volume-on ").css(" background-position ", "-130px -160px");
-	} else {
-		IriSP.jQuery( ".ui-icon-volume-on" ).css( "background-position", "-144px -160px" );
-	}
-};
-
-/* FIXME : rename */
-__IriSP.APIplayer.prototype.share = function( network ) {
-
-	/* FIXME : remove hardcoded */
-	var MyMessage = encodeURIComponent( "J'écoute Les Retours du Dimanche : " );
-	var MyURLNow = window.location.href;
-	var shareURL = null;
-	//alert(network+" : "+MyURLNow);
-	
-	/* FIXME : use a sharing library */
-	if(network == "facebook"){
-			shareURL = "http://www.facebook.com/share.php?u=";			
-		}else if(network == "twitter"){
-			shareURL  = "http://twitter.com/home?status="+MyMessage;	
-		}else if(network == "myspace"){
-			shareURL ="http://www.myspace.com/Modules/PostTo/Pages/?u=";
-		}else if(network == "delicious"){
-			shareURL = "http://delicious.com/save?url=";
-		}else if(network == "JameSpot"){
-			shareURL = "http://www.jamespot.com/?action=spotit&u=";
-			//alert(network+" non actif pour l'instant : "+MyURLNow);
-	}
-	
-	if (shareURL != null)
-		window.open( shareURL+encodeURIComponent(MyURLNow) );
-	//window.location.href = shareURL+encodeURIComponent(MyURLNow);
-};
-
-__IriSP.APIplayer.prototype.seek = function (time) {
-	
-	if( time==0 ) { time=1; }
-	
-	IriSP.trace( "__IriSP.APIplayer.prototype.seek", time );
-	
-	if( IriSP.config.player.type=='jwplayer') {
-		//__IriSP.MyApiPlayer.play()
-		IriSP.player.sendEvent( 'SEEK', time );
-	} else if( IriSP.config.player.type=='dailymotion'
-			|| IriSP.config.player.type=='youtube' ) {
-		IriSP.player.seekTo( time );
-	}
-	
-	this.changePageUrlOffset( time );
-};
-
-__IriSP.APIplayer.prototype.update = function (time) {
-	
-	if( time != 0 ) {
-		this.hashchangeUpdate = true;
-		
-		IriSP.trace( "__IriSP.APIplayer.prototype.update" ,time);
-		IriSP.player.sendEvent( 'SEEK', time );
-	}
-};
-
-__IriSP.APIplayer.prototype.changePageUrlOffset = function ( time ) {
-	//alert(time);
-  IriSP.trace( "__IriSP.APIplayer.prototype.changePageUrlOffset" , "CHANGE URL "+ time);
-  
-  window.location.hash = "#t=" + time;
-  window.location.href =  window.location.href;
-  
-};
-
-/* Media Fragment functionality by Silvia Pfeiffer */ 
-
-IriSP.jumpToTimeoffset = function ( form ) {
-	var time = form.time.value;
-	IriSP.MyApiPlayer.changePageUrlOffset( time );
-};
-
-IriSP.retrieveTimeFragment = function ( url ) {
-  var pageoffset = 0;
-  var offsettime = 0;
-  
-  if ( url.split("#")[1] != null ) {
-	pageoffset = url.split( "#" )[1];
-		if ( pageoffset.substring( 2 ) != null ) {
-			offsettime = pageoffset.substring( 2 );
-		}
-	}
-	return offsettime;
-};
-
-IriSP.ignoreTimeFragment = function( url ){
-
-	var pageurl = url;
-	
-	if ( url.split( "#" )[1] != null ) {
-		pageurl = url.split( "#" )[0];
-	}
- 
-	return pageurl;
-};
-
-
-/* code specific to jwplayer / creation and listener */
-
-IriSP.currentPosition 	= 0; 
-IriSP.currentVolume   	= 50; 
-IriSP.player 			= null;
-IriSP.startPosition 	= null;
-IriSP.firstplay	 		= false;
-
-
-
-IriSP.createPlayer = function ( url, streamerPath ) {
-	if( IriSP.config.player.type=='dailymotion' ) {
-		IriSP.config.player.src = IriSP.config.player.src+"&chromeless=1&enableApi=1";
-	} else if ( IriSP.config.player.type=='youtube' ){
-		IriSP.config.player.src = IriSP.config.player.src+"&enablejsapi=1&version=3";
-	}
-	
-	IriSP.trace( "__IriSP.createPlayer", "start" );			
-	
-	IriSP.myUrlFragment = url.split( streamerPath );	
-	
-	var configTemp = IriSP.jQuery.extend( true, {}, IriSP.config );
-	configTemp.player.flashvars.autostart =	"true";
-	configTemp.player.flashvars.streamer =	streamerPath;
-	configTemp.player.flashvars.file =	IriSP.myUrlFragment[1];
-	
-	var flashvars 		  = configTemp.player.flashvars;
-	var params 			  = configTemp.player.params;
-	var attributes 		  = configTemp.player.attributes;
-	
-	IriSP.trace(
-				  "__IriSP.createPlayer",
-				  "SWFOBJECT src:"+
-				  IriSP.config.player.src+
-				  " " +IriSP.config.gui.width+
-				  " " +IriSP.config.gui.height
-				  );
-	
-	swfobject.embedSWF(
-						IriSP.config.player.src,
-						"Ldt-PlaceHolder",
-						IriSP.config.gui.width,
-						IriSP.config.gui.height,
-						"9.0.115", // FIXME : de-hardcode version ?
-						false,
-						flashvars,
-						params,
-						attributes
-					);
-	
-	// need a methode to 
-	// re execute if this swf call does'nt work 
-};
-
-
-/* jw player api */
-IriSP.playerReady  = function (thePlayer) {
-
-	//__IriSP.trace("__IriSP.playerReady","PLAYER READY !!!!!!!!!!!!");
-	IriSP.player = window.document[thePlayer.id];
-	//__IriSP.trace("__IriSP.playerReady","API CALL "+__IriSP.player);
-	IriSP.MyApiPlayer.ready( IriSP.player );
-	//__IriSP.trace("__IriSP.playerReady","API CALL END ");
-	
-	var url = document.location.href;
-	var time = IriSP.retrieveTimeFragment( url );
-	//__IriSP.trace("__IriSP.playerReady"," "+url+" "+time );
-	IriSP.startPosition = time;
-	//__IriSP.trace("__IriSP.playerReady"," LISTENER LAUCHER");
-	IriSP.addListeners();	
-	//__IriSP.trace("__IriSP.playerReady"," LISTENER END");
-	
-};
-
-IriSP.addListeners = function () {
-	if ( IriSP.player ) { 
-		IriSP.trace("__IriSP.addListeners","ADD  Listener ");
-		IriSP.player.addModelListener( "TIME", "__IriSP.positionListener");
-		IriSP.player.addControllerListener( "VOLUME", "__IriSP.volumeListener" );
-		IriSP.player.addModelListener( 'STATE', '__IriSP.stateMonitor' );
-	} else {
-		IriSP.setTimeout( "__IriSP.addListeners()", 100 );
-	}
-
-	// et changer les boutons
-};
-
-IriSP.stateMonitor = function ( obj ) { 
-
-	 if(obj.newstate == 'PAUSED') {
-		IriSP.trace( "__IriSP.stateMonitor", "PAUSE" );
-		IriSP.MyApiPlayer.changePageUrlOffset( IriSP.currentPosition );			
-		IriSP.jQuery( ".ui-icon-play" ).css( "background-position","0px -160px" );
-		
-	} else if (obj.newstate == 'PLAYING' ){
-		
-		IriSP.trace( "__IriSP.stateMonitor", "PLAYING "+IriSP.startPosition );
-		
-		// force buffering even if autostart is disabled. 
-		if ( IriSP.config.player.flashvars.autostart == "false" && IriSP.firstplay == false && IriSP.startPosition == 0 ) {
-			IriSP.trace("__IriSP.stateMonitor","first stop ???");
-			IriSP.MyApiPlayer.play();
-			IriSP.firstplay = true;
-			IriSP.MyLdt.checkTime( 1 );
-		}
-		
-		// once that the video is loaded, move it to the correct timecode
-		if( IriSP.startPosition!=null ){
-			IriSP.MyApiPlayer.update( IriSP.startPosition );
-			IriSP.startPosition = null;
-		}
-		
-		
-		IriSP.jQuery( ".ui-icon-play" ).css( "background-position", "-16px -160px" );
-	} else if (obj.newstate == 'BUFFERING'){
-		IriSP.trace( "__IriSP.stateMonitor", "BUFFERING : "+IriSP.config.player.flashvars.autostart );
-		//changePageUrlOffset(currentPosition);
-	}
-	
-};
-
-IriSP.positionListener = function(obj) { 
-	//__IriSP.trace("__IriSP.positionListener",obj.position);
-	IriSP.currentPosition = obj.position; 
-	var tmp = document.getElementById( "posit" );
-	if (tmp) { tmp.innerHTML = "position: " + IriSP.currentPosition; }
-	IriSP.jQuery( "#slider-range-min" ).slider( "value", obj.position);
-	IriSP.jQuery( "#amount" ).val(obj.position+" s");
-	// display annotation 
-	IriSP.MyLdt.checkTime( IriSP.currentPosition );
-	
-};
-
-IriSP.volumeListener   = function (obj) { 
-	IriSP.currentVolume = obj.percentage; 
-	var tmp = document.getElementById("vol");
-	if (tmp) { tmp.innerHTML = "volume: " + IriSP.currentVolume; }
-};
-
-
-/* dailymotion api 	*/
-onDailymotionPlayerReady = function (playerid) {
-
-	//alert(playerid);
-	IriSP.player = document.getElementById( IriSP.config.player.attributes.id );
-	IriSP.MyApiPlayer.ready( IriSP.player );
-	
-	var url = document.location.href;
-	var time = IriSP.retrieveTimeFragment( url );
-	IriSP.startPosition = time;
-	IriSP.DailymotionAddListeners();	
-	
-	IriSP.MyApiPlayer.ready(playerid);
-};
-
-IriSP.DailymotionAddListeners = function () {
-	if ( IriSP.player ) { 
-		IriSP.trace( "__IriSP.addListeners","ADD  Listener " );
-		//__IriSP.player.addEventListener("onStateChange", "__IriSP.DailymotionPositionListener");
-		setTimeout( "__IriSP.DailymotionPositionListener()", 100);
-		IriSP.DailymotionPositionListener();
-		/* FIXME : works only with jwplayer */
-		IriSP.player.addModelListener( "VOLUME", "__IriSP.volumeListener" );
-		//__IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor');
-	} else {
-		IriSP.setTimeout( "__IriSP.DailymotionAddListeners()", 100);
-	}
-};
-
-IriSP.DailymotionPositionListener = function() { 
-	
-	IriSP.currentPosition = IriSP.player.getCurrentTime();
-	//__IriSP.trace("__IriSP.DailymotionPositionListener",__IriSP.currentPosition);
-	//__IriSP.trace("__IriSP.currentPosition",__IriSP.currentPosition);
-	
-	IriSP.jQuery( "#slider-range-min" ).slider( "value" , IriSP.currentPosition);
-	IriSP.jQuery( "#amount" ).val( IriSP.currentPosition+" s" );
-	// afficher annotation 
-	/*__IriSP.MyLdt.checkTime(__IriSP.currentPosition);
-	*/
-	
-	setTimeout( "__IriSP.DailymotionPositionListener()", 10 );
-};
-
-/* youtube api 	*/
-onYouTubePlayerReady= function (playerid){
-
-	var url = document.location.href;
-	var time = IriSP.retrieveTimeFragment( url );
-	IriSP.player = document.getElementById( IriSP.config.player.attributes.id );
-	IriSP.startPosition = time;
-	
-	IriSP.MyApiPlayer.ready( IriSP.player );
-	
-	IriSP.MyApiPlayer.seek( time );
-	IriSP.MyApiPlayer.play();
-	
-	
-	IriSP.YouTubeAddListeners();	
-	IriSP.trace( "onYouTubePlayerReady=", time);
-	//__IriSP.MyApiPlayer.ready(playerid);
-};
-
-IriSP.YouTubeAddListeners = function () {
-	if ( IriSP.player ) { 
-		IriSP.trace( "__IriSP.addListeners", "ADD  Listener " );
-		IriSP.player.addEventListener( "onStateChange", "__IriSP.YouTubeStateMonitor" );
-		setTimeout( "__IriSP.YouTubePositionListener()", 100 );
-		
-		/* FIXME : works only with jwplayer */
-		IriSP.player.addModelListener( "VOLUME", "__IriSP.volumeListener" );
-		//__IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor');
-	} else {
-	}
-};
-
-IriSP.YouTubePositionListener = function() { 
-	
-	IriSP.currentPosition = IriSP.player.getCurrentTime();
-	//__IriSP.trace("__IriSP.YouTubePositionListener",__IriSP.currentPosition);
-	//__IriSP.trace("__IriSP.currentPosition",__IriSP.currentPosition);
-	
-	IriSP.MyLdt.checkTime(IriSP.currentPosition);
-	IriSP.jQuery( "#slider-range-min" ).slider( "value", IriSP.currentPosition );
-	IriSP.jQuery( "#amount" ).val( IriSP.currentPosition+" s" );
-	// afficher annotation 
-	IriSP.MyLdt.checkTime( IriSP.currentPosition );
-	
-	
-	setTimeout( "__IriSP.YouTubePositionListener()", 10 );
-};
-
-IriSP.YouTubeStateMonitor = function (obj) { 
-	IriSP.player.addModelListener( '__IriSP.YouTubeStateMonitor ', newstate );
-	//alert(newstate+" "+obj.newstate);
-	 if(newstate == '2') {
-		IriSP.trace("__IriSP.stateMonitor","PAUSE");
-		IriSP.MyApiPlayer.changePageUrlOffset( IriSP.currentPosition );
-		
-	} else if (newstate == '1' || newstate == '1') {
-		// une fois la video prete a lire  la déplacer au bon timecode 
-		if( IriSP.startPosition!=null ) {
-			IriSP.MyApiPlayer.update( IriSP.startPosition );
-			IriSP.startPosition = null;
-		}
-	} else if (newstate == '3'){
-		IriSP.trace("__IriSP.stateMonitor","BUFFERING : ");
-		//changePageUrlOffset(currentPosition);
-	}
-	
-};
-
-
-/* 	utils */
-// code from http://stackoverflow.com/questions/822452/strip-html-from-text-javascript
-/* FIXME: maybe make it a little more robust */
-IriSP.stripHtml = function(s){
-	return s.replace(/\\&/g, '&amp;').replace(/\\</g, '&lt;').replace(/\\>/g, '&gt;').replace(/\\t/g, '&nbsp;&nbsp;&nbsp;').replace(/\\n/g, '<br />').replace(/'/g, '&#39;').replace(/"/g, '&quot;');
-};
-
-// conversion de couleur Decimal vers HexaDecimal || 000 si fff
-/* FIXME : move it somewhere else */
-IriSP.DEC_HEXA_COLOR = function (dec) {
-	 var hexa='0123456789ABCDEF',hex='';
-	 var tmp;
-	 while (dec>15){
-		  tmp = dec-(Math.floor(dec/16))*16;
-		  hex = hexa.charAt(tmp)+hex;
-		  dec = Math.floor(dec/16);
-	 }
-	 hex = hexa.charAt(dec)+hex;
-	 if (hex == "FFCC00"){ hex="";/* by default color of Ldt annotation */ }
-	 return(hex);
-};
-
-
-/* Search  methods	*/
-IriSP.SearchOldValue="";
-IriSP.searchblockOpen=false;
-IriSP.searchblock = function () {
-	IriSP.trace( "__IriSP.searchblock", IriSP.searchblockOpen );
-	
-	if ( IriSP.searchblockOpen == false ) {
-		IriSP.jQuery( ".ui-icon-search" ).css( "background-position", "-144px -112px" );
-		//__IriSP.jQuery("#LdtSearch").animate({height:26},250);
-		IriSP.jQuery("#LdtSearch").show(250);
-		/* FIXME : refactor this */
-		IriSP.jQuery("#LdtSearchInput").css('background-color','#fff');
-		IriSP.jQuery("#LdtSearchInput").focus();
-		IriSP.jQuery("#LdtSearchInput").attr('value',IriSP.SearchOldValue);
-		IriSP.Search(IriSP.SearchOldValue);
-		IriSP.searchblockOpen = true;
-	} else {
-		IriSP.SearchOldValue = IriSP.jQuery("#LdtSearchInput").attr('value');
-		IriSP.jQuery("#LdtSearchInput").attr('value','');
-		IriSP.SearchClean();
-		IriSP.jQuery(".ui-icon-search").css("background-position","-160px -112px");
-		//__IriSP.jQuery("#LdtSearch").animate({height:0},250);
-		IriSP.jQuery("#LdtSearch").hide(250);
-		IriSP.searchblockOpen = false;
-	}
-};
-
-/* Search with typeahead */
-IriSP.Search = function ( value ){
-
-	annotations = IriSP.LDTligne.annotations;
-	
-	IriSP.trace("__IriSP.Search", annotations.length+" "+value);
-	
-	var found  = 0;
-	var findmem = 0;
-	var factor  = 0;
-	IriSP.trace(value,value.length);
-	var valueS = value.toLowerCase();
-	IriSP.trace("__IriSP.Search", annotations.length+" "+valueS);
-	if(valueS.length>=3){
-		
-		for (var i=0; i < annotations.length; ++i){
-			annotation = annotations[i];
-			
-			IriSP.jQuery("#output2").text(annotation.title+" ?= "+value);
-			
-			chaine1 = annotation.title.toLowerCase();
-			chaine2 = annotation.description.toLowerCase();
-			chaine3 = annotation.htmlTags.toLowerCase();
-			
-			if(chaine1.indexOf(valueS,0) !=-1){
-				found+=1;	
-			}
-			if(chaine2.indexOf(valueS,0) !=-1){
-				found+=1;	
-			}
-			if(chaine3.indexOf(valueS,0) !=-1){
-				found+=1;	
-			}
-			
-			findmem += found;
-			if(found>0){
-				factor = found*8;
-				IriSP.jQuery("#"+annotation.id).dequeue();
-				IriSP.jQuery("#"+annotation.id).animate({height:factor},200);
-				IriSP.jQuery("#"+annotation.id).css('border','2px');
-				IriSP.jQuery("#"+annotation.id).css('border-color','red');
-				IriSP.jQuery("#"+annotation.id).animate({opacity:0.6},200);
-				
-				IriSP.trace("!!!!!!!!!!!!!!!!!!"," ?= "+annotation.id);
-				IriSP.jQuery("#LdtSearchInput").css('background-color','#e1ffe1');
-			}else {
-				IriSP.jQuery("#"+annotation.id).dequeue();
-				IriSP.jQuery("#"+annotation.id).animate({height:0},250);
-				IriSP.jQuery("#"+annotation.id).animate({opacity:0.3},200);
-			}
-			
-			found = 0;
-		}
-		if(findmem==0){
-				IriSP.jQuery("#LdtSearchInput").css('background-color','#f6f6f6');
-		}
-		
-	} else if(value.length==0){
-		IriSP.SearchClean();
-		IriSP.jQuery("#LdtSearchInput").css('background-color','#fff');		
-	} else {
-		IriSP.SearchClean();
-		IriSP.jQuery("#LdtSearchInput").css('background-color','#f6f6f6');
-	}
-};
-
-IriSP.SearchClean = function (){
-	annotations = IriSP.LDTligne.annotations;
-	
-	for (var i=0; i < annotations.length; ++i){
-			annotation = annotations[i];
-			IriSP.jQuery("#"+annotation.id).dequeue();
-			IriSP.jQuery("#"+annotation.id).animate({height:0},100);	
-			IriSP.jQuery("#"+annotation.id).css('border','0px');
-			IriSP.jQuery("#"+annotation.id).css('border-color','red');
-			IriSP.jQuery("#"+annotation.id).animate({opacity:0.3},100);
-		}
-};
-
-
-IriSP.SearchThisSegment = function (annotation){
-	/* FIXME: to implement */
-					IriSP.jQuery("#LdtSearchInput").text(annotation.title);
-					IriSP.trace("__IriSP.Ligne.prototype.checkTimeLigne",annotation.title);
-					/*__IriSP.jQuery("#Ldt-SaDescription").text(annotationTempo.description);
-					__IriSP.jQuery("#Ldt-SaKeywordText").html("Mots clefs : "+annotationTempo.htmlTags);*/
-};
-
-
-/* CLASS Ligne (annotationType) 	*/
-
-IriSP.LDTligne 	= null;		
-__IriSP.Ligne = function( id, title, description, duration ) {
-	this.id 		 = id;
-	this.title 		 = title;
-	this.description = description;
-	//
-	this.annotations = new Array();
-	this.duration = duration;
-	this.annotationOldRead = "";
-	IriSP.LDTligne = this;
-	IriSP.trace("__IriSP.Ligne","CREATE "+IriSP.LDTligne);
-};
-
-__IriSP.Ligne.prototype.addAnnotation = function ( id, begin, end, media, title, description, color, tags ) {
-	var myAnnotation = new __IriSP.Annotation(id,begin,end,media,title,description,color,tags,this.duration);
-	this.annotations.push(myAnnotation);
-	//__IriSP.trace("__IriSP.Ligne.prototype.addAnnotation  ","add annotation "+title);
-};
-
-__IriSP.Ligne.prototype.onClickLigneAnnotation = function( id ) {
-	/* TODO implement */
-	//changePageUrlOffset(currentPosition);
-	//player.sendEvent('SEEK', this.start);
-	//__IriSP.trace("SEEK",this.start);
-};
-
-__IriSP.Ligne.prototype.searchLigneAnnotation = function( id ) {
-	/* TODO implement */
-	/*for (){
-	}*/
-};
-
-__IriSP.Ligne.prototype.listAnnotations = function() {
-	/* TODO implement */
-};
-
-__IriSP.Ligne.prototype.nextAnnotation = function () {
-	
-	var annotationCibleNumber = this.numAnnotation(this.annotationOldRead)+1;
-	var annotationCible = this.annotations[annotationCibleNumber];
-
-	if( annotationCibleNumber<this.annotations.length-1 ){
-		IriSP.player.sendEvent( 'SEEK', annotationCible.begin/1000 );
-		IriSP.trace( "LIGNE  ", "| next = "+annotationCibleNumber+" - "+this.annotations.length+" | seek :"+annotationCible.begin/1000);
-	} else {
-		IriSP.player.sendEvent( 'SEEK', this.annotations[0].begin/1000);
-	}
-		
-};
-
-__IriSP.Ligne.prototype.numAnnotation = function (annotationCible){
-	for (var i=0; i < this.annotations.length; ++i){
-		if(annotationCible == this.annotations[i]){
-			return i;
-		}
-	}
-};
-
-__IriSP.Ligne.prototype.checkTime = function(time){
-	
-	var annotationTempo = -1;
-	//__IriSP.trace("__IriSP.Ligne.prototype.checkTimeLigne",time);
-	//__IriSP.trace("__IriSP.Ligne.prototype.checkTimeLigne",this.annotations.length);
-	
-	for (var i=0; i < this.annotations.length; ++i){
-		annotationTempo = this.annotations[i];	
-		
-		//__IriSP.SearchThisSegment(annotationTempo);
-		
-		if (time>annotationTempo.begin/1000 && time<annotationTempo.end/1000){
-			
-				// different form the previous
-				if(annotationTempo!=this.annotationOldRead){
-					this.annotationOldRead = annotationTempo;
-					IriSP.jQuery("#Ldt-SaTitle").text(annotationTempo.title);
-					IriSP.jQuery("#Ldt-SaDescription").text(annotationTempo.description);
-					IriSP.jQuery("#Ldt-SaKeywordText").html("Mots clefs : "+annotationTempo.htmlTags);
-					
-					//__IriSP.jQuery('#Ldt-ShowAnnotation').slideDown();
-					var startPourcent 	= annotationTempo.timeToPourcent((annotationTempo.begin*1+(annotationTempo.end*1-annotationTempo.begin*1)/2),annotationTempo.duration*1); 
-					IriSP.jQuery("#Ldt-Show-Arrow").animate({left:startPourcent+'%'},1000);
-					IriSP.jQuery("#"+annotationTempo.id).animate({alpha:'100%'},1000);
-					//alert(startPourcent);
-					var tempolinkurl  =  IriSP.ignoreTimeFragment(window.location.href)+"#t="+(this.annotations[i].begin/1000);
-				}
-			break;
-		} else {
-		annotationTempo = -1;
-		}		
-		
-	}
-	// si il y en a pas : retractation du volet 
-	if( annotationTempo == -1){
-		if(annotationTempo != this.annotationOldRead){
-			IriSP.trace("Check : ","pas d'annotation ici ");
-			IriSP.jQuery("#Ldt-SaTitle").text("");
-			IriSP.jQuery("#Ldt-SaDescription").text("");
-			IriSP.jQuery("#Ldt-SaKeywordText").html("");
-			IriSP.jQuery('#Ldt-ShowAnnotation').slideUp();
-			if(this.annotationOldRead){
-				IriSP.jQuery("#"+this.annotationOldRead.id).animate({alpha:'70%'},1000);
-			}
-			//__IriSP.jQuery("#Ldt-Show-Arrow").animate({left:'0%'},1000);
-			this.annotationOldRead = annotationTempo;
-		}
-	}
-	//__IriSP.trace("__IriSP.Ligne.prototype.checkTimeLigne",annotationTempo);
-};
-
-
-/* CLASS Annotation */
-
-__IriSP.Annotation = function (){
-	var id 	= null;
-	var begin 			= null;
-	var end 			= null;
-	var media 			= null;
-	var description	= null;
-	var title 			= null;
-	var color 			= null;
-	var tags			= null;
-	IriSP.trace("annotation ","réussi");
-};
-
-__IriSP.Annotation = function( id, begin, end, media, title, description, color, tags, duration ){
-	this.id 			= id;
-	this.begin 			= begin;
-	this.end 			= end;
-	this.media 			= media;
-	this.description 	= description;
-	this.title 			= title;
-	this.color 			= color;
-	this.tags			= tags;
-	this.htmlTags		= "";
-	this.duration		= duration;
-	// draw it 
-	this.draw();
-	this.drawTags();
-	//
-	IriSP.trace("Annotation created : ",id);
-};
-
-__IriSP.Annotation.prototype.draw = function(){
-	//alert (this.duration);
-	var startPourcent 	= this.timeToPourcent(this.begin,this.duration); // temps du media 
-	var endPourcent 	= this.timeToPourcent(this.end,this.duration)-startPourcent;
-	var divTitle		= this.title.substr(0,55);
-	
-	//IriSP.jQueryAnnotationTemplate = "<div title='"+IriSP.stripHtml(titleForDiv)+"' 
-	//id='"+this.id+"'  class='ui-slider-range ui-slider-range-min ui-widget-header iri-chapter' 
-	//width='100%' style=\"left:"+startPourcent+"%; width:"+endPourcent+"%; 
-	//padding-top:15px; border-left:solid 1px #aaaaaa; border-right:solid 1px #aaaaaa; 
-	//background:#"+IriSP.DEC_HEXA_COLOR(this.color)+";\" 
-	//onClick=\"__IriSP.MyApiPlayer.seek('"+Math.round(this.begin/1000)+"');
-	//__IriSP.jQuery('#Ldt-ShowAnnotation').slideDown();\"    ></div> ";
-	//alert(this.color+" : "+DEC_HEXA_COLOR(this.color));
-		
-	IriSP.jQueryAnnotationTemplate = Mustache.to_html(IriSP.annotation_template,
-			{"divTitle" : divTitle, "id" : this.id, "startPourcent" : startPourcent,
-			"endPourcent" : endPourcent, "hexa_color" : IriSP.DEC_HEXA_COLOR(this.color),
-			"seekPlace" : Math.round(this.begin/1000)});
-	
-	IriSP.jQuerytoolTipTemplate = Mustache.to_html(IriSP.tooltip_template, 
-				{"title" : this.title, "begin" : this.begin, "end" : this.end,
-				"description": this.description});
-	
-	
-	IriSP.jQuery("<div>"+IriSP.jQueryAnnotationTemplate+"</div>").appendTo("#Ldt-Annotations");
-	// TOOLTIP BUG ! 
-	
-	IriSP.jQuery("#"+this.id).tooltip({ effect: 'slide'});
-	
-	
-	IriSP.jQuery("#"+this.id).fadeTo(0,0.3);
-	IriSP.jQuery("#"+this.id).mouseover(function() {
-		IriSP.jQuery("#"+this.id).animate({opacity: 0.6}, 5);
-	}).mouseout(function(){		
-		IriSP.jQuery("#"+this.id).animate({opacity: 0.3}, 5);
-	});
-	IriSP.trace("__IriSP.Annotation.prototype.draw","ADD ANOTATION : "+this.begin+" "+this.end+" "+IriSP.stripHtml(this.title)+" | "+startPourcent+" | "+endPourcent+" | duration = "+this.duration);
-	
-};
-
-__IriSP.Annotation.prototype.drawTags = function(){
-	/* FIXME : to implement */
-	var KeywordPattern = '<a href=\"\"> '+' </a>';
-	
-	//__IriSP.trace(" !? Tags : ",this.tags);
-	
-	if (this.tags!=undefined){
-		for (var i = 0; i < this.tags.length; ++i){
-			
-			//this.htmlTags += '<span onclick=\"ShowTag('+this.tags[i]['id-ref']+');\"  > '+MyTags.getTitle(this.tags[i]['id-ref'])+' </span>'+" , ";
-			this.htmlTags += '<span> '+IriSP.MyTags.getTitle(this.tags[i]['id-ref'])+' </span>'+" , ";
-			
-		}		
-	}
-};
-
-__IriSP.Annotation.prototype.tootTipAnnotation = function() {
-	// 1 chercher le div correspondant
-	// 2 y mettre les information
-	return this.color + ' ' + this.type + ' apple';
-};
-
-__IriSP.Annotation.prototype.onRollOverAnnotation = function (){
-	this.tootTip();
-};
-
-__IriSP.Annotation.prototype.timeToPourcent = function(time,timetotal){
-	return (parseInt(Math.round(time/timetotal*100)));
-};
- 
-
-/* CLASS Tags */
-
-__IriSP.Tags = function(object){
-	this.myTags 	=	object;
-	this.htmlTags 	= 	null;
-	this.weigthMax 	= 	0;
-	//this.mySegments  = 	new array();
-};
-
-__IriSP.Tags.prototype.addAnnotation = function (annotation){
-	for (var i = 0; i < this.myTags.length; ++i){
-		this.myTags[i].mySegments = new Array(); 
-		if (annotation.tags!=null){
-			for (var j = 0; j < annotation.tags.length; ++j){
-				if (this.myTags[i]['id'] == annotation.tags[j]['id-ref']){
-					this.myTags[i].mySegments.push([annotation.begin,annotation.end,annotation.id]);
-					var weigthTempo = this.myTags[i].mySegments.length;
-					var tempo = this.myTags[i].mySegments[weigthTempo-1];
-					//__IriSP.trace ("__IriSP.Tags.prototype.addAnnotation ","  "+this.myTags[i]['meta']['dc:title']+" "+this.myTags[i]['id']+" : "+tempo[0]+" - "+tempo[1]);
-					
-					if (this.weigthMax < weigthTempo ){
-						this.weigthMax = weigthTempo;
-					}
-				}
-			}
-		}
-	}
-};
-
-__IriSP.Tags.prototype.getTitle = function (id){
-	for (var i = 0; i < this.myTags.length; ++i){
-		if(this.myTags[i]['id']==id){
-			return(this.myTags[i]['meta']['dc:title']);
-		}
-	}
-
-};
-
-__IriSP.Tags.prototype.draw = function (){
-
-	IriSP.trace("__IriSP.Tags.prototype.draw"," !!! WELL START " );
-	for (var i = 0; i < this.myTags.length; ++i){
-		IriSP.trace("__IriSP.Tags.prototype.draw"," ADD Tags : "+this.myTags[i]['id']);
-		if(this.myTags[i]['id']!=null){
-		this.htmlTags += '<span onclick=\"MyTags.show( \''+this.myTags[i]['id']
-						+'\');\" style=\"font-size:'  +((this.myTags[i].mySegments.length/this.weigthMax*10)+8)
-						+'px;\" alt=\"'+this.myTags[i].mySegments.length
-						+'\"> '+this.myTags[i]['meta']['dc:title']+' </span>'+' , ';
-		}
-	}
-	
-	IriSP.jQuery('#Ldt-Tags').html(this.htmlTags);
-	IriSP.trace("__IriSP.Tags.prototype.draw"," !!!!  END WMAX= "+this.weigthMax );
-	
-};
-
-__IriSP.Tags.prototype.show = function (id){
-	
-	var timeStartOffsetA	=	100000000000000000000;
-	var timeStartOffsetB	=	100000000000000000000;
-	var timeEndOffsetA		=	0;
-	var timeEndOffsetB		=	0;
-	var timeStartID;
-	var timeEndID;
-	var WidthPourCent;
-	var leftPourCent;
-	var timeStartOffset;
-	
-	// case 1 : seul segment 
-	// case 2 : 2 ou X segments 
-	
-	
-	for (var i = 0; i < this.myTags.length; ++i){
-		if (this.myTags[i]['id']==id){
-			IriSP.trace("######### TAG DRAWing : "," END" );		
-			
-			for (var j = 0; j < this.myTags[i].mySegments.length; ++j){
-				if(timeStartOffset> this.myTags[i].mySegments[j][0]){
-					timeStartOffsetA = this.myTags[i].mySegments[j][0];
-					timeStartOffsetB = this.myTags[i].mySegments[j][1];
-					timeStartID		 = this.myTags[i].mySegments[j][2]
-				}
-				if(timeStartOffset> this.myTags[i].mySegments[j][0]){
-					timeEndOffsetA  = this.myTags[i].mySegments[j][0];
-					timeEndOffsetB  = this.myTags[i].mySegments[j][1];
-					timeEndID		= this.myTags[i].mySegments[j][2]
-				}
-			}
-			
-		}
-	}
-	
-	// -------------------------------------------------
-	// 
-	// -------------------------------------------------
-	
-	leftPourCent 	= IriSP.timeToPourcent((timeStartOffsetA*1+(timeStartOffsetB-timeStartOffsetA)/2),IriSP.MyLdt.duration); 
-	WidthPourCent	= IriSP.timeToPourcent((timeEndOffsetA*1+(timeEndOffsetB-timeEndOffsetA)/2),IriSP.MyLdt.duration)-leftPourCent; 			
-	//WidthPourCent	= timeToPourcent((timeEndOffsetA*1+(timeEndOffsetB-timeEndOffsetA)/2),MyLdt.duration)-startPourcent; 			
-	IriSP.jQuery("#Ldt-Show-Tags").css('left',leftPourCent+'%');
-	IriSP.jQuery("#Ldt-Show-Tags").css('width',WidthPourCent+'%');
-	IriSP.jQuery("#Ldt-Show-Tags").text('joijoij');
-	// like arrow script
-	
-	
-	
-};
-
-
-IriSP.annotation_template = "<div title='{{divTitle}}' id='{{id}}'	class='ui-slider-range ui-slider-range-min ui-widget-header iri-chapter' 	width='100%' 	style='left: {{startPourcent}}%; width: {{endPourcent}}%; padding-top:15px; border-left:solid 1px #aaaaaa; border-right:solid 1px #aaaaaa; background:#{{hexa_color}};' 	onClick='IriSP.MyApiPlayer.seek({{seekPlace}});IriSP.jQuery(\"#Ldt-ShowAnnotation\").slideDown();'></div>";
-IriSP.annotation_loading_template = "<div id='Ldt-load-container'><div id='Ldt-loader'>&nbsp;</div> Chargement... </div>";
-IriSP.radio_template = "<div id='Ldt-Root'>	<div id='Ldt-PlaceHolder'>		<a href='http://www.adobe.com/go/getflashplayer'>Get flash</a> to see		this player	</div>	<div id='Ldt-controler' class='demo'>		<div class='Ldt-Control1'>			<button id='ldt-CtrlPlay' onclick='__IriSP.MyApiPlayer.play()'>Lecture				/ Pause</button>			<button id='ldt-CtrlNext' onclick='__IriSP.MyLdt.nextAnnotation()'>Suivant</button>		</div>		<div id='Ldt-Annotations' class='ui-slider'>			<div id='slider-range-min'></div>		</div>		<div class='Ldt-Control2'>			<button id='ldt-CtrlLink' onclick='__IriSP.searchblock()'>				Rechercher</button>			<button id='ldt-CtrlSound' onclick='__IriSP.MyApiPlayer.mute()'>Sound</button>		</div>		<div class='cleaner'>&nbsp;</div>		<div id='Ldt-Show-Arrow-container'>			<div id='Ldt-Show-Arrow'></div>		</div>	</div>	<div>		<div id='ldt-Show'></div>		<div id='Ldt-ShowAnnotation-audio' class='demo'>			<div id='Ldt-SaTitle'></div>			<div id='Ldt-SaDescription'></div>			<div class='cleaner'>				<!--&nbsp\;-->			</div>		</div>		<div id='Ldt-SaKeyword'>			<div id='Ldt-SaKeywordText'></div>			<div class='cleaner'></div>			<div id='Ldt-SaShareTools'>{{{share_template}}}</div>			<div class='cleaner'></div>		</div>		<div id='Ldt-Tags'>Mots clefs :</div>	</div>	<div id='Ldt-output' style='clear: left; float: none; position: relative; height: 200px; width: {{width}}px; overflow: scroll;'>	</div>";
-IriSP.search_template = "<div id='LdtSearchContainer'	style='margin-left: 445px; position: absolute;'>	<div id='LdtSearch'		style='display: none; background-color: #EEE; width: 165px; boder: 1px; border-color: #CFCFCF; position: absolute; text-align: center;'>		<input id='LdtSearchInput'			style='margin-top: 2px; margin-bottom: 2px;' />	</div></div><div class='cleaner'></div>";
-IriSP.share_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>";
-IriSP.tooltip_template = " <div class='Ldt-tooltip'><div class='title'>{{title}}</div><div class='time'>{{begin}} : {{end}} </div><div class='description'>{{description}}</div></div>";
-IriSP.video_template = "<div id='LdtSearchContainer'	style='margin-top: {{heightS}} px; margin-left: 445px; position: absolute;'>	<div id='LdtSearch'		style='background-color: #EEE; display: none; width: 165px; boder: 1px; border-color: #CFCFCF; position: absolute; text-align: center; z-index: 999;'>		<input id='LdtSearchInput'			style='margin-top: 2px; margin-bottom: 2px;' />	</div></div><div id='Ldt-Root'>	<div id='Ldt-PlaceHolder'>		<a href='http://www.adobe.com/go/getflashplayer'>Get flash</a> to see		this player	</div>	<div id='Ldt-controler' class='demo'>		<div class='Ldt-Control1'>			<button id='ldt-CtrlPlay' onclick='__IriSP.MyApiPlayer.play()'>Lecture				/ Pause</button>			<button id='ldt-CtrlNext' onclick='__IriSP.MyLdt.nextAnnotation()'>Suivant</button>		</div>		<div id='Ldt-Annotations' class='ui-slider'>			<div id='slider-range-min'></div>		</div>		<div class='Ldt-Control2'>			<button id='ldt-CtrlLink' onclick='__IriSP.searchblock()'>				Rechercher</button>			<button id='ldt-CtrlSound' onclick='__IriSP.MyApiPlayer.mute()'>Sound</button>		</div>		<div class='cleaner'>&nbsp\;</div>		<div id='Ldt-Show-Arrow-container'>			<div id='Ldt-Show-Arrow'></div>		</div>	</div>	<div>		<div id='ldt-Show'></div>		<div id='Ldt-ShowAnnotation-audio' class='demo'>			<div id='Ldt-SaTitle'></div>			<div id='Ldt-SaDescription'></div>			<div class='cleaner'>				<!--&nbsp\;-->			</div>		</div>		<div id='Ldt-SaKeyword'>			<div id='Ldt-SaKeywordText'></div>			<div class='cleaner'></div>			<div id='Ldt-SaShareTools'>{{{share_template}}}</div>			<div class='cleaner'></div>		</div>		<div id='Ldt-Tags'>Mots clefs :</div>	</div>	<div id='Ldt-output'></div>";/*
-  mustache.js — Logic-less templates in JavaScript
-
-  See http://mustache.github.com/ for more info.
-*/
-
-var Mustache = function() {
-  var Renderer = function() {};
-
-  Renderer.prototype = {
-    otag: "{{",
-    ctag: "}}",
-    pragmas: {},
-    buffer: [],
-    pragmas_implemented: {
-      "IMPLICIT-ITERATOR": true
-    },
-    context: {},
-
-    render: function(template, context, partials, in_recursion) {
-      // reset buffer & set context
-      if(!in_recursion) {
-        this.context = context;
-        this.buffer = []; // TODO: make this non-lazy
-      }
-
-      // fail fast
-      if(!this.includes("", template)) {
-        if(in_recursion) {
-          return template;
-        } else {
-          this.send(template);
-          return;
-        }
-      }
-
-      template = this.render_pragmas(template);
-      var html = this.render_section(template, context, partials);
-      if(in_recursion) {
-        return this.render_tags(html, context, partials, in_recursion);
-      }
-
-      this.render_tags(html, context, partials, in_recursion);
-    },
-
-    /*
-      Sends parsed lines
-    */
-    send: function(line) {
-      if(line !== "") {
-        this.buffer.push(line);
-      }
-    },
-
-    /*
-      Looks for %PRAGMAS
-    */
-    render_pragmas: function(template) {
-      // no pragmas
-      if(!this.includes("%", template)) {
-        return template;
-      }
-
-      var that = this;
-      var regex = new RegExp(this.otag + "%([\\w-]+) ?([\\w]+=[\\w]+)?" +
-            this.ctag, "g");
-      return template.replace(regex, function(match, pragma, options) {
-        if(!that.pragmas_implemented[pragma]) {
-          throw({message: 
-            "This implementation of mustache doesn't understand the '" +
-            pragma + "' pragma"});
-        }
-        that.pragmas[pragma] = {};
-        if(options) {
-          var opts = options.split("=");
-          that.pragmas[pragma][opts[0]] = opts[1];
-        }
-        return "";
-        // ignore unknown pragmas silently
-      });
-    },
-
-    /*
-      Tries to find a partial in the curent scope and render it
-    */
-    render_partial: function(name, context, partials) {
-      name = this.trim(name);
-      if(!partials || partials[name] === undefined) {
-        throw({message: "unknown_partial '" + name + "'"});
-      }
-      if(typeof(context[name]) != "object") {
-        return this.render(partials[name], context, partials, true);
-      }
-      return this.render(partials[name], context[name], partials, true);
-    },
-
-    /*
-      Renders inverted (^) and normal (#) sections
-    */
-    render_section: function(template, context, partials) {
-      if(!this.includes("#", template) && !this.includes("^", template)) {
-        return template;
-      }
-
-      var that = this;
-      // CSW - Added "+?" so it finds the tighest bound, not the widest
-      var regex = new RegExp(this.otag + "(\\^|\\#)\\s*(.+)\\s*" + this.ctag +
-              "\n*([\\s\\S]+?)" + this.otag + "\\/\\s*\\2\\s*" + this.ctag +
-              "\\s*", "mg");
-
-      // for each {{#foo}}{{/foo}} section do...
-      return template.replace(regex, function(match, type, name, content) {
-        var value = that.find(name, context);
-        if(type == "^") { // inverted section
-          if(!value || that.is_array(value) && value.length === 0) {
-            // false or empty list, render it
-            return that.render(content, context, partials, true);
-          } else {
-            return "";
-          }
-        } else if(type == "#") { // normal section
-          if(that.is_array(value)) { // Enumerable, Let's loop!
-            return that.map(value, function(row) {
-              return that.render(content, that.create_context(row),
-                partials, true);
-            }).join("");
-          } else if(that.is_object(value)) { // Object, Use it as subcontext!
-            return that.render(content, that.create_context(value),
-              partials, true);
-          } else if(typeof value === "function") {
-            // higher order section
-            return value.call(context, content, function(text) {
-              return that.render(text, context, partials, true);
-            });
-          } else if(value) { // boolean section
-            return that.render(content, context, partials, true);
-          } else {
-            return "";
-          }
-        }
-      });
-    },
-
-    /*
-      Replace {{foo}} and friends with values from our view
-    */
-    render_tags: function(template, context, partials, in_recursion) {
-      // tit for tat
-      var that = this;
-
-      var new_regex = function() {
-        return new RegExp(that.otag + "(=|!|>|\\{|%)?([^\\/#\\^]+?)\\1?" +
-          that.ctag + "+", "g");
-      };
-
-      var regex = new_regex();
-      var tag_replace_callback = function(match, operator, name) {
-        switch(operator) {
-        case "!": // ignore comments
-          return "";
-        case "=": // set new delimiters, rebuild the replace regexp
-          that.set_delimiters(name);
-          regex = new_regex();
-          return "";
-        case ">": // render partial
-          return that.render_partial(name, context, partials);
-        case "{": // the triple mustache is unescaped
-          return that.find(name, context);
-        default: // escape the value
-          return that.escape(that.find(name, context));
-        }
-      };
-      var lines = template.split("\n");
-      for(var i = 0; i < lines.length; i++) {
-        lines[i] = lines[i].replace(regex, tag_replace_callback, this);
-        if(!in_recursion) {
-          this.send(lines[i]);
-        }
-      }
-
-      if(in_recursion) {
-        return lines.join("\n");
-      }
-    },
-
-    set_delimiters: function(delimiters) {
-      var dels = delimiters.split(" ");
-      this.otag = this.escape_regex(dels[0]);
-      this.ctag = this.escape_regex(dels[1]);
-    },
-
-    escape_regex: function(text) {
-      // thank you Simon Willison
-      if(!arguments.callee.sRE) {
-        var specials = [
-          '/', '.', '*', '+', '?', '|',
-          '(', ')', '[', ']', '{', '}', '\\'
-        ];
-        arguments.callee.sRE = new RegExp(
-          '(\\' + specials.join('|\\') + ')', 'g'
-        );
-      }
-      return text.replace(arguments.callee.sRE, '\\$1');
-    },
-
-    /*
-      find `name` in current `context`. That is find me a value
-      from the view object
-    */
-    find: function(name, context) {
-      name = this.trim(name);
-
-      // Checks whether a value is thruthy or false or 0
-      function is_kinda_truthy(bool) {
-        return bool === false || bool === 0 || bool;
-      }
-
-      var value;
-      if(is_kinda_truthy(context[name])) {
-        value = context[name];
-      } else if(is_kinda_truthy(this.context[name])) {
-        value = this.context[name];
-      }
-
-      if(typeof value === "function") {
-        return value.apply(context);
-      }
-      if(value !== undefined) {
-        return value;
-      }
-      // silently ignore unkown variables
-      return "";
-    },
-
-    // Utility methods
-
-    /* includes tag */
-    includes: function(needle, haystack) {
-      return haystack.indexOf(this.otag + needle) != -1;
-    },
-
-    /*
-      Does away with nasty characters
-    */
-    escape: function(s) {
-      s = String(s === null ? "" : s);
-      return s.replace(/&(?!\w+;)|["'<>\\]/g, function(s) {
-        switch(s) {
-        case "&": return "&amp;";
-        case "\\": return "\\\\";
-        case '"': return '&quot;';
-        case "'": return '&#39;';
-        case "<": return "&lt;";
-        case ">": return "&gt;";
-        default: return s;
-        }
-      });
-    },
-
-    // by @langalex, support for arrays of strings
-    create_context: function(_context) {
-      if(this.is_object(_context)) {
-        return _context;
-      } else {
-        var iterator = ".";
-        if(this.pragmas["IMPLICIT-ITERATOR"]) {
-          iterator = this.pragmas["IMPLICIT-ITERATOR"].iterator;
-        }
-        var ctx = {};
-        ctx[iterator] = _context;
-        return ctx;
-      }
-    },
-
-    is_object: function(a) {
-      return a && typeof a == "object";
-    },
-
-    is_array: function(a) {
-      return Object.prototype.toString.call(a) === '[object Array]';
-    },
-
-    /*
-      Gets rid of leading and trailing whitespace
-    */
-    trim: function(s) {
-      return s.replace(/^\s*|\s*$/g, "");
-    },
-
-    /*
-      Why, why, why? Because IE. Cry, cry cry.
-    */
-    map: function(array, fn) {
-      if (typeof array.map == "function") {
-        return array.map(fn);
-      } else {
-        var r = [];
-        var l = array.length;
-        for(var i = 0; i < l; i++) {
-          r.push(fn(array[i]));
-        }
-        return r;
-      }
-    }
-  };
-
-  return({
-    name: "mustache.js",
-    version: "0.3.1-dev",
-
-    /*
-      Turns a template and view into HTML
-    */
-    to_html: function(template, view, partials, send_fun) {
-      var renderer = new Renderer();
-      if(send_fun) {
-        renderer.send = send_fun;
-      }
-      renderer.render(template, view, partials);
-      if(!send_fun) {
-        return renderer.buffer.join("\n");
-      }
-    }
-  });
-}();
-/* utils.js - various utils that don't belong anywhere else */
-
-/* trace function, for debugging */
-
-IriSP.traceNum = 0;
-IriSP.trace = function( msg, value ) {
-
-	if( IriSP.config.gui.debug === true ) {
-		IriSP.traceNum += 1;
-		IriSP.jQuery( "<div>"+IriSP.traceNum+" - "+msg+" : "+value+"</div>" ).appendTo( "#Ldt-output" );
-	}
-};
-
-/* data.js - this file deals with how the players gets and sends data */
-
-IriSP.getMetadata = function() {
-	
-	IriSP.jQuery.ajax({
-		  dataType: IriSP.config.metadata.load,
-		  url:IriSP.config.metadata.src,
-		  success : function( json ){
-		  
-				IriSP.trace( "ajax", "success" );
-				
-				// START PARSING ----------------------- 
-				if( json === "" ){
-					alert( "Json load error" );
-				} else {							  							  
-					// # CREATE MEDIA  							//
-					// # JUSTE ONE PLAYER FOR THE MOMENT		//
-					//__IriSP.jQuery("<div></div>").appendTo("#output");
-					var MyMedia = new  __IriSP.Media(
-														json.medias[0].id,
-														json.medias[0].href,
-														json.medias[0]['meta']['dc:duration'],
-														json.medias[0]['dc:title'],
-														json.medias[0]['dc:description']);
-					
-					IriSP.trace( "__IriSP.MyApiPlayer",
-														IriSP.config.gui.width+"   "
-														+ IriSP.config.gui.height + " "
-														+ json.medias[0].href + " "
-														+ json.medias[0]['meta']['dc:duration'] + " "
-														+ json.medias[0]['meta']['item']['value']);
-					
-					// Create APIplayer
-					IriSP.MyApiPlayer = new __IriSP.APIplayer (
-														IriSP.config.gui.width,
-														IriSP.config.gui.height,
-														json.medias[0].href,
-														json.medias[0]['meta']['dc:duration'],
-														json.medias[0]['meta']['item']['value']);
-				
-					// # CREATE THE FIRST LINE  				//
-					IriSP.trace( "__IriSP.init.main","__IriSP.Ligne" );
-					IriSP.MyLdt = new __IriSP.Ligne(
-														json['annotation-types'][0].id,
-														json['annotation-types'][0]['dc:title'],
-														json['annotation-types'][0]['dc:description'],
-														json.medias[0]['meta']['dc:duration']);			
-					
-					// CREATE THE TAG CLOUD 					//
-					IriSP.trace( "__IriSP.init.main","__IriSP.Tags" );
-					IriSP.MyTags =  new __IriSP.Tags( json.tags );
-				
-					// CREATE THE ANNOTATIONS  				    //
-					// JUSTE FOR THE FIRST TYPE   			 	//
-					/* FIXME: make it support more than one ligne de temps */
-					IriSP.jQuery.each( json.annotations, function(i,item) {
-						if (item.meta['id-ref'] == IriSP.MyLdt.id) {
-							//__IriSP.trace("__IriSP.init.main","__IriSP.MyLdt.addAnnotation");
-							IriSP.MyLdt.addAnnotation(
-										item.id,
-										item.begin,
-										item.end,
-										item.media,
-										item.content.title,
-										item.content.description,
-										item.content.color,
-										item.tags);
-						}
-							//MyTags.addAnnotation(item);
-					} );	
-					IriSP.jQuery.each( json.lists, function(i,item) {
-						IriSP.trace("lists","");
-					} );	
-					IriSP.jQuery.each( json.views, function(i,item) {
-						IriSP.trace("views","");
-					} );	
-				}
-				// END PARSING ----------------------- //  
-			
-							
-		}, error : function(data){
-			  alert("ERROR : "+data);
-		}
-	  });	
-
-}/* site.js - all our site-dependent config : player chrome, cdn locations, etc...*/
-
-IriSP.lib = { 
-		jQuery:"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js",
-		jQueryUI:"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js",
-		jQueryToolTip:"http://cdn.jquerytools.org/1.2.4/all/jquery.tools.min.js",
-		swfObject:"http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js",
-		cssjQueryUI:"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css"
-};
-
-//Player Configuration 
-IriSP.config = undefined;
-IriSP.configDefault = {
-		metadata:{
-			format:'cinelab',
-			src:'',
-			load:'jsonp'
-		},
-		gui:{
-			width:650,
-			height:0,
-			mode:'radio',
-			container:'LdtPlayer',
-			debug:false, 
-			css:'../src/css/LdtPlayer.css'
-		},
-		player:{
-			type:'jwplayer',
-			src:'../res/swf/player.swf',
-			params:{
-				allowfullscreen:"true", 
-				allowscriptaccess:"always",
-				wmode:"transparent"
-			},
-			flashvars:{
-				streamer:"streamer",
-				file:"file", 
-				live:"true",
-				autostart:"false",
-				controlbar:"none",
-				playerready:"IriSP.playerReady"
-			},
-			attributes:{
-				id:"Ldtplayer1",  
-				name:"Ldtplayer1"
-			}
-		},
-		module:null
-};
-
-/* ui.js - ui related functions */
-
-/* FIXME: use an sharing library */
-IriSP.LdtShareTool = IriSP.share_template; /* the contents come from share.html */
-
-IriSP.createPlayerChrome = function(){
-	var width = IriSP.config.gui.width;
-	var height = IriSP.config.gui.height;
-	var heightS = IriSP.config.gui.height-20;
-	
-	// AUDIO  */
-	// PB dans le html : ; 
-	IriSP.trace( "__IriSP.createMyHtml",IriSP.config.gui.container );
-
-	
-	/* FIXME : factor this in another file */
-	if( IriSP.config.gui.mode=="radio" ){
-
-		IriSP.jQuery( "#"+IriSP.config.gui.container ).before(IriSP.search_template);
-		var radioPlayer = Mustache.to_html(IriSP.radio_template, {"share_template" : IriSP.share_template});
-		IriSP.jQuery(radioPlayer).appendTo("#"+IriSP.config.gui.container);
-
-		// special tricks for IE 7
-		if (IriSP.jQuery.browser.msie==true && IriSP.jQuery.browser.version=="7.0"){
-			//LdtSearchContainer
-			//__IriSP.jQuery("#LdtPlayer").attr("margin-top","50px");
-			IriSP.jQuery("#Ldt-Root").css("padding-top","25px");
-			IriSP.trace("__IriSP.createHtml","IE7 SPECIAL ");
-		}
-	} else if(IriSP.config.gui.mode=="video") {
-	
-		var videoPlayer = Mustache.to_html(IriSP.video_template, {"share_template" : IriSP.share_template, "heightS" : heightS});
-		IriSP.jQuery(videoPlayer).appendTo("#"+IriSP.config.gui.container);
-	}
-	
-	/* FIXME : move it elsewhere */
-	IriSP.trace("__IriSP.createHtml",IriSP.jQuery.browser.msie+" "+IriSP.jQuery.browser.version);		
-	IriSP.trace("__IriSP.createHtml","end");
-	IriSP.jQuery("#Ldt-Annotations").width(width-(75*2));
-	IriSP.jQuery("#Ldt-Show-Arrow-container").width(width-(75*2));
-	IriSP.jQuery("#Ldt-ShowAnnotation-audio").width(width-10);
-	IriSP.jQuery("#Ldt-ShowAnnotation-video").width(width-10);
-	IriSP.jQuery("#Ldt-SaKeyword").width(width-10);
-	IriSP.jQuery("#Ldt-controler").width(width-10);
-	IriSP.jQuery("#Ldt-Control").attr("z-index","100");
-	IriSP.jQuery("#Ldt-controler").hide();
-	
-	IriSP.jQuery(IriSP.annotation_loading_template).appendTo("#Ldt-ShowAnnotation-audio");
-
-	if(IriSP.config.gui.mode=='radio'){
-		IriSP.jQuery("#Ldt-load-container").attr("width",IriSP.config.gui.width);
-	}
-	// Show or not the output
-	if(IriSP.config.gui.debug===true){
-		IriSP.jQuery("#Ldt-output").show();
-	} else {
-		IriSP.jQuery("#Ldt-output").hide();
-	}
-	
-};
-
-
-/* create the buttons and the slider   */
-IriSP.createInterface = function( width, height, duration ) {
-		
-		IriSP.jQuery( "#Ldt-controler" ).show();
-		//__IriSP.jQuery("#Ldt-Root").css('display','visible');
-		IriSP.trace( "__IriSP.createInterface" , width+","+height+","+duration+"," );
-		
-		IriSP.jQuery( "#Ldt-ShowAnnotation").click( function () { 
-			 //__IriSP.jQuery(this).slideUp(); 
-		} );
-
-		var LdtpPlayerY = IriSP.jQuery("#Ldt-PlaceHolder").attr("top");
-		var LdtpPlayerX = IriSP.jQuery("#Ldt-PlaceHolder").attr("left");
-		
-		IriSP.jQuery( "#slider-range-min" ).slider( { //range: "min",
-			value: 0,
-			min: 1,
-			max: duration/1000,//1:54:52.66 = 3600+3240+
-			step: 0.1,
-			slide: function(event, ui) {
-				
-				//__IriSP.jQuery("#amount").val(ui.value+" s");
-				//player.sendEvent('SEEK', ui.value)
-				IriSP.MyApiPlayer.seek(ui.value);
-				//changePageUrlOffset(ui.value);
-				//player.sendEvent('PAUSE')
-			}
-		} );
-		
-		IriSP.trace("__IriSP.createInterface","ICI");
-		IriSP.jQuery("#amount").val(IriSP.jQuery("#slider-range-min").slider("value")+" s");
-		IriSP.jQuery(".Ldt-Control1 button:first").button({
-			icons: {
-				primary: 'ui-icon-play'
-			},
-			text: false
-		}).next().button({
-			icons: {
-				primary: 'ui-icon-seek-next'
-			},
-			 text: false
-		});
-		IriSP.jQuery(".Ldt-Control2 button:first").button({
-			icons: {
-				primary: 'ui-icon-search'//,
-				//secondary: 'ui-icon-volume-off'
-			},
-			text: false
-		}).next().button({
-			icons: {
-				primary: 'ui-icon-volume-on'
-			},
-			 text: false
-		});
-
-		// /!\ PB A MODIFIER 
-		//__IriSP.MyTags.draw();
-		IriSP.trace("__IriSP.createInterface","ICI2");
-		IriSP.jQuery( "#ldt-CtrlPlay" ).attr( "style", "background-color:#CD21C24;" );
-		
-		IriSP.jQuery( "#Ldt-load-container" ).hide();
-		
-		if( IriSP.config.gui.mode=="radio" & IriSP.jQuery.browser.msie != true ) {
-			IriSP.jQuery( "#Ldtplayer1" ).attr( "height", "0" );
-		}
-		IriSP.trace( "__IriSP.createInterface" , "3" );
-
-		IriSP.trace( "__IriSP.createInterface", "END" );
-		
-	};
--- a/examples/index-youtube.htm	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html dir="ltr" xml:lang="fr" 
-xmlns="http://www.w3.org/1999/xhtml" lang="fr">
-
-<head>
-
-</head>
-
-<body>
-
-	<div style="width:650px;font-family: 'Trebuchet MS', 'Helvetica', 'Arial',  'Verdana', 'sans-serif';">
-	<h1>MetaData Player </h1>
-	Iri MetaData is a javascript's Widget interface to augment existing flash or html5 video player. 
-	It's made to show time annotation and different metadata on video.
-	To implement it on your website it's 's really simple.
-	You just need to insert a div and a script, like the exemple under this lines.<br/><br/>
-	<b>/!\</b> This is the first beta version the code is not optimized ! But your feedback is needed !
-	This player was test on :
-	<ul>
-		<li>Firefox 3.6.9</li>
-		<li>Chrome 6.0.472.55</li>
-		<li>Safari 5.0.2</li>
-		<li>Internet Explore 8</li>
-	</ul>
-	This Player is a freeSoftware under <a href="http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html"/> CeCILL-C</a> license.
-	This program is made by <a href="http://www.iri.centrepompidou.fr/" >Institut de recherche et d innovation</a>
-	more information on <a href="http://www.iri.centrepompidou.fr/outils/agmented-player/" >this page</a>.
-	<br/><br/>
-	</div>
-
- <!-- START IRI EMBED    ###################################### -->
- <!-- SIMPLE PLAYER EXPERIMENTATION -->
-	<script type="text/javascript" src="./LdtPlayer-release.js"></script> 
-
-	<!--<input id="amount" />-->
-	
-	<div id="LdtPlayer"></div>
-	 
-	<script  type="text/javascript">	
-		var config = {
-						metadata:{
-							format:'cinelab',
-							//# URL metadata's file
-							src:'test-youtube.json',
-							//# load from the same server
-							//load:'json'
-							//# load from a other serveur
-							load:'json'
-							},
-						gui:{
-							//# width of the video size
-							width:480,
-							//# height of the video size , 1 for the radio 
-							height:360,
-							//# mode radio or video
-							mode:'video',
-							//# Id of div container
-							container:'LdtPlayer',
-							//# to see output 
-							debug:false,
-							css:'../src/css/LdtPlayer.css'},
-						player:{
-							type:'youtube',
-							//# without youtube player UI : 
-							src:'http://www.youtube.com/apiplayer?video_id=lFtNG1wZ4zU'
-							//# with youtube player UI : 
-							//src:'http://www.youtube.com/v/lFtNG1wZ4zU'
-							}
-					};
-		__IriSP.init(config);     
-	</script>
-
-
-<!-- END  ################  ###################################### -->
- </body>
- </html>
\ No newline at end of file
--- a/examples/index.htm	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html dir="ltr" xml:lang="fr" 
-xmlns="http://www.w3.org/1999/xhtml" lang="fr">
-
-<head>
-
-</head>
-
-<body>
-
-	<div style="width:650px;font-family: 'Trebuchet MS', 'Helvetica', 'Arial',  'Verdana', 'sans-serif';">
-	<h1>MetaDataPlayer </h1>
-	Iri MetaDataPlayer is a javascript's Widget interface to augment existing flash or html5 video player. 
-	It's made to show time annotation and different metadata on video.
-	To implement it on your website it's 's really simple.
-	You just need to insert a div and a script, like the exemple under this lines.<br/><br/>
-	This player was test on : firefox 3.6.9 / Chrome 6.0.472.55 / Safari 5.0.2 / Internet Explore 8<br/><br/>
-	This Player is a freeSoftware under <a href="http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html"> CeCILL-C</a> license.
-	This program is made by <a href="http://www.iri.centrepompidou.fr/" >Institut de recherche et d innovation</a>
-	more information on <a href="http://www.iri.centrepompidou.fr/outils/agmented-player/" >this page</a>.
-	</div>
-	
-	
- <!-- START Integration  ###################################### -->
- <!-- SIMPLE PLAYER EXPERIMENTATION -->
-	<script type="text/javascript" src="./LdtPlayer-release.js"></script> 
-	<div id="LdtPlayer"></div>
-	
-	<script  type="text/javascript">	
-		var config = {
-						metadata:{
-							format:'cinelab',
-							src:'test.json',
-							load:'json'},
-						gui:{
-							width:650,
-							height:1,
-							mode:'radio',
-							container:'LdtPlayer',
-							debug:false,
-							css:'../src/css/LdtPlayer.css'},
-						player:{
-							type:'jwplayer',
-							src:'../res/swf/player.swf'}
-					};
-		__IriSP.init(config);     
-	</script>
-	
-
-<!-- END  ################  ###################################### -->
- </body>
- </html>
\ No newline at end of file
--- a/examples/test-youtube.json	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,461 +0,0 @@
-{
-  "tags": [
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.147547", 
-        "dc:title": "suffrage universel", 
-        "dc:modified": "2010-09-15T15:28:02.147547", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d4000614-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.148547", 
-        "dc:title": "Patrick Rogiers", 
-        "dc:modified": "2010-09-15T15:28:02.148547", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d4002126-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.145004", 
-        "dc:title": "Kirgistan", 
-        "dc:modified": "2010-09-15T15:28:02.145004", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d3ff94ae-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.146232", 
-        "dc:title": "Alphonse Baudin", 
-        "dc:modified": "2010-09-15T15:28:02.146232", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d3ffbf06-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.147547", 
-        "dc:title": "mandats rétribués", 
-        "dc:modified": "2010-09-15T15:28:02.147547", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d3fffa02-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.148547", 
-        "dc:title": "Belgique", 
-        "dc:modified": "2010-09-15T15:28:02.148547", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d400197e-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.146745", 
-        "dc:title": "18juin", 
-        "dc:modified": "2010-09-15T15:28:02.146745", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d3ffd32e-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.148547", 
-        "dc:title": "Wallons", 
-        "dc:modified": "2010-09-15T15:28:02.148547", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d4002874-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.149993", 
-        "dc:title": "theatre.doc", 
-        "dc:modified": "2010-09-15T15:28:02.149993", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d40051f0-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.146745", 
-        "dc:title": "marée noire", 
-        "dc:modified": "2010-09-15T15:28:02.146745", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d3ffde82-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.148547", 
-        "dc:title": "Flamands", 
-        "dc:modified": "2010-09-15T15:28:02.148547", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d4001d70-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.147547", 
-        "dc:title": "Auguste Baudin", 
-        "dc:modified": "2010-09-15T15:28:02.147547", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d3fff26e-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.145004", 
-        "dc:title": "retraite", 
-        "dc:modified": "2010-09-15T15:28:02.145004", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d3ff9d3c-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.147547", 
-        "dc:title": "financement politique", 
-        "dc:modified": "2010-09-15T15:28:02.147547", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d3fff656-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.146745", 
-        "dc:title": "Bloody Sunday", 
-        "dc:modified": "2010-09-15T15:28:02.146745", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d3ffd716-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.148547", 
-        "dc:title": "éléction", 
-        "dc:modified": "2010-09-15T15:28:02.148547", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d4002c2a-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.147547", 
-        "dc:title": "suffrage directs", 
-        "dc:modified": "2010-09-15T15:28:02.147547", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d400022c-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.148547", 
-        "dc:title": "vuvuzela", 
-        "dc:modified": "2010-09-15T15:28:02.148547", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d40024c8-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.146745", 
-        "dc:title": "Domenech", 
-        "dc:modified": "2010-09-15T15:28:02.146745", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d3ffdacc-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.149511", 
-        "dc:title": "sociologie du sport", 
-        "dc:modified": "2010-09-15T15:28:02.149511", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d4003f12-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.145004", 
-        "dc:title": "Mondiale", 
-        "dc:modified": "2010-09-15T15:28:02.145004", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d3ff997c-c0dd-11df-bfff-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-15T15:28:02.147547", 
-        "dc:title": "professionalisation de la politique", 
-        "dc:modified": "2010-09-15T15:28:02.147547", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "d3fffdae-c0dd-11df-bfff-00145ea4a2be"
-    }
-  ], 
-  "views": null, 
-  "lists": [
-    {
-      "items": [
-        {
-          "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560"
-        }, 
-        {
-          "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795"
-        }, 
-        {
-          "id-ref": "c_393E05F0-80CC-9D29-A42B-B293F1478831"
-        }, 
-        {
-          "id-ref": "c_DE60F95E-73B8-922D-3AC7-6FB197A1BF16"
-        }
-      ], 
-      "meta": {
-        "dc:contributor": "undefined", 
-        "dc:created": "2010-09-15T15:28:02.144361", 
-        "dc:creator": "perso", 
-        "id-ref": "franceculture_retourdudimanche20100620", 
-        "dc:title": "Découpages personnels", 
-        "editable": "false", 
-        "dc:modified": "2010-09-15T15:28:02.144361", 
-        "dc:description": ""
-      }, 
-      "id": "ens_perso"
-    }
-  ], 
-  "medias": [
-    {
-      "origin": "0", 
-      "http://advene.liris.cnrs.fr/ns/frame_of_reference/ms": "o=0", 
-      "href": "rtmp://media.iri.centrepompidou.fr/ddc_player/video/franceculture/franceculture_retourdudimanche20100620.flv", 
-      "meta": {
-        "dc:contributor": "IRI", 
-        "item": {
-          "name": "streamer", 
-          "value": "rtmp://media.iri.centrepompidou.fr/ddc_player/"
-        }, 
-        "dc:created": "2010-06-25T16:58:36.186952", 
-        "dc:duration": 603000, 
-        "dc:creator": "onubufonu", 
-        "dc:created.contents": "2010-06-25", 
-        "dc:title": "Andrei Tarkovsky interview part 1 ", 
-        "dc:creator.contents": "IRI", 
-        "dc:modified": "2010-06-25T16:58:36.187009", 
-        "dc:description": "Test Youtube local example with Json"
-      }, 
-      "id": "franceculture_retourdudimanche20100620", 
-      "unit": "ms"
-    }
-  ], 
-  "meta": {
-    "dc:contributor": "admin", 
-    "dc:created": "2010-07-12T00:30:40.272719", 
-    "dc:creator": "admin", 
-    "main_media": {
-      "id-ref": "franceculture_retourdudimanche20100620"
-    }, 
-    "dc:description": "", 
-    "dc:title": "RetourDimanche20juin_decoupageChronique", 
-    "id": "ef4dcc2e-8d3b-11df-8a24-00145ea4a2be", 
-    "dc:modified": "2010-09-13T11:07:51.331011"
-  }, 
-  "annotations": [
-  {
-      "begin": 202000, 
-      "end": 252000, 
-      "tags": [
-        {
-          "id-ref": "d3ff94ae-c0dd-11df-bfff-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "d3ff997c-c0dd-11df-bfff-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "d3ff9d3c-c0dd-11df-bfff-00145ea4a2be"
-        }
-      ], 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "6684774", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": null
-        }, 
-        "description": "", 
-        "title": "Générique"
-      },
-	  "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-        "dc:created": "2010-09-15T15:28:02.144394", 
-        "dc:modified": "2010-09-15T15:28:02.144394", 
-        "dc:creator": "perso"
-      }, 
-	   "id": "s_38948-15F4-E7CB-EBC5-6FB51DAC635C"
-    }, 
-    {
-      "begin": 50000, 
-      "end": 182000, 
-      "tags": [
-        {
-          "id-ref": "d3ff94ae-c0dd-11df-bfff-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "d3ff997c-c0dd-11df-bfff-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "d3ff9d3c-c0dd-11df-bfff-00145ea4a2be"
-        }
-      ], 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "16776960", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": null
-        }, 
-        "description": "", 
-        "title": "Générique"
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-        "dc:created": "2010-09-15T15:28:02.144394", 
-        "dc:modified": "2010-09-15T15:28:02.144394", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_38978-15F4-E7CB-EBC5-6FB51DAC635C"
-    }, 
-	{
-      "begin": 2, 
-      "end": 12000, 
-      "tags": [
-        {
-          "id-ref": "d3ff94ae-c0dd-11df-bfff-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "d3ff997c-c0dd-11df-bfff-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "d3ff9d3c-c0dd-11df-bfff-00145ea4a2be"
-        }
-      ], 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "16776960", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": null
-        }, 
-        "description": "", 
-        "title": "Générique"
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-        "dc:created": "2010-09-15T15:28:02.144394", 
-        "dc:modified": "2010-09-15T15:28:02.144394", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_32C565F4-15F4-E7CB-EBC5-6FB51DAC635C"
-    }, 
-    {
-      "begin": 25000, 
-      "end": 35000, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "6684774", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": null
-        }, 
-        "description": "description de test ...", 
-        "title": "Sommaire"
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-        "dc:created": "2010-09-15T15:28:02.144394", 
-        "dc:modified": "2010-09-15T15:28:02.144394", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_8F385150-64B3-7539-AB94-6FB51DAC40B4"
-    }
-
- ], 
-  "annotation-types": [
-    {
-      "dc:contributor": "perso", 
-      "dc:creator": "perso", 
-      "dc:title": "Chapitrage Notes", 
-      "id": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-      "dc:created": "2010-09-15T15:28:02.144394", 
-      "dc:description": "", 
-      "dc:modified": "2010-09-15T15:28:02.144394"
-    }, 
-    {
-      "dc:contributor": "perso", 
-      "dc:creator": "perso", 
-      "dc:title": "Mes notes", 
-      "id": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-      "dc:created": "2010-09-15T15:28:02.150138", 
-      "dc:description": "", 
-      "dc:modified": "2010-09-15T15:28:02.150138"
-    }, 
-    {
-      "dc:contributor": "perso", 
-      "dc:creator": "perso", 
-      "dc:title": "Mes notes", 
-      "id": "c_393E05F0-80CC-9D29-A42B-B293F1478831", 
-      "dc:created": "2010-09-15T15:28:02.159006", 
-      "dc:description": "", 
-      "dc:modified": "2010-09-15T15:28:02.159006"
-    }, 
-    {
-      "dc:contributor": "perso", 
-      "dc:creator": "perso", 
-      "dc:title": "Chapitrage", 
-      "id": "c_DE60F95E-73B8-922D-3AC7-6FB197A1BF16", 
-      "dc:created": "2010-09-15T15:28:02.163372", 
-      "dc:description": "", 
-      "dc:modified": "2010-09-15T15:28:02.163372"
-    }
-  ]
-}
\ No newline at end of file
--- a/examples/test.json	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1456 +0,0 @@
-{
-  "tags": [
-  {
-      "meta": {
-        "dc:contributor": "IRI ", 
-        "dc:created": "2010-09-06T15:53:44.618963", 
-        "dc:title": "suffrage universel", 
-        "dc:modified": "2010-09-06T15:53:44.618963", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edaabd04-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.621828", 
-        "dc:title": "Patrick Rogiers", 
-        "dc:modified": "2010-09-06T15:53:44.621828", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edab1fec-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.575615", 
-        "dc:title": "Kirgistan", 
-        "dc:modified": "2010-09-06T15:53:44.575615", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "eda50fb2-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.600158", 
-        "dc:title": "Alphonse Baudin", 
-        "dc:modified": "2010-09-06T15:53:44.600158", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "eda8ba7c-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.618963", 
-        "dc:title": "mandats rétribués", 
-        "dc:modified": "2010-09-06T15:53:44.618963", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edaab0b6-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.621828", 
-        "dc:title": "Belgique", 
-        "dc:modified": "2010-09-06T15:53:44.621828", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edab1808-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.609400", 
-        "dc:title": "18juin", 
-        "dc:modified": "2010-09-06T15:53:44.609400", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edaa23f8-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.621828", 
-        "dc:title": "Wallons", 
-        "dc:modified": "2010-09-06T15:53:44.621828", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edab2730-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.626707", 
-        "dc:title": "theatre.doc", 
-        "dc:modified": "2010-09-06T15:53:44.626707", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edabd6b2-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.609400", 
-        "dc:title": "marée noire", 
-        "dc:modified": "2010-09-06T15:53:44.609400", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edaa3aaa-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.621828", 
-        "dc:title": "Flamands", 
-        "dc:modified": "2010-09-06T15:53:44.621828", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edab1c36-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.618963", 
-        "dc:title": "Auguste Baudin", 
-        "dc:modified": "2010-09-06T15:53:44.618963", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edaaa8dc-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.575615", 
-        "dc:title": "retraite", 
-        "dc:modified": "2010-09-06T15:53:44.575615", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "eda7047a-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.618963", 
-        "dc:title": "financement politique", 
-        "dc:modified": "2010-09-06T15:53:44.618963", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edaaad00-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.609400", 
-        "dc:title": "Bloody Sunday", 
-        "dc:modified": "2010-09-06T15:53:44.609400", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edaa329e-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.621828", 
-        "dc:title": "éléction", 
-        "dc:modified": "2010-09-06T15:53:44.621828", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edab2b68-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.618963", 
-        "dc:title": "suffrage directs", 
-        "dc:modified": "2010-09-06T15:53:44.618963", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edaab962-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.621828", 
-        "dc:title": "vuvuzela", 
-        "dc:modified": "2010-09-06T15:53:44.621828", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edab238e-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.609400", 
-        "dc:title": "Domenech", 
-        "dc:modified": "2010-09-06T15:53:44.609400", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edaa36ea-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.624524", 
-        "dc:title": "sociologie du sport", 
-        "dc:modified": "2010-09-06T15:53:44.624524", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edab8162-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.575615", 
-        "dc:title": "Mondiale", 
-        "dc:modified": "2010-09-06T15:53:44.575615", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "eda60c8c-b9ce-11df-9e63-00145ea4a2be"
-    }, 
-    {
-      "meta": {
-        "dc:contributor": "IRI", 
-        "dc:created": "2010-09-06T15:53:44.618963", 
-        "dc:title": "professionalisation de la politique", 
-        "dc:modified": "2010-09-06T15:53:44.618963", 
-        "dc:creator": "IRI"
-      }, 
-      "id": "edaab5c0-b9ce-11df-9e63-00145ea4a2be"
-    }
-  ], 
-  "views": null, 
-  "lists": [
-    {
-      "items": [
-        {
-          "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560"
-        }, 
-        {
-          "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795"
-        }, 
-        {
-          "id-ref": "c_393E05F0-80CC-9D29-A42B-B293F1478831"
-        }, 
-        {
-          "id-ref": "c_DE60F95E-73B8-922D-3AC7-6FB197A1BF16"
-        }
-      ], 
-      "meta": {
-        "dc:contributor": "undefined", 
-        "dc:created": "2010-09-06T15:53:44.572185", 
-        "dc:creator": "perso", 
-        "id-ref": "franceculture_retourdudimanche20100620", 
-        "dc:title": "Découpages personnels", 
-        "editable": "false", 
-        "dc:modified": "2010-09-06T15:53:44.572185", 
-        "dc:description": ""
-      }, 
-      "id": "ens_perso"
-    }
-  ], 
-  "medias": [
-    {
-      "origin": "0", 
-      "http://advene.liris.cnrs.fr/ns/frame_of_reference/ms": "o=0", 
-      "href": "rtmp://media.iri.centrepompidou.fr/ddc_player/video/franceculture/franceculture_retourdudimanche20100620.flv", 
-      "meta": {
-        "dc:contributor": "IRI", 
-        "item": {
-          "name": "streamer", 
-          "value": "rtmp://media.iri.centrepompidou.fr/ddc_player/"
-        }, 
-        "dc:created": "2010-06-25T16:58:36.186952", 
-        "dc:duration": 3016000, 
-        "dc:creator": "IRI", 
-        "dc:created.contents": "2010-06-25", 
-        "dc:title": "FC Retour du dimanche 2010-06-20", 
-        "dc:creator.contents": "IRI", 
-        "dc:modified": "2010-06-25T16:58:36.187009", 
-        "dc:description": "France Culture. Retour du dimanche 2010-06-20"
-      }, 
-      "id": "franceculture_retourdudimanche20100620", 
-      "unit": "ms"
-    }
-  ], 
-  "meta": {
-    "dc:contributor": "admin", 
-    "dc:created": "2010-07-12T00:30:40.272719", 
-    "dc:creator": "admin", 
-    "main_media": {
-      "id-ref": "franceculture_retourdudimanche20100620"
-    }, 
-    "dc:description": "", 
-    "dc:title": "RetourDimanche20juin_decoupageChronique", 
-    "id": "ef4dcc2e-8d3b-11df-8a24-00145ea4a2be", 
-    "dc:modified": "2010-08-25T11:39:25.507013"
-  }, 
-  "annotations": [
-    {
-      "begin": "0", 
-      "end": 88414, 
-      "tags": [
-        {
-          "id-ref": "eda50fb2-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "eda60c8c-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "eda7047a-b9ce-11df-9e63-00145ea4a2be"
-        }
-      ], 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "16776960", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "", 
-        "title": "Générique"
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-        "dc:created": "2010-09-06T15:53:44.572226", 
-        "dc:modified": "2010-09-06T15:53:44.572226", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_32C565F4-15F4-E7CB-EBC5-6FB51DAC635C"
-    }, 
-    {
-      "begin": "88422", 
-      "end": 169831, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "6684774", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "", 
-        "title": "Sommaire"
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-        "dc:created": "2010-09-06T15:53:44.572226", 
-        "dc:modified": "2010-09-06T15:53:44.572226", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_8F385150-64B3-7539-AB94-6FB51DAC40B4"
-    }, 
-    {
-      "begin": "170235", 
-      "end": 316123, 
-      "tags": [
-        {
-          "id-ref": "eda8ba7c-b9ce-11df-9e63-00145ea4a2be"
-        }
-      ], 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "10027008", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "L'invité : Alain Guarrigue, sur Alphonse Baudin", 
-        "title": "Présentation de l'invité - Alain Garrigou"
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-        "dc:created": "2010-09-06T15:53:44.572226", 
-        "dc:modified": "2010-09-06T15:53:44.572226", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_948A7C82-DD23-8CAC-27D4-6FB51DAC7D41"
-    }, 
-    {
-      "begin": "316720", 
-      "end": 694781, 
-      "tags": [
-        {
-          "id-ref": "edaa23f8-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edaa329e-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edaa36ea-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edaa36ea-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edaa3aaa-b9ce-11df-9e63-00145ea4a2be"
-        }
-      ], 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "6736896", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "", 
-        "title": "Revue d'actualité - Hervé Gardette"
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-        "dc:created": "2010-09-06T15:53:44.572226", 
-        "dc:modified": "2010-09-06T15:53:44.572226", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_54DB840E-01AC-D042-37E2-B2BA1E18B47C"
-    }, 
-    {
-      "begin": "695261", 
-      "end": 1772062, 
-      "tags": [
-        {
-          "id-ref": "edaaa8dc-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edaaad00-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edaab0b6-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edaab5c0-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edaab962-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edaabd04-b9ce-11df-9e63-00145ea4a2be"
-        }
-      ], 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "10027008", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "", 
-        "title": "Invité spécial - Alain Garrigou"
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-        "dc:created": "2010-09-06T15:53:44.572226", 
-        "dc:modified": "2010-09-06T15:53:44.572226", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_BDB0677D-DBF9-D198-896B-B2BDB9012D54"
-    }, 
-    {
-      "begin": "1772707", 
-      "end": 2515173, 
-      "tags": [
-        {
-          "id-ref": "edab1808-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edab1c36-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edab1fec-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edab238e-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edab2730-b9ce-11df-9e63-00145ea4a2be"
-        }, 
-        {
-          "id-ref": "edab2b68-b9ce-11df-9e63-00145ea4a2be"
-        }
-      ], 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "6749952", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "", 
-        "title": "Revue de presse - Hervé Gardette"
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-        "dc:created": "2010-09-06T15:53:44.572226", 
-        "dc:modified": "2010-09-06T15:53:44.572226", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_3FC1D037-34A3-FEF7-541C-B2C31ED973A8"
-    }, 
-    {
-      "begin": "2516091", 
-      "end": 2646767, 
-      "tags": [
-        {
-          "id-ref": "edab8162-b9ce-11df-9e63-00145ea4a2be"
-        }
-      ], 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "10027008", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "", 
-        "title": "Le sujet de l'invité : la sociologie du sport - Alain Garrigou"
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-        "dc:created": "2010-09-06T15:53:44.572226", 
-        "dc:modified": "2010-09-06T15:53:44.572226", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_82613B88-9578-DC2C-D7D0-B2C5BE0B7BDA"
-    }, 
-    {
-      "begin": "2647012", 
-      "end": 3012503, 
-      "tags": [
-        {
-          "id-ref": "edabd6b2-b9ce-11df-9e63-00145ea4a2be"
-        }
-      ], 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "16776960", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "", 
-        "title": "Chronique du Courrier International - Antony Bélanger"
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-        "dc:created": "2010-09-06T15:53:44.572226", 
-        "dc:modified": "2010-09-06T15:53:44.572226", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_24324ACF-E8D0-46FE-E977-B2C7D1A1FBAA"
-    }, 
-    {
-      "begin": "902235", 
-      "end": 1022560, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Garrigou : financement politique, suffrage universel et direct et mandats rétribués,", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_C5118055-7575-43BD-05BA-B2B91B977B61"
-    }, 
-    {
-      "begin": "1022560", 
-      "end": 1029340, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Caroline Broué", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_224FA6AF-AC6B-5412-C882-B2B91B97A0BC"
-    }, 
-    {
-      "begin": "1029340", 
-      "end": 1123892, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Garrigou : professionalisation de la politique, promotion sociale et financière", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_99950FC3-A79B-9A08-5E90-B2B91B97C844"
-    }, 
-    {
-      "begin": "1123892", 
-      "end": 1135827, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "CBroué : mourir pour des idées", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_7DE30BA7-4E61-F41D-9EB8-B2B91B97C4C1"
-    }, 
-    {
-      "begin": "1135827", 
-      "end": 1195874, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Archives Radio : Auguste Bodin, mourrir pour 25 francs", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_C588B92E-EB4F-B383-4D50-B2B91B97B4C2"
-    }, 
-    {
-      "begin": "1195874", 
-      "end": 1215565, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "C.Broué : geste et figure du député. Emblématique.", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_87A5F46B-9588-4C02-24B6-B2B91B97037A"
-    }, 
-    {
-      "begin": "1215565", 
-      "end": 1391433, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Garrigou : mourrir pour des idées est valorisé, grandeur humaine au 19è siècle\nVictor Hugo esthétise Bodin\nSouscription de bodin ou se révèle Gambetta", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_1CF29EC2-1109-25FF-F8D7-B2B91B97944A"
-    }, 
-    {
-      "begin": "1391433", 
-      "end": 1451340, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "C.Broué : héros civique, figure disparue,\ndéfense de l'indémnité parlementaire\nl'intérete a repris le dessus sur la politique", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_B3A6C0FE-10B0-91D2-BC98-B2B91B97EC15"
-    }, 
-    {
-      "begin": "1451340", 
-      "end": 1539483, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Garrigou : humour de Bodin, \non ne meurt pas pour de l'argent, \nl'argent n'est pas une conviction,\nHéros : héros guerrier, le Saint ou martyr,", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_FE44EC82-002E-3A78-B712-B2B91B975C76"
-    }, 
-    {
-      "begin": "1539483", 
-      "end": 1547610, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "C.Broué : Degaulle figure de héros civique ?", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_943F5904-D438-F263-C8B4-B2B91B97608C"
-    }, 
-    {
-      "begin": "1547610", 
-      "end": 1659484, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Garrigou : appel à la désobéissance, résistance de Bodin et Résistance de J.Moulin\nhéros civique : personnage anonyme\nca n'est pas le soldat, ni le saint, ni le Grand Homme", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_FBB30EA9-8699-E909-62BA-B2B91B9792C6"
-    }, 
-    {
-      "begin": "1659484", 
-      "end": 1720413, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "C.Broué : autonomisation du champs politique par rapport à l'intéret économique.\nperspective contemporaine : tenter de rétablir une certaine morale publique.", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_8F2D73FD-4C22-DE0A-E22A-B2B91B97CA92"
-    }, 
-    {
-      "begin": "1720413", 
-      "end": 1773308, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Garrigou : société post-héroique : la politique est une question économique\nsociété d'irresponsabilité,", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_716B6123-2040-71A2-3B8F-B2B91B978EF1"
-    }, 
-    {
-      "begin": "1773308", 
-      "end": 1846311, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Gardette : transition\nBelgique a voté. Flamand fait une percée historique. Tsunami politique ?\ninstabilité politique", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_1D64F959-8A86-FD3E-3FD1-B2B91B972648"
-    }, 
-    {
-      "begin": "1846311", 
-      "end": 2176406, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Patrick Rogiers : sur les résutats des élections belges", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_D7398F00-E4F5-9692-88D0-B2B91B976204"
-    }, 
-    {
-      "begin": "2176406", 
-      "end": 2207985, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Gardette : transition\nC. Broué : montée des nationalismes et séparatismes", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_21BCA9F6-A71C-C601-1247-B2B91B97A664"
-    }, 
-    {
-      "begin": "2207985", 
-      "end": 2248713, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Garrigou : sur les séparatismes, narcissisme des petites différences", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_45E25D8E-416B-8158-23DD-B2B91B9745CE"
-    }, 
-    {
-      "begin": "2248713", 
-      "end": 2519086, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "H. Gardette : Vuvuzela : tradition et calvaire", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_88FBDAB0-64C7-74B9-7C5A-B2B91B977EC3"
-    }, 
-    {
-      "begin": "2519086", 
-      "end": 2540542, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "C.Broué : question à Garrigou : sociologie du sport", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_6506C8B0-AAB0-3678-31FD-B2B91B978702"
-    }, 
-    {
-      "begin": "2540542", 
-      "end": 2647121, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Elimination de l'équipe de France\nArgent, politique du foot", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_CB104420-63C8-F957-78CF-B2B91B97D0B0"
-    }, 
-    {
-      "begin": "2647121", 
-      "end": 2657384, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "intermède musical", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_1947C9C6-B47F-1544-AD5E-B2B91B97A552"
-    }, 
-    {
-      "begin": "2657384", 
-      "end": 3012515, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Antony Bélanger (Courrier International) : Moscou, pièce de théatre à guichet fermé\nTheatre.doc : agonie de l'avocat en prison", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_874A4942-9AA9-CA9A-F595-B2B91B97210A"
-    }, 
-    {
-      "begin": "3012515", 
-      "end": 3013515, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-        "dc:created": "2010-09-06T15:53:44.626882", 
-        "dc:modified": "2010-09-06T15:53:44.626882", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_1F7790E7-BC3F-6C87-9B4F-B2B91B9769B6"
-    }, 
-    {
-      "begin": "206240", 
-      "end": 316720, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Interview : Alphonse Baudin\n\"comment meurt vos 25 francs\"\nabolitionniste, barricade,Victor Hugo, Victor", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_393E05F0-80CC-9D29-A42B-B293F1478831", 
-        "dc:created": "2010-09-06T15:53:44.675786", 
-        "dc:modified": "2010-09-06T15:53:44.675786", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_9CA4F1C6-6FA0-7070-EBCA-B293F1474ECC"
-    }, 
-    {
-      "begin": "316720", 
-      "end": 546458, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "actualité de Gardette : \n- Domenech et défaite francaise contre le Mexique\n- La France aura eu besoin de De Gaulle\n- 18 juin : 1815, défaite de waterloo\ndéfaite de Dien Bien \n- Belgique: éléctions et divorce Wallon et Flamands\n- Kirgistan : Pogrom contre les Ouzbeks, 200 morts.\n- Conflits Israélo-palestinien : enquete indépendante\n- Bloody Sunday, London dairy, répression sanglante. Rapport conclut à la seule culpabilité de l'armée britannique", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_393E05F0-80CC-9D29-A42B-B293F1478831", 
-        "dc:created": "2010-09-06T15:53:44.675786", 
-        "dc:modified": "2010-09-06T15:53:44.675786", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_F1A706C3-8CFD-8479-FE1A-B293F147FB10"
-    }, 
-    {
-      "begin": "546458", 
-      "end": 552728, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "intermède musicale", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_393E05F0-80CC-9D29-A42B-B293F1478831", 
-        "dc:created": "2010-09-06T15:53:44.675786", 
-        "dc:modified": "2010-09-06T15:53:44.675786", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_D87336F4-AF1E-1192-AD6F-B293F14750F6"
-    }, 
-    {
-      "begin": "552728", 
-      "end": 694963, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Retraite, travail allongé : méthode douce du gouvernement\nTony Eward communicant BP\nCatastrophe dans le Var\nApéro saucisson et pinard interdit\nécrivain portugais Saramago : l'évangile selon Jésus Christ", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_393E05F0-80CC-9D29-A42B-B293F1478831", 
-        "dc:created": "2010-09-06T15:53:44.675786", 
-        "dc:modified": "2010-09-06T15:53:44.675786", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_EA074915-79A3-E8C3-A7BD-B293F1472B4A"
-    }, 
-    {
-      "begin": "695261", 
-      "end": 725426, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "commentaire Alain Guarigou", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_393E05F0-80CC-9D29-A42B-B293F1478831", 
-        "dc:created": "2010-09-06T15:53:44.675786", 
-        "dc:modified": "2010-09-06T15:53:44.675786", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_20B4A5D9-D87C-329A-8D6E-B293F147D954"
-    }, 
-    {
-      "begin": "725716", 
-      "end": 784695, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Fond public - fond privé", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_393E05F0-80CC-9D29-A42B-B293F1478831", 
-        "dc:created": "2010-09-06T15:53:44.675786", 
-        "dc:modified": "2010-09-06T15:53:44.675786", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_F0A40BE7-0DE5-F4AE-00E7-B293F147C76E"
-    }, 
-    {
-      "begin": "784695", 
-      "end": 802807, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Gardette : Francois Fillon veut montrer l'exemple", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_393E05F0-80CC-9D29-A42B-B293F1478831", 
-        "dc:created": "2010-09-06T15:53:44.675786", 
-        "dc:modified": "2010-09-06T15:53:44.675786", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_801AE38E-9E88-347D-365A-B293F147FA32"
-    }, 
-    {
-      "begin": "802807", 
-      "end": 853566, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Reportage : Fillon et les privilèges des politiques", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_393E05F0-80CC-9D29-A42B-B293F1478831", 
-        "dc:created": "2010-09-06T15:53:44.675786", 
-        "dc:modified": "2010-09-06T15:53:44.675786", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_F5F3F6C7-2152-6FCA-3838-B293F147F4A6"
-    }, 
-    {
-      "begin": "853566", 
-      "end": 870284, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Caroline Broué à Garrigou : les privilèges ?", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_393E05F0-80CC-9D29-A42B-B293F1478831", 
-        "dc:created": "2010-09-06T15:53:44.675786", 
-        "dc:modified": "2010-09-06T15:53:44.675786", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_F01AD8C9-6F7F-0ED8-FCB8-B293F147EAE0"
-    }, 
-    {
-      "begin": "870284", 
-      "end": 899309, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "Réponse : privilège du cumul.", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_393E05F0-80CC-9D29-A42B-B293F1478831", 
-        "dc:created": "2010-09-06T15:53:44.675786", 
-        "dc:modified": "2010-09-06T15:53:44.675786", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_306A6A5E-BB28-DBB3-1B2C-B293F147B879"
-    }, 
-    {
-      "begin": "899309", 
-      "end": 900309, 
-      "tags": null, 
-      "media": "franceculture_retourdudimanche20100620", 
-      "content": {
-        "mimetype": "application/x-ldt-structured", 
-        "color": "255", 
-        "audio": {
-          "mimetype": "audio/mp3", 
-          "src": "", 
-          "href": ""
-        }, 
-        "description": "", 
-        "title": ""
-      }, 
-      "meta": {
-        "dc:contributor": "perso", 
-        "id-ref": "c_393E05F0-80CC-9D29-A42B-B293F1478831", 
-        "dc:created": "2010-09-06T15:53:44.675786", 
-        "dc:modified": "2010-09-06T15:53:44.675786", 
-        "dc:creator": "perso"
-      }, 
-      "id": "s_40445FD2-80E5-F9C9-57B8-B293F1472D60"
-    }
-  ], 
-  "annotation-types": [
-    {
-      "dc:contributor": "perso", 
-      "dc:creator": "perso", 
-      "dc:title": "Chapitrage Notes", 
-      "id": "c_1F07824B-F512-78A9-49DB-6FB51DAB9560", 
-      "dc:created": "2010-09-06T15:53:44.572226", 
-      "dc:description": "", 
-      "dc:modified": "2010-09-06T15:53:44.572226"
-    }, 
-    {
-      "dc:contributor": "perso", 
-      "dc:creator": "perso", 
-      "dc:title": "Mes notes", 
-      "id": "c_F6BB72C6-686E-1E8A-D775-B2B91B97C795", 
-      "dc:created": "2010-09-06T15:53:44.626882", 
-      "dc:description": "", 
-      "dc:modified": "2010-09-06T15:53:44.626882"
-    }, 
-    {
-      "dc:contributor": "perso", 
-      "dc:creator": "perso", 
-      "dc:title": "Mes notes", 
-      "id": "c_393E05F0-80CC-9D29-A42B-B293F1478831", 
-      "dc:created": "2010-09-06T15:53:44.675786", 
-      "dc:description": "", 
-      "dc:modified": "2010-09-06T15:53:44.675786"
-    }, 
-    {
-      "dc:contributor": "perso", 
-      "dc:creator": "perso", 
-      "dc:title": "Chapitrage", 
-      "id": "c_DE60F95E-73B8-922D-3AC7-6FB197A1BF16", 
-      "dc:created": "2010-09-06T15:53:44.699595", 
-      "dc:description": "", 
-      "dc:modified": "2010-09-06T15:53:44.699595"
-    }
-  ]
-}
--- a/sbin/build/client.xml	Fri Apr 27 19:18:21 2012 +0200
+++ b/sbin/build/client.xml	Thu May 03 17:52:52 2012 +0200
@@ -13,41 +13,16 @@
     </taskdef>
     <delete dir="${basedir}/../../build" />
     <mkdir  dir="${basedir}/../../build" />
+    
     <target name="makeall" depends="concatenate" />
-    <target name="make_templates" description="Concatenate the html templates together">
-        <for param="file">
-            <path>
-                <fileset dir="../../src/templates" includes="*.html" />
-            </path>
-            <sequential>
-
-                <basename property="filename" file="@{file}"/>
-                <basename property="filehead" file="@{file}" suffix=".html"/>
-                <echo file="../../build/compiled_templates.js" append="yes"
-                message="${line.separator}IriSP.${filehead}_template = &quot;" />
-                <concat append="yes" destfile="../../build/compiled_templates.js">
-                    <filelist dir="../../src/templates" files="${filename}"></filelist>
-                    <filterchain>
-                        <striplinebreaks/>
-                    </filterchain>
-                </concat>
-                <echo file="../../build/compiled_templates.js" append="yes" message="&quot;;" />
-                <var name="filename" unset="true" />
-                <var name="filehead" unset="true" />
-            </sequential>
-        </for>
-    </target>
-    <target name="concatenate" description="Build the developer release file" depends="make_templates">
+    
+    <target name="concatenate" description="Build the developer release file">
         <concat encoding="UTF-8" outputencoding="UTF-8" destfile="../../build/LdtPlayer-core.js">
             <filelist dir="../../src/js/" files="header.js" />
-            <filelist dir="../../src/js/libs"
-            files="lab.js"/>
             <!-- required file before everything else -->
-            <filelist dir="../../src/js" files="main.js" />
-            <!-- templates -->
-            <filelist dir="../../build" files="compiled_templates.js" />
+            <filelist dir="../../src/js/libs" files="LAB.min.js" />
             <!-- core files -->
-            <filelist dir="../../src/js" files="utils.js pop.js model.js defaults.js widgets.js modules.js layout.js init.js i18n.js" />
+            <filelist dir="../../src/js" files="init.js utils.js pop.js model.js defaults.js widgets.js" />
             <!-- players -->
             <fileset dir="../../src/js/players" casesensitive="yes">
                 <include name="**/*.js"/>
@@ -62,6 +37,7 @@
         </concat>
         <delete file="../../build/compiled_templates.js" />
     </target>
+    
     <target name="minify" depends="concatenate">
         <jscomp compilationLevel="simple" warning="quiet" debug="false"
         output="../../build/LdtPlayer.min.raw.js">
@@ -71,7 +47,7 @@
                 <file name="js/swfobject.js" />
             </externs>
             <sources dir="${basedir}/../../build">
-                <file name="LdtPlayer-release.js" />
+                <file name="LdtPlayer-core.js" />
             </sources>
         </jscomp>
         <concat destfile="../../build/LdtPlayer.min.js"
@@ -87,7 +63,7 @@
     <target name="jslint" description="Run jslint on the files" depends="concatenate">
         <apply executable="java" parallel="false">
             <filelist dir="../../build">
-                <file name="LdtPlayer-release.js"/>
+                <file name="LdtPlayer-core.js"/>
             </filelist>
             <arg line="-jar"/>
             <arg path="${rhino.jar}"/>
--- a/src/css/LdtPlayer-base.css	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-/* Base classes */
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/css/LdtPlayer-core.css	Thu May 03 17:52:52 2012 +0200
@@ -0,0 +1,15 @@
+/* Base classes */
+
+.Ldt-Loader {
+    min-height: 128px;
+    background:url(img/loader.gif) center no-repeat;
+    text-indent: -9999px;
+    position: absolute;
+    width: 100%;
+}
+
+.Ldt-Widget {
+    font-family: Arial, Helvetica, sans-serif;
+    color: black;
+    font-size: 12px;
+}
Binary file src/css/img/loader.gif has changed
Binary file src/css/imgs/loader.gif has changed
--- a/src/js/defaults.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/js/defaults.js	Thu May 03 17:52:52 2012 +0200
@@ -3,7 +3,7 @@
 IriSP.libFiles = {
     defaultDir : "js/libs/",
     inDefaultDir : {
-        underscore : "underscore.js",
+        underscore : "underscore-min.js",
         Mustache : "mustache.js",
         jQuery : "jquery.min.js",
         jQueryUI : "jquery-ui.min.js",
@@ -11,12 +11,12 @@
         cssjQueryUI : "jquery-ui.css",
         popcorn : "popcorn.js",
         jwplayer : "jwplayer.js",
-        raphael : "raphael.js",
+        raphael : "raphael-min.js",
         "popcorn.mediafragment" : "popcorn.mediafragment.js",
         "popcorn.code" : "popcorn.code.js",
         "popcorn.jwplayer" : "popcorn.jwplayer.js",
         "popcorn.youtube" : "popcorn.youtube.js",
-        "tracemanager" : "tracemanager.js"
+        tracemanager : "tracemanager.js"
     },
     locations : {
         // use to define locations outside defautl_dir
@@ -31,88 +31,26 @@
 
 IriSP.widgetsDir = 'widgets';
 
+IriSP.widgetsRequirements = {
+    Sparkline: {
+        noCss: true,
+        requires: "raphael"
+    },
+    Arrow: {
+        noCss: true,
+        requires: "raphael"
+    },
+    Mediafragment: {
+        noCss: true
+    },
+    Trace : {
+        noCss: true,
+        requires: "tracemanager"
+    }
+}
+
 IriSP.guiDefaults = {
     width : 640,            
     container : 'LdtPlayer',
     spacer_div_height : 0
 }
-
-IriSP.widgetsDefaults = {
-    "AnnotationsWidget" : {
-        "share_text" : "I'm watching "
-    },
-    "TweetsWidget" : {
-        default_profile_picture : "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png",
-        tweet_display_period : 10000 // how long do we show a tweet ?
-    },
-    "SegmentsWidget" : {
-        cinecast_version : false
-    },
-    "createAnnotationWidget" : {
-        tags : [
-            {
-                "id" : "digitalstudies",
-                "meta" : {
-                    "description" : "#digital-studies"
-                }
-            },
-            {
-                "id" : "amateur",
-                "meta" : {
-                    "description" : "#amateur"
-                },
-            }
-        ],
-        remote_tags : false,
-        random_tags : false,
-        show_from_field : false,
-        disable_share : false,
-        polemic_mode : true, /* enable polemics ? */
-        polemics : [{
-            "className" : "positive",
-            "keyword" : "++"
-        }, {
-            "className" : "negative",
-            "keyword" : "--"
-        }, {
-            "className" : "reference",
-            "keyword" : "=="
-        }, {
-            "className" : "question",
-            "keyword" : "??"
-        }],
-        cinecast_version : false, /* put to false to enable the platform version, true for the festival cinecast one. */
-
-        /* where does the widget PUT the annotations - this is a mustache template. id refers to the id of the media ans is filled
-         by the widget.
-         */
-        api_endpoint_template : "", // platform_url + "/ldtplatform/api/ldt/annotations/{{id}}.json",
-        api_method : "PUT"
-    },
-    "StackGraphWidget" : {
-        defaultcolor : "#585858",
-        tags : [
-            {
-                "keywords" : [ "++" ],
-                "description" : "positif",
-                "color" : "#1D973D"
-            },
-            {
-                "keywords" : [ "--" ],
-                "description" : "negatif",
-                "color" : "#CE0A15"
-            },
-            {
-                "keywords" : [ "==" ],
-                "description" : "reference",
-                "color" : "#C5A62D"  
-            },
-            {
-                "keywords" : [ "??" ],
-                "description" : "question",
-                "color" : "#036AAE"
-            }
-        ],
-        streamgraph : false
-    }
-}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/js/iframe_embed/embed-mini.js	Thu May 03 17:52:52 2012 +0200
@@ -0,0 +1,4 @@
+(function(a) {var b=document.location,c=b.getElementById(a),d=window,e="hashchange";
+d.onhashchange=function(){c.contentWindow.postMessage({type:e,hash:b.hash},"*");};
+d.addEventListener('message',function(f){g=f.data;if(g.type===e){b.hash=g.hash;}});    
+})("metadataplayer_embed");
--- a/src/js/iframe_embed/embedder.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/js/iframe_embed/embedder.js	Thu May 03 17:52:52 2012 +0200
@@ -3,258 +3,17 @@
    to the iframe url in the page url.   
 */
 
-IriSP = {};
-
-window.onhashchange = function() {
-  var url = window.location.href;
-  var frame = document.getElementById("metadataplayer_embed");
-
-  if ( url.split( "#" )[ 1 ] != null ) {
-       hashvalue = url.split("#")[1];
-       frame.contentWindow.postMessage({type: "hashchange", value: hashvalue}, "*");
-  }    
-};
-
-
-IriSP.handleMessages = function(e) {
-  var history = window.history;
-  
-  if ( !history.pushState ) {
-    return false;
-  }
-
-  if (e.data.type === "hashchange") {
-    console.log(e.data.value);
-    history.replaceState( {}, "", e.data.value);
-  }
-};
-
-// http://stackoverflow.com/questions/799981/document-ready-equivalent-without-jquery
-var ready = (function(){    
-
-    var readyList,
-        DOMContentLoaded,
-        class2type = {};
-        class2type["[object Boolean]"] = "boolean";
-        class2type["[object Number]"] = "number";
-        class2type["[object String]"] = "string";
-        class2type["[object Function]"] = "function";
-        class2type["[object Array]"] = "array";
-        class2type["[object Date]"] = "date";
-        class2type["[object RegExp]"] = "regexp";
-        class2type["[object Object]"] = "object";
-
-    var ReadyObj = {
-        // Is the DOM ready to be used? Set to true once it occurs.
-        isReady: false,
-        // A counter to track how many items to wait for before
-        // the ready event fires. See #6781
-        readyWait: 1,
-        // Hold (or release) the ready event
-        holdReady: function( hold ) {
-            if ( hold ) {
-                ReadyObj.readyWait++;
-            } else {
-                ReadyObj.ready( true );
-            }
-        },
-        // Handle when the DOM is ready
-        ready: function( wait ) {
-            // Either a released hold or an DOMready/load event and not yet ready
-            if ( (wait === true && !--ReadyObj.readyWait) || (wait !== true && !ReadyObj.isReady) ) {
-                // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-                if ( !document.body ) {
-                    return setTimeout( ReadyObj.ready, 1 );
-                }
-
-                // Remember that the DOM is ready
-                ReadyObj.isReady = true;
-                // If a normal DOM Ready event fired, decrement, and wait if need be
-                if ( wait !== true && --ReadyObj.readyWait > 0 ) {
-                    return;
-                }
-                // If there are functions bound, to execute
-                readyList.resolveWith( document, [ ReadyObj ] );
-
-                // Trigger any bound ready events
-                //if ( ReadyObj.fn.trigger ) {
-                //  ReadyObj( document ).trigger( "ready" ).unbind( "ready" );
-                //}
-            }
-        },
-        bindReady: function() {
-            if ( readyList ) {
-                return;
-            }
-            readyList = ReadyObj._Deferred();
-
-            // Catch cases where $(document).ready() is called after the
-            // browser event has already occurred.
-            if ( document.readyState === "complete" ) {
-                // Handle it asynchronously to allow scripts the opportunity to delay ready
-                return setTimeout( ReadyObj.ready, 1 );
-            }
-
-            // Mozilla, Opera and webkit nightlies currently support this event
-            if ( document.addEventListener ) {
-                // Use the handy event callback
-                document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-                // A fallback to window.onload, that will always work
-                window.addEventListener( "load", ReadyObj.ready, false );
-
-            // If IE event model is used
-            } else if ( document.attachEvent ) {
-                // ensure firing before onload,
-                // maybe late but safe also for iframes
-                document.attachEvent( "onreadystatechange", DOMContentLoaded );
-
-                // A fallback to window.onload, that will always work
-                window.attachEvent( "onload", ReadyObj.ready );
-
-                // If IE and not a frame
-                // continually check to see if the document is ready
-                var toplevel = false;
-
-                try {
-                    toplevel = window.frameElement == null;
-                } catch(e) {}
+(function(_frameId) {
+    var _frame = document.getElementById(_frameId);
+    
+    window.onhashchange = function() {
+        frame.contentWindow.postMessage({type: "hashchange", hash: hashvalue}, "*");
+    };
 
-                if ( document.documentElement.doScroll && toplevel ) {
-                    doScrollCheck();
-                }
-            }
-        },
-        _Deferred: function() {
-            var // callbacks list
-                callbacks = [],
-                // stored [ context , args ]
-                fired,
-                // to avoid firing when already doing so
-                firing,
-                // flag to know if the deferred has been cancelled
-                cancelled,
-                // the deferred itself
-                deferred  = {
-
-                    // done( f1, f2, ...)
-                    done: function() {
-                        if ( !cancelled ) {
-                            var args = arguments,
-                                i,
-                                length,
-                                elem,
-                                type,
-                                _fired;
-                            if ( fired ) {
-                                _fired = fired;
-                                fired = 0;
-                            }
-                            for ( i = 0, length = args.length; i < length; i++ ) {
-                                elem = args[ i ];
-                                type = ReadyObj.type( elem );
-                                if ( type === "array" ) {
-                                    deferred.done.apply( deferred, elem );
-                                } else if ( type === "function" ) {
-                                    callbacks.push( elem );
-                                }
-                            }
-                            if ( _fired ) {
-                                deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );
-                            }
-                        }
-                        return this;
-                    },
-
-                    // resolve with given context and args
-                    resolveWith: function( context, args ) {
-                        if ( !cancelled && !fired && !firing ) {
-                            // make sure args are available (#8421)
-                            args = args || [];
-                            firing = 1;
-                            try {
-                                while( callbacks[ 0 ] ) {
-                                    callbacks.shift().apply( context, args );//shifts a callback, and applies it to document
-                                }
-                            }
-                            finally {
-                                fired = [ context, args ];
-                                firing = 0;
-                            }
-                        }
-                        return this;
-                    },
-
-                    // resolve with this as context and given arguments
-                    resolve: function() {
-                        deferred.resolveWith( this, arguments );
-                        return this;
-                    },
-
-                    // Has this deferred been resolved?
-                    isResolved: function() {
-                        return !!( firing || fired );
-                    },
-
-                    // Cancel
-                    cancel: function() {
-                        cancelled = 1;
-                        callbacks = [];
-                        return this;
-                    }
-                };
-
-            return deferred;
-        },
-        type: function( obj ) {
-            return obj == null ?
-                String( obj ) :
-                class2type[ Object.prototype.toString.call(obj) ] || "object";
+    window.addEventListener('message', function(_e) {
+        if (e.data.type === "hashchange") {
+            document.location.hash = e.data.hash;
         }
-    }
-    // The DOM ready check for Internet Explorer
-    function doScrollCheck() {
-        if ( ReadyObj.isReady ) {
-            return;
-        }
-
-        try {
-            // If IE is used, use the trick by Diego Perini
-            // http://javascript.nwbox.com/IEContentLoaded/
-            document.documentElement.doScroll("left");
-        } catch(e) {
-            setTimeout( doScrollCheck, 1 );
-            return;
-        }
-
-        // and execute any waiting functions
-        ReadyObj.ready();
-    }
-    // Cleanup functions for the document ready method
-    if ( document.addEventListener ) {
-        DOMContentLoaded = function() {
-            document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-            ReadyObj.ready();
-        };
-
-    } else if ( document.attachEvent ) {
-        DOMContentLoaded = function() {
-            // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-            if ( document.readyState === "complete" ) {
-                document.detachEvent( "onreadystatechange", DOMContentLoaded );
-                ReadyObj.ready();
-            }
-        };
-    }
-    function ready( fn ) {
-        // Attach the listeners
-        ReadyObj.bindReady();
-
-        var type = ReadyObj.type( fn );
-
-        // Add the callback
-        readyList.done( fn );//readyList is result of _Deferred()
-    }
-    return ready;
-})();
-
-ready(function() { window.addEventListener('message', IriSP.handleMessages, false); });
\ No newline at end of file
+    });
+    
+})("metadataplayer_embed");
--- a/src/js/init.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/js/init.js	Thu May 03 17:52:52 2012 +0200
@@ -1,17 +1,20 @@
 /* init.js - initialization and configuration of Popcorn and the widgets
-exemple json configuration:
 */
 
+if (typeof window.IriSP === "undefined") {
+    IriSP = {};
+}
+
 /* The Metadataplayer Object, single point of entry, replaces IriSP.init_player */
 
 IriSP.Metadataplayer = function(config, video_metadata) {
     for (var key in IriSP.guiDefaults) {
-        if (IriSP.guiDefaults.hasOwnProperty(key) && !config.gui.hasOwnProperty('key')) {
+        if (IriSP.guiDefaults.hasOwnProperty(key) && !config.gui.hasOwnProperty(key)) {
             config.gui[key] = IriSP.guiDefaults[key]
         }
     }
     var _container = document.getElementById(config.gui.container);
-    _container.innerHTML = '<div class="Ldt-Loader">Loading... Chargement...</div>';
+    _container.innerHTML = '<h3 class="Ldt-Loader">Loading... Chargement...</h3>';
     this.video_metadata = video_metadata;
     this.sourceManager = new IriSP.Model.Directory();
     this.config = config;
@@ -23,8 +26,7 @@
 }
 
 IriSP.Metadataplayer.prototype.loadLibs = function() {
-    // Localize jQuery variable
-    IriSP.jQuery = null;
+    
     var $L = $LAB.script(IriSP.getLib("underscore")).script(IriSP.getLib("Mustache")).script(IriSP.getLib("jQuery")).script(IriSP.getLib("swfObject")).wait().script(IriSP.getLib("jQueryUI"));
 
     if(this.config.player.type === "jwplayer" || this.config.player.type === "allocine" || this.config.player.type === "dailymotion") {
@@ -44,18 +46,16 @@
 
     /* widget specific requirements */
     for(var _i = 0; _i < this.config.gui.widgets.length; _i++) {
-        if(this.config.gui.widgets[_i].type === "Sparkline" || this.config.gui.widgets[_i].type === "Arrow") {
-            $L.script(IriSP.getLib("raphael"));
-        }
-        if(this.config.gui.widgets[_i].type === "TraceWidget") {
-            $L.script(IriSP.getLib("tracemanager"))
+        var _t = this.config.gui.widgets[_i].type;
+        if (typeof IriSP.widgetsRequirements[_t] !== "undefined" && typeof IriSP.widgetsRequirements[_t].requires !== "undefined") {
+            $L.script(IriSP.getLib(IriSP.widgetsRequirements[_t].requires));
         }
     }
     
     var _this = this;
     
     $L.wait(function() {
-        IriSP.jQuery = window.jQuery.noConflict(true);
+        IriSP.jQuery = window.jQuery.noConflict();
         IriSP._ = window._.noConflict();
         
         IriSP.loadCss(IriSP.getLib("cssjQueryUI"))
@@ -67,7 +67,6 @@
 }
 
 IriSP.Metadataplayer.prototype.onLibsLoaded = function() {
-    console.log('OnLibsLoaded');
     this.videoData = this.loadMetadata(this.video_metadata);
     this.$ = IriSP.jQuery('#' + this.config.gui.container);
     this.$.css({
@@ -135,8 +134,10 @@
             _callback(new IriSP.Widgets[_widgetConfig.type](_this, _widgetConfig));
         });
     } else {
-        /* Loading Widget CSS   */
-        IriSP.loadCss(IriSP.widgetsDir + '/' + _widgetConfig.type + '.css');
+        /* Loading Widget CSS */
+        if (typeof IriSP.widgetsRequirements[_widgetConfig.type] === "undefined" || typeof IriSP.widgetsRequirements[_widgetConfig.type].noCss === "undefined" || !IriSP.widgetsRequirements[_widgetConfig.type].noCss) {
+            IriSP.loadCss(IriSP.widgetsDir + '/' + _widgetConfig.type + '.css');
+        }
         /* Loading Widget JS    */
         $LAB.script(IriSP.widgetsDir + '/' + _widgetConfig.type + '.js').wait(function() {
             _callback(new IriSP.Widgets[_widgetConfig.type](_this, _widgetConfig));
--- a/src/js/layout.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-/* layout.js - very basic layout management */
-
-/* Has been integrated to init.js */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/js/libs/LAB.min.js	Thu May 03 17:52:52 2012 +0200
@@ -0,0 +1,5 @@
+/*! LAB.js (LABjs :: Loading And Blocking JavaScript)
+    v2.0.3 (c) Kyle Simpson
+    MIT License
+*/
+(function(o){var K=o.$LAB,y="UseLocalXHR",z="AlwaysPreserveOrder",u="AllowDuplicates",A="CacheBust",B="BasePath",C=/^[^?#]*\//.exec(location.href)[0],D=/^\w+\:\/\/\/?[^\/]+/.exec(C)[0],i=document.head||document.getElementsByTagName("head"),L=(o.opera&&Object.prototype.toString.call(o.opera)=="[object Opera]")||("MozAppearance"in document.documentElement.style),q=document.createElement("script"),E=typeof q.preload=="boolean",r=E||(q.readyState&&q.readyState=="uninitialized"),F=!r&&q.async===true,M=!r&&!F&&!L;function G(a){return Object.prototype.toString.call(a)=="[object Function]"}function H(a){return Object.prototype.toString.call(a)=="[object Array]"}function N(a,c){var b=/^\w+\:\/\//;if(/^\/\/\/?/.test(a)){a=location.protocol+a}else if(!b.test(a)&&a.charAt(0)!="/"){a=(c||"")+a}return b.test(a)?a:((a.charAt(0)=="/"?D:C)+a)}function s(a,c){for(var b in a){if(a.hasOwnProperty(b)){c[b]=a[b]}}return c}function O(a){var c=false;for(var b=0;b<a.scripts.length;b++){if(a.scripts[b].ready&&a.scripts[b].exec_trigger){c=true;a.scripts[b].exec_trigger();a.scripts[b].exec_trigger=null}}return c}function t(a,c,b,d){a.onload=a.onreadystatechange=function(){if((a.readyState&&a.readyState!="complete"&&a.readyState!="loaded")||c[b])return;a.onload=a.onreadystatechange=null;d()}}function I(a){a.ready=a.finished=true;for(var c=0;c<a.finished_listeners.length;c++){a.finished_listeners[c]()}a.ready_listeners=[];a.finished_listeners=[]}function P(d,f,e,g,h){setTimeout(function(){var a,c=f.real_src,b;if("item"in i){if(!i[0]){setTimeout(arguments.callee,25);return}i=i[0]}a=document.createElement("script");if(f.type)a.type=f.type;if(f.charset)a.charset=f.charset;if(h){if(r){e.elem=a;if(E){a.preload=true;a.onpreload=g}else{a.onreadystatechange=function(){if(a.readyState=="loaded")g()}}a.src=c}else if(h&&c.indexOf(D)==0&&d[y]){b=new XMLHttpRequest();b.onreadystatechange=function(){if(b.readyState==4){b.onreadystatechange=function(){};e.text=b.responseText+"\n//@ sourceURL="+c;g()}};b.open("GET",c);b.send()}else{a.type="text/cache-script";t(a,e,"ready",function(){i.removeChild(a);g()});a.src=c;i.insertBefore(a,i.firstChild)}}else if(F){a.async=false;t(a,e,"finished",g);a.src=c;i.insertBefore(a,i.firstChild)}else{t(a,e,"finished",g);a.src=c;i.insertBefore(a,i.firstChild)}},0)}function J(){var l={},Q=r||M,n=[],p={},m;l[y]=true;l[z]=false;l[u]=false;l[A]=false;l[B]="";function R(a,c,b){var d;function f(){if(d!=null){d=null;I(b)}}if(p[c.src].finished)return;if(!a[u])p[c.src].finished=true;d=b.elem||document.createElement("script");if(c.type)d.type=c.type;if(c.charset)d.charset=c.charset;t(d,b,"finished",f);if(b.elem){b.elem=null}else if(b.text){d.onload=d.onreadystatechange=null;d.text=b.text}else{d.src=c.real_src}i.insertBefore(d,i.firstChild);if(b.text){f()}}function S(c,b,d,f){var e,g,h=function(){b.ready_cb(b,function(){R(c,b,e)})},j=function(){b.finished_cb(b,d)};b.src=N(b.src,c[B]);b.real_src=b.src+(c[A]?((/\?.*$/.test(b.src)?"&_":"?_")+~~(Math.random()*1E9)+"="):"");if(!p[b.src])p[b.src]={items:[],finished:false};g=p[b.src].items;if(c[u]||g.length==0){e=g[g.length]={ready:false,finished:false,ready_listeners:[h],finished_listeners:[j]};P(c,b,e,((f)?function(){e.ready=true;for(var a=0;a<e.ready_listeners.length;a++){e.ready_listeners[a]()}e.ready_listeners=[]}:function(){I(e)}),f)}else{e=g[0];if(e.finished){j()}else{e.finished_listeners.push(j)}}}function v(){var e,g=s(l,{}),h=[],j=0,w=false,k;function T(a,c){a.ready=true;a.exec_trigger=c;x()}function U(a,c){a.ready=a.finished=true;a.exec_trigger=null;for(var b=0;b<c.scripts.length;b++){if(!c.scripts[b].finished)return}c.finished=true;x()}function x(){while(j<h.length){if(G(h[j])){try{h[j++]()}catch(err){}continue}else if(!h[j].finished){if(O(h[j]))continue;break}j++}if(j==h.length){w=false;k=false}}function V(){if(!k||!k.scripts){h.push(k={scripts:[],finished:true})}}e={script:function(){for(var f=0;f<arguments.length;f++){(function(a,c){var b;if(!H(a)){c=[a]}for(var d=0;d<c.length;d++){V();a=c[d];if(G(a))a=a();if(!a)continue;if(H(a)){b=[].slice.call(a);b.unshift(d,1);[].splice.apply(c,b);d--;continue}if(typeof a=="string")a={src:a};a=s(a,{ready:false,ready_cb:T,finished:false,finished_cb:U});k.finished=false;k.scripts.push(a);S(g,a,k,(Q&&w));w=true;if(g[z])e.wait()}})(arguments[f],arguments[f])}return e},wait:function(){if(arguments.length>0){for(var a=0;a<arguments.length;a++){h.push(arguments[a])}k=h[h.length-1]}else k=false;x();return e}};return{script:e.script,wait:e.wait,setOptions:function(a){s(a,g);return e}}}m={setGlobalDefaults:function(a){s(a,l);return m},setOptions:function(){return v().setOptions.apply(null,arguments)},script:function(){return v().script.apply(null,arguments)},wait:function(){return v().wait.apply(null,arguments)},queueScript:function(){n[n.length]={type:"script",args:[].slice.call(arguments)};return m},queueWait:function(){n[n.length]={type:"wait",args:[].slice.call(arguments)};return m},runQueue:function(){var a=m,c=n.length,b=c,d;for(;--b>=0;){d=n.shift();a=a[d.type].apply(null,d.args)}return a},noConflict:function(){o.$LAB=K;return m},sandbox:function(){return J()}};return m}o.$LAB=J();(function(a,c,b){if(document.readyState==null&&document[a]){document.readyState="loading";document[a](c,b=function(){document.removeEventListener(c,b,false);document.readyState="complete"},false)}})("addEventListener","DOMContentLoaded")})(this);
\ No newline at end of file
--- a/src/js/libs/lab.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,514 +0,0 @@
-/*! LAB.js (LABjs :: Loading And Blocking JavaScript)
-    v2.0.3 (c) Kyle Simpson
-    MIT License
-*/
-
-(function(global){
-	var _$LAB = global.$LAB,
-	
-		// constants for the valid keys of the options object
-		_UseLocalXHR = "UseLocalXHR",
-		_AlwaysPreserveOrder = "AlwaysPreserveOrder",
-		_AllowDuplicates = "AllowDuplicates",
-		_CacheBust = "CacheBust",
-		/*!START_DEBUG*/_Debug = "Debug",/*!END_DEBUG*/
-		_BasePath = "BasePath",
-		
-		// stateless variables used across all $LAB instances
-		root_page = /^[^?#]*\//.exec(location.href)[0],
-		root_domain = /^\w+\:\/\/\/?[^\/]+/.exec(root_page)[0],
-		append_to = document.head || document.getElementsByTagName("head"),
-		
-		// inferences... ick, but still necessary
-		opera_or_gecko = (global.opera && Object.prototype.toString.call(global.opera) == "[object Opera]") || ("MozAppearance" in document.documentElement.style),
-
-/*!START_DEBUG*/
-		// console.log() and console.error() wrappers
-		log_msg = function(){}, 
-		log_error = log_msg,
-/*!END_DEBUG*/
-		
-		// feature sniffs (yay!)
-		test_script_elem = document.createElement("script"),
-		explicit_preloading = typeof test_script_elem.preload == "boolean", // http://wiki.whatwg.org/wiki/Script_Execution_Control#Proposal_1_.28Nicholas_Zakas.29
-		real_preloading = explicit_preloading || (test_script_elem.readyState && test_script_elem.readyState == "uninitialized"), // will a script preload with `src` set before DOM append?
-		script_ordered_async = !real_preloading && test_script_elem.async === true, // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
-		
-		// XHR preloading (same-domain) and cache-preloading (remote-domain) are the fallbacks (for some browsers)
-		xhr_or_cache_preloading = !real_preloading && !script_ordered_async && !opera_or_gecko
-	;
-
-/*!START_DEBUG*/
-	// define console wrapper functions if applicable
-	if (global.console && global.console.log) {
-		if (!global.console.error) global.console.error = global.console.log;
-		log_msg = function(msg) { global.console.log(msg); };
-		log_error = function(msg,err) { global.console.error(msg,err); };
-	}
-/*!END_DEBUG*/
-
-	// test for function
-	function is_func(func) { return Object.prototype.toString.call(func) == "[object Function]"; }
-
-	// test for array
-	function is_array(arr) { return Object.prototype.toString.call(arr) == "[object Array]"; }
-
-	// make script URL absolute/canonical
-	function canonical_uri(src,base_path) {
-		var absolute_regex = /^\w+\:\/\//;
-		
-		// is `src` is protocol-relative (begins with // or ///), prepend protocol
-		if (/^\/\/\/?/.test(src)) {
-			src = location.protocol + src;
-		}
-		// is `src` page-relative? (not an absolute URL, and not a domain-relative path, beginning with /)
-		else if (!absolute_regex.test(src) && src.charAt(0) != "/") {
-			// prepend `base_path`, if any
-			src = (base_path || "") + src;
-		}
-		// make sure to return `src` as absolute
-		return absolute_regex.test(src) ? src : ((src.charAt(0) == "/" ? root_domain : root_page) + src);
-	}
-
-	// merge `source` into `target`
-	function merge_objs(source,target) {
-		for (var k in source) { if (source.hasOwnProperty(k)) {
-			target[k] = source[k]; // TODO: does this need to be recursive for our purposes?
-		}}
-		return target;
-	}
-
-	// does the chain group have any ready-to-execute scripts?
-	function check_chain_group_scripts_ready(chain_group) {
-		var any_scripts_ready = false;
-		for (var i=0; i<chain_group.scripts.length; i++) {
-			if (chain_group.scripts[i].ready && chain_group.scripts[i].exec_trigger) {
-				any_scripts_ready = true;
-				chain_group.scripts[i].exec_trigger();
-				chain_group.scripts[i].exec_trigger = null;
-			}
-		}
-		return any_scripts_ready;
-	}
-
-	// creates a script load listener
-	function create_script_load_listener(elem,registry_item,flag,onload) {
-		elem.onload = elem.onreadystatechange = function() {
-			if ((elem.readyState && elem.readyState != "complete" && elem.readyState != "loaded") || registry_item[flag]) return;
-			elem.onload = elem.onreadystatechange = null;
-			onload();
-		};
-	}
-
-	// script executed handler
-	function script_executed(registry_item) {
-		registry_item.ready = registry_item.finished = true;
-		for (var i=0; i<registry_item.finished_listeners.length; i++) {
-			registry_item.finished_listeners[i]();
-		}
-		registry_item.ready_listeners = [];
-		registry_item.finished_listeners = [];
-	}
-
-	// make the request for a scriptha
-	function request_script(chain_opts,script_obj,registry_item,onload,preload_this_script) {
-		// setTimeout() "yielding" prevents some weird race/crash conditions in older browsers
-		setTimeout(function(){
-			var script, src = script_obj.real_src, xhr;
-			
-			// don't proceed until `append_to` is ready to append to
-			if ("item" in append_to) { // check if `append_to` ref is still a live node list
-				if (!append_to[0]) { // `append_to` node not yet ready
-					// try again in a little bit -- note: will re-call the anonymous function in the outer setTimeout, not the parent `request_script()`
-					setTimeout(arguments.callee,25);
-					return;
-				}
-				// reassign from live node list ref to pure node ref -- avoids nasty IE bug where changes to DOM invalidate live node lists
-				append_to = append_to[0];
-			}
-			script = document.createElement("script");
-			if (script_obj.type) script.type = script_obj.type;
-			if (script_obj.charset) script.charset = script_obj.charset;
-			
-			// should preloading be used for this script?
-			if (preload_this_script) {
-				// real script preloading?
-				if (real_preloading) {
-					/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script preload: "+src);/*!END_DEBUG*/
-					registry_item.elem = script;
-					if (explicit_preloading) { // explicit preloading (aka, Zakas' proposal)
-						script.preload = true;
-						script.onpreload = onload;
-					}
-					else {
-						script.onreadystatechange = function(){
-							if (script.readyState == "loaded") onload();
-						};
-					}
-					script.src = src;
-					// NOTE: no append to DOM yet, appending will happen when ready to execute
-				}
-				// same-domain and XHR allowed? use XHR preloading
-				else if (preload_this_script && src.indexOf(root_domain) == 0 && chain_opts[_UseLocalXHR]) {
-					xhr = new XMLHttpRequest(); // note: IE never uses XHR (it supports true preloading), so no more need for ActiveXObject fallback for IE <= 7
-					/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script preload (xhr): "+src);/*!END_DEBUG*/
-					xhr.onreadystatechange = function() {
-						if (xhr.readyState == 4) {
-							xhr.onreadystatechange = function(){}; // fix a memory leak in IE
-							registry_item.text = xhr.responseText + "\n//@ sourceURL=" + src; // http://blog.getfirebug.com/2009/08/11/give-your-eval-a-name-with-sourceurl/
-							onload();
-						}
-					};
-					xhr.open("GET",src);
-					xhr.send();
-				}
-				// as a last resort, use cache-preloading
-				else {
-					/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script preload (cache): "+src);/*!END_DEBUG*/
-					script.type = "text/cache-script";
-					create_script_load_listener(script,registry_item,"ready",function() {
-						append_to.removeChild(script);
-						onload();
-					});
-					script.src = src;
-					append_to.insertBefore(script,append_to.firstChild);
-				}
-			}
-			// use async=false for ordered async? parallel-load-serial-execute http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
-			else if (script_ordered_async) {
-				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script load (ordered async): "+src);/*!END_DEBUG*/
-				script.async = false;
-				create_script_load_listener(script,registry_item,"finished",onload);
-				script.src = src;
-				append_to.insertBefore(script,append_to.firstChild);
-			}
-			// otherwise, just a normal script element
-			else {
-				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script load: "+src);/*!END_DEBUG*/
-				create_script_load_listener(script,registry_item,"finished",onload);
-				script.src = src;
-				append_to.insertBefore(script,append_to.firstChild);
-			}
-		},0);
-	}
-		
-	// create a clean instance of $LAB
-	function create_sandbox() {
-		var global_defaults = {},
-			can_use_preloading = real_preloading || xhr_or_cache_preloading,
-			queue = [],
-			registry = {},
-			instanceAPI
-		;
-		
-		// global defaults
-		global_defaults[_UseLocalXHR] = true;
-		global_defaults[_AlwaysPreserveOrder] = false;
-		global_defaults[_AllowDuplicates] = false;
-		global_defaults[_CacheBust] = false;
-		/*!START_DEBUG*/global_defaults[_Debug] = false;/*!END_DEBUG*/
-		global_defaults[_BasePath] = "";
-
-		// execute a script that has been preloaded already
-		function execute_preloaded_script(chain_opts,script_obj,registry_item) {
-			var script;
-			
-			function preload_execute_finished() {
-				if (script != null) { // make sure this only ever fires once
-					script = null;
-					script_executed(registry_item);
-				}
-			}
-			
-			if (registry[script_obj.src].finished) return;
-			if (!chain_opts[_AllowDuplicates]) registry[script_obj.src].finished = true;
-			
-			script = registry_item.elem || document.createElement("script");
-			if (script_obj.type) script.type = script_obj.type;
-			if (script_obj.charset) script.charset = script_obj.charset;
-			create_script_load_listener(script,registry_item,"finished",preload_execute_finished);
-			
-			// script elem was real-preloaded
-			if (registry_item.elem) {
-				registry_item.elem = null;
-			}
-			// script was XHR preloaded
-			else if (registry_item.text) {
-				script.onload = script.onreadystatechange = null;	// script injection doesn't fire these events
-				script.text = registry_item.text;
-			}
-			// script was cache-preloaded
-			else {
-				script.src = script_obj.real_src;
-			}
-			append_to.insertBefore(script,append_to.firstChild);
-
-			// manually fire execution callback for injected scripts, since events don't fire
-			if (registry_item.text) {
-				preload_execute_finished();
-			}
-		}
-	
-		// process the script request setup
-		function do_script(chain_opts,script_obj,chain_group,preload_this_script) {
-			var registry_item,
-				registry_items,
-				ready_cb = function(){ script_obj.ready_cb(script_obj,function(){ execute_preloaded_script(chain_opts,script_obj,registry_item); }); },
-				finished_cb = function(){ script_obj.finished_cb(script_obj,chain_group); }
-			;
-			
-			script_obj.src = canonical_uri(script_obj.src,chain_opts[_BasePath]);
-			script_obj.real_src = script_obj.src + 
-				// append cache-bust param to URL?
-				(chain_opts[_CacheBust] ? ((/\?.*$/.test(script_obj.src) ? "&_" : "?_") + ~~(Math.random()*1E9) + "=") : "")
-			;
-			
-			if (!registry[script_obj.src]) registry[script_obj.src] = {items:[],finished:false};
-			registry_items = registry[script_obj.src].items;
-
-			// allowing duplicates, or is this the first recorded load of this script?
-			if (chain_opts[_AllowDuplicates] || registry_items.length == 0) {
-				registry_item = registry_items[registry_items.length] = {
-					ready:false,
-					finished:false,
-					ready_listeners:[ready_cb],
-					finished_listeners:[finished_cb]
-				};
-
-				request_script(chain_opts,script_obj,registry_item,
-					// which callback type to pass?
-					(
-					 	(preload_this_script) ? // depends on script-preloading
-						function(){
-							registry_item.ready = true;
-							for (var i=0; i<registry_item.ready_listeners.length; i++) {
-								registry_item.ready_listeners[i]();
-							}
-							registry_item.ready_listeners = [];
-						} :
-						function(){ script_executed(registry_item); }
-					),
-					// signal if script-preloading should be used or not
-					preload_this_script
-				);
-			}
-			else {
-				registry_item = registry_items[0];
-				if (registry_item.finished) {
-					finished_cb();
-				}
-				else {
-					registry_item.finished_listeners.push(finished_cb);
-				}
-			}
-		}
-
-		// creates a closure for each separate chain spawned from this $LAB instance, to keep state cleanly separated between chains
-		function create_chain() {
-			var chainedAPI,
-				chain_opts = merge_objs(global_defaults,{}),
-				chain = [],
-				exec_cursor = 0,
-				scripts_currently_loading = false,
-				group
-			;
-			
-			// called when a script has finished preloading
-			function chain_script_ready(script_obj,exec_trigger) {
-				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("script preload finished: "+script_obj.real_src);/*!END_DEBUG*/
-				script_obj.ready = true;
-				script_obj.exec_trigger = exec_trigger;
-				advance_exec_cursor(); // will only check for 'ready' scripts to be executed
-			}
-
-			// called when a script has finished executing
-			function chain_script_executed(script_obj,chain_group) {
-				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("script execution finished: "+script_obj.real_src);/*!END_DEBUG*/
-				script_obj.ready = script_obj.finished = true;
-				script_obj.exec_trigger = null;
-				// check if chain group is all finished
-				for (var i=0; i<chain_group.scripts.length; i++) {
-					if (!chain_group.scripts[i].finished) return;
-				}
-				// chain_group is all finished if we get this far
-				chain_group.finished = true;
-				advance_exec_cursor();
-			}
-
-			// main driver for executing each part of the chain
-			function advance_exec_cursor() {
-				while (exec_cursor < chain.length) {
-					if (is_func(chain[exec_cursor])) {
-						/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("$LAB.wait() executing: "+chain[exec_cursor]);/*!END_DEBUG*/
-						try { chain[exec_cursor++](); } catch (err) {
-							/*!START_DEBUG*/if (chain_opts[_Debug]) log_error("$LAB.wait() error caught: ",err);/*!END_DEBUG*/
-						}
-						continue;
-					}
-					else if (!chain[exec_cursor].finished) {
-						if (check_chain_group_scripts_ready(chain[exec_cursor])) continue;
-						break;
-					}
-					exec_cursor++;
-				}
-				// we've reached the end of the chain (so far)
-				if (exec_cursor == chain.length) {
-					scripts_currently_loading = false;
-					group = false;
-				}
-			}
-			
-			// setup next chain script group
-			function init_script_chain_group() {
-				if (!group || !group.scripts) {
-					chain.push(group = {scripts:[],finished:true});
-				}
-			}
-
-			// API for $LAB chains
-			chainedAPI = {
-				// start loading one or more scripts
-				script:function(){
-					for (var i=0; i<arguments.length; i++) {
-						(function(script_obj,script_list){
-							var splice_args;
-							
-							if (!is_array(script_obj)) {
-								script_list = [script_obj];
-							}
-							for (var j=0; j<script_list.length; j++) {
-								init_script_chain_group();
-								script_obj = script_list[j];
-								
-								if (is_func(script_obj)) script_obj = script_obj();
-								if (!script_obj) continue;
-								if (is_array(script_obj)) {
-									// set up an array of arguments to pass to splice()
-									splice_args = [].slice.call(script_obj); // first include the actual array elements we want to splice in
-									splice_args.unshift(j,1); // next, put the `index` and `howMany` parameters onto the beginning of the splice-arguments array
-									[].splice.apply(script_list,splice_args); // use the splice-arguments array as arguments for splice()
-									j--; // adjust `j` to account for the loop's subsequent `j++`, so that the next loop iteration uses the same `j` index value
-									continue;
-								}
-								if (typeof script_obj == "string") script_obj = {src:script_obj};
-								script_obj = merge_objs(script_obj,{
-									ready:false,
-									ready_cb:chain_script_ready,
-									finished:false,
-									finished_cb:chain_script_executed
-								});
-								group.finished = false;
-								group.scripts.push(script_obj);
-								
-								do_script(chain_opts,script_obj,group,(can_use_preloading && scripts_currently_loading));
-								scripts_currently_loading = true;
-								
-								if (chain_opts[_AlwaysPreserveOrder]) chainedAPI.wait();
-							}
-						})(arguments[i],arguments[i]);
-					}
-					return chainedAPI;
-				},
-				// force LABjs to pause in execution at this point in the chain, until the execution thus far finishes, before proceeding
-				wait:function(){
-					if (arguments.length > 0) {
-						for (var i=0; i<arguments.length; i++) {
-							chain.push(arguments[i]);
-						}
-						group = chain[chain.length-1];
-					}
-					else group = false;
-					
-					advance_exec_cursor();
-					
-					return chainedAPI;
-				}
-			};
-
-			// the first chain link API (includes `setOptions` only this first time)
-			return {
-				script:chainedAPI.script, 
-				wait:chainedAPI.wait, 
-				setOptions:function(opts){
-					merge_objs(opts,chain_opts);
-					return chainedAPI;
-				}
-			};
-		}
-
-		// API for each initial $LAB instance (before chaining starts)
-		instanceAPI = {
-			// main API functions
-			setGlobalDefaults:function(opts){
-				merge_objs(opts,global_defaults);
-				return instanceAPI;
-			},
-			setOptions:function(){
-				return create_chain().setOptions.apply(null,arguments);
-			},
-			script:function(){
-				return create_chain().script.apply(null,arguments);
-			},
-			wait:function(){
-				return create_chain().wait.apply(null,arguments);
-			},
-
-			// built-in queuing for $LAB `script()` and `wait()` calls
-			// useful for building up a chain programmatically across various script locations, and simulating
-			// execution of the chain
-			queueScript:function(){
-				queue[queue.length] = {type:"script", args:[].slice.call(arguments)};
-				return instanceAPI;
-			},
-			queueWait:function(){
-				queue[queue.length] = {type:"wait", args:[].slice.call(arguments)};
-				return instanceAPI;
-			},
-			runQueue:function(){
-				var $L = instanceAPI, len=queue.length, i=len, val;
-				for (;--i>=0;) {
-					val = queue.shift();
-					$L = $L[val.type].apply(null,val.args);
-				}
-				return $L;
-			},
-
-			// rollback `[global].$LAB` to what it was before this file was loaded, the return this current instance of $LAB
-			noConflict:function(){
-				global.$LAB = _$LAB;
-				return instanceAPI;
-			},
-
-			// create another clean instance of $LAB
-			sandbox:function(){
-				return create_sandbox();
-			}
-		};
-
-		return instanceAPI;
-	}
-
-	// create the main instance of $LAB
-	global.$LAB = create_sandbox();
-
-
-	/* The following "hack" was suggested by Andrea Giammarchi and adapted from: http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html
-	   NOTE: this hack only operates in FF and then only in versions where document.readyState is not present (FF < 3.6?).
-	   
-	   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 
-	   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 
-	   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. 
-	   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 
-	   fixed by this hack, and should therefore **not** be lazy-loaded by script loader tools such as LABjs.
-	*/ 
-	(function(addEvent,domLoaded,handler){
-		if (document.readyState == null && document[addEvent]){
-			document.readyState = "loading";
-			document[addEvent](domLoaded,handler = function(){
-				document.removeEventListener(domLoaded,handler,false);
-				document.readyState = "complete";
-			},false);
-		}
-	})("addEventListener","DOMContentLoaded");
-
-})(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/js/libs/raphael-min.js	Thu May 03 17:52:52 2012 +0200
@@ -0,0 +1,10 @@
+// ┌────────────────────────────────────────────────────────────────────┐ \\
+// │ Raphaël 2.1.0 - JavaScript Vector Library                          │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright © 2008-2012 Dmitry Baranovskiy (http://raphaeljs.com)    │ \\
+// │ Copyright © 2008-2012 Sencha Labs (http://sencha.com)              │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Licensed under the MIT (http://raphaeljs.com/license.html) license.│ \\
+// └────────────────────────────────────────────────────────────────────┘ \\
+
+(function(a){var b="0.3.4",c="hasOwnProperty",d=/[\.\/]/,e="*",f=function(){},g=function(a,b){return a-b},h,i,j={n:{}},k=function(a,b){var c=j,d=i,e=Array.prototype.slice.call(arguments,2),f=k.listeners(a),l=0,m=!1,n,o=[],p={},q=[],r=h,s=[];h=a,i=0;for(var t=0,u=f.length;t<u;t++)"zIndex"in f[t]&&(o.push(f[t].zIndex),f[t].zIndex<0&&(p[f[t].zIndex]=f[t]));o.sort(g);while(o[l]<0){n=p[o[l++]],q.push(n.apply(b,e));if(i){i=d;return q}}for(t=0;t<u;t++){n=f[t];if("zIndex"in n)if(n.zIndex==o[l]){q.push(n.apply(b,e));if(i)break;do{l++,n=p[o[l]],n&&q.push(n.apply(b,e));if(i)break}while(n)}else p[n.zIndex]=n;else{q.push(n.apply(b,e));if(i)break}}i=d,h=r;return q.length?q:null};k.listeners=function(a){var b=a.split(d),c=j,f,g,h,i,k,l,m,n,o=[c],p=[];for(i=0,k=b.length;i<k;i++){n=[];for(l=0,m=o.length;l<m;l++){c=o[l].n,g=[c[b[i]],c[e]],h=2;while(h--)f=g[h],f&&(n.push(f),p=p.concat(f.f||[]))}o=n}return p},k.on=function(a,b){var c=a.split(d),e=j;for(var g=0,h=c.length;g<h;g++)e=e.n,!e[c[g]]&&(e[c[g]]={n:{}}),e=e[c[g]];e.f=e.f||[];for(g=0,h=e.f.length;g<h;g++)if(e.f[g]==b)return f;e.f.push(b);return function(a){+a==+a&&(b.zIndex=+a)}},k.stop=function(){i=1},k.nt=function(a){if(a)return(new RegExp("(?:\\.|\\/|^)"+a+"(?:\\.|\\/|$)")).test(h);return h},k.off=k.unbind=function(a,b){var f=a.split(d),g,h,i,k,l,m,n,o=[j];for(k=0,l=f.length;k<l;k++)for(m=0;m<o.length;m+=i.length-2){i=[m,1],g=o[m].n;if(f[k]!=e)g[f[k]]&&i.push(g[f[k]]);else for(h in g)g[c](h)&&i.push(g[h]);o.splice.apply(o,i)}for(k=0,l=o.length;k<l;k++){g=o[k];while(g.n){if(b){if(g.f){for(m=0,n=g.f.length;m<n;m++)if(g.f[m]==b){g.f.splice(m,1);break}!g.f.length&&delete g.f}for(h in g.n)if(g.n[c](h)&&g.n[h].f){var p=g.n[h].f;for(m=0,n=p.length;m<n;m++)if(p[m]==b){p.splice(m,1);break}!p.length&&delete g.n[h].f}}else{delete g.f;for(h in g.n)g.n[c](h)&&g.n[h].f&&delete g.n[h].f}g=g.n}}},k.once=function(a,b){var c=function(){var d=b.apply(this,arguments);k.unbind(a,c);return d};return k.on(a,c)},k.version=b,k.toString=function(){return"You are running Eve "+b},typeof module!="undefined"&&module.exports?module.exports=k:typeof define!="undefined"?define("eve",[],function(){return k}):a.eve=k})(this),function(){function cF(a){for(var b=0;b<cy.length;b++)cy[b].el.paper==a&&cy.splice(b--,1)}function cE(b,d,e,f,h,i){e=Q(e);var j,k,l,m=[],o,p,q,t=b.ms,u={},v={},w={};if(f)for(y=0,z=cy.length;y<z;y++){var x=cy[y];if(x.el.id==d.id&&x.anim==b){x.percent!=e?(cy.splice(y,1),l=1):k=x,d.attr(x.totalOrigin);break}}else f=+v;for(var y=0,z=b.percents.length;y<z;y++){if(b.percents[y]==e||b.percents[y]>f*b.top){e=b.percents[y],p=b.percents[y-1]||0,t=t/b.top*(e-p),o=b.percents[y+1],j=b.anim[e];break}f&&d.attr(b.anim[b.percents[y]])}if(!!j){if(!k){for(var A in j)if(j[g](A))if(U[g](A)||d.paper.customAttributes[g](A)){u[A]=d.attr(A),u[A]==null&&(u[A]=T[A]),v[A]=j[A];switch(U[A]){case C:w[A]=(v[A]-u[A])/t;break;case"colour":u[A]=a.getRGB(u[A]);var B=a.getRGB(v[A]);w[A]={r:(B.r-u[A].r)/t,g:(B.g-u[A].g)/t,b:(B.b-u[A].b)/t};break;case"path":var D=bR(u[A],v[A]),E=D[1];u[A]=D[0],w[A]=[];for(y=0,z=u[A].length;y<z;y++){w[A][y]=[0];for(var F=1,G=u[A][y].length;F<G;F++)w[A][y][F]=(E[y][F]-u[A][y][F])/t}break;case"transform":var H=d._,I=ca(H[A],v[A]);if(I){u[A]=I.from,v[A]=I.to,w[A]=[],w[A].real=!0;for(y=0,z=u[A].length;y<z;y++){w[A][y]=[u[A][y][0]];for(F=1,G=u[A][y].length;F<G;F++)w[A][y][F]=(v[A][y][F]-u[A][y][F])/t}}else{var J=d.matrix||new cb,K={_:{transform:H.transform},getBBox:function(){return d.getBBox(1)}};u[A]=[J.a,J.b,J.c,J.d,J.e,J.f],b$(K,v[A]),v[A]=K._.transform,w[A]=[(K.matrix.a-J.a)/t,(K.matrix.b-J.b)/t,(K.matrix.c-J.c)/t,(K.matrix.d-J.d)/t,(K.matrix.e-J.e)/t,(K.matrix.f-J.f)/t]}break;case"csv":var L=r(j[A])[s](c),M=r(u[A])[s](c);if(A=="clip-rect"){u[A]=M,w[A]=[],y=M.length;while(y--)w[A][y]=(L[y]-u[A][y])/t}v[A]=L;break;default:L=[][n](j[A]),M=[][n](u[A]),w[A]=[],y=d.paper.customAttributes[A].length;while(y--)w[A][y]=((L[y]||0)-(M[y]||0))/t}}var O=j.easing,P=a.easing_formulas[O];if(!P){P=r(O).match(N);if(P&&P.length==5){var R=P;P=function(a){return cC(a,+R[1],+R[2],+R[3],+R[4],t)}}else P=bf}q=j.start||b.start||+(new Date),x={anim:b,percent:e,timestamp:q,start:q+(b.del||0),status:0,initstatus:f||0,stop:!1,ms:t,easing:P,from:u,diff:w,to:v,el:d,callback:j.callback,prev:p,next:o,repeat:i||b.times,origin:d.attr(),totalOrigin:h},cy.push(x);if(f&&!k&&!l){x.stop=!0,x.start=new Date-t*f;if(cy.length==1)return cA()}l&&(x.start=new Date-x.ms*f),cy.length==1&&cz(cA)}else k.initstatus=f,k.start=new Date-k.ms*f;eve("raphael.anim.start."+d.id,d,b)}}function cD(a,b){var c=[],d={};this.ms=b,this.times=1;if(a){for(var e in a)a[g](e)&&(d[Q(e)]=a[e],c.push(Q(e)));c.sort(bd)}this.anim=d,this.top=c[c.length-1],this.percents=c}function cC(a,b,c,d,e,f){function o(a,b){var c,d,e,f,j,k;for(e=a,k=0;k<8;k++){f=m(e)-a;if(z(f)<b)return e;j=(3*i*e+2*h)*e+g;if(z(j)<1e-6)break;e=e-f/j}c=0,d=1,e=a;if(e<c)return c;if(e>d)return d;while(c<d){f=m(e);if(z(f-a)<b)return e;a>f?c=e:d=e,e=(d-c)/2+c}return e}function n(a,b){var c=o(a,b);return((l*c+k)*c+j)*c}function m(a){return((i*a+h)*a+g)*a}var g=3*b,h=3*(d-b)-g,i=1-g-h,j=3*c,k=3*(e-c)-j,l=1-j-k;return n(a,1/(200*f))}function cq(){return this.x+q+this.y+q+this.width+" × "+this.height}function cp(){return this.x+q+this.y}function cb(a,b,c,d,e,f){a!=null?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function bH(b,c,d){b=a._path2curve(b),c=a._path2curve(c);var e,f,g,h,i,j,k,l,m,n,o=d?0:[];for(var p=0,q=b.length;p<q;p++){var r=b[p];if(r[0]=="M")e=i=r[1],f=j=r[2];else{r[0]=="C"?(m=[e,f].concat(r.slice(1)),e=m[6],f=m[7]):(m=[e,f,e,f,i,j,i,j],e=i,f=j);for(var s=0,t=c.length;s<t;s++){var u=c[s];if(u[0]=="M")g=k=u[1],h=l=u[2];else{u[0]=="C"?(n=[g,h].concat(u.slice(1)),g=n[6],h=n[7]):(n=[g,h,g,h,k,l,k,l],g=k,h=l);var v=bG(m,n,d);if(d)o+=v;else{for(var w=0,x=v.length;w<x;w++)v[w].segment1=p,v[w].segment2=s,v[w].bez1=m,v[w].bez2=n;o=o.concat(v)}}}}}return o}function bG(b,c,d){var e=a.bezierBBox(b),f=a.bezierBBox(c);if(!a.isBBoxIntersect(e,f))return d?0:[];var g=bB.apply(0,b),h=bB.apply(0,c),i=~~(g/5),j=~~(h/5),k=[],l=[],m={},n=d?0:[];for(var o=0;o<i+1;o++){var p=a.findDotsAtSegment.apply(a,b.concat(o/i));k.push({x:p.x,y:p.y,t:o/i})}for(o=0;o<j+1;o++)p=a.findDotsAtSegment.apply(a,c.concat(o/j)),l.push({x:p.x,y:p.y,t:o/j});for(o=0;o<i;o++)for(var q=0;q<j;q++){var r=k[o],s=k[o+1],t=l[q],u=l[q+1],v=z(s.x-r.x)<.001?"y":"x",w=z(u.x-t.x)<.001?"y":"x",x=bD(r.x,r.y,s.x,s.y,t.x,t.y,u.x,u.y);if(x){if(m[x.x.toFixed(4)]==x.y.toFixed(4))continue;m[x.x.toFixed(4)]=x.y.toFixed(4);var y=r.t+z((x[v]-r[v])/(s[v]-r[v]))*(s.t-r.t),A=t.t+z((x[w]-t[w])/(u[w]-t[w]))*(u.t-t.t);y>=0&&y<=1&&A>=0&&A<=1&&(d?n++:n.push({x:x.x,y:x.y,t1:y,t2:A}))}}return n}function bF(a,b){return bG(a,b,1)}function bE(a,b){return bG(a,b)}function bD(a,b,c,d,e,f,g,h){if(!(x(a,c)<y(e,g)||y(a,c)>x(e,g)||x(b,d)<y(f,h)||y(b,d)>x(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(!k)return;var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(n<+y(a,c).toFixed(2)||n>+x(a,c).toFixed(2)||n<+y(e,g).toFixed(2)||n>+x(e,g).toFixed(2)||o<+y(b,d).toFixed(2)||o>+x(b,d).toFixed(2)||o<+y(f,h).toFixed(2)||o>+x(f,h).toFixed(2))return;return{x:l,y:m}}}function bC(a,b,c,d,e,f,g,h,i){if(!(i<0||bB(a,b,c,d,e,f,g,h)<i)){var j=1,k=j/2,l=j-k,m,n=.01;m=bB(a,b,c,d,e,f,g,h,l);while(z(m-i)>n)k/=2,l+=(m<i?1:-1)*k,m=bB(a,b,c,d,e,f,g,h,l);return l}}function bB(a,b,c,d,e,f,g,h,i){i==null&&(i=1),i=i>1?1:i<0?0:i;var j=i/2,k=12,l=[-0.1252,.1252,-0.3678,.3678,-0.5873,.5873,-0.7699,.7699,-0.9041,.9041,-0.9816,.9816],m=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],n=0;for(var o=0;o<k;o++){var p=j*l[o]+j,q=bA(p,a,c,e,g),r=bA(p,b,d,f,h),s=q*q+r*r;n+=m[o]*w.sqrt(s)}return j*n}function bA(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function by(a,b){var c=[];for(var d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function bx(){return this.hex}function bv(a,b,c){function d(){var e=Array.prototype.slice.call(arguments,0),f=e.join("␀"),h=d.cache=d.cache||{},i=d.count=d.count||[];if(h[g](f)){bu(i,f);return c?c(h[f]):h[f]}i.length>=1e3&&delete h[i.shift()],i.push(f),h[f]=a[m](b,e);return c?c(h[f]):h[f]}return d}function bu(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function bm(a){if(Object(a)!==a)return a;var b=new a.constructor;for(var c in a)a[g](c)&&(b[c]=bm(a[c]));return b}function a(c){if(a.is(c,"function"))return b?c():eve.on("raphael.DOMload",c);if(a.is(c,E))return a._engine.create[m](a,c.splice(0,3+a.is(c[0],C))).add(c);var d=Array.prototype.slice.call(arguments,0);if(a.is(d[d.length-1],"function")){var e=d.pop();return b?e.call(a._engine.create[m](a,d)):eve.on("raphael.DOMload",function(){e.call(a._engine.create[m](a,d))})}return a._engine.create[m](a,arguments)}a.version="2.1.0",a.eve=eve;var b,c=/[, ]+/,d={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},e=/\{(\d+)\}/g,f="prototype",g="hasOwnProperty",h={doc:document,win:window},i={was:Object.prototype[g].call(h.win,"Raphael"),is:h.win.Raphael},j=function(){this.ca=this.customAttributes={}},k,l="appendChild",m="apply",n="concat",o="createTouch"in h.doc,p="",q=" ",r=String,s="split",t="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[s](q),u={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},v=r.prototype.toLowerCase,w=Math,x=w.max,y=w.min,z=w.abs,A=w.pow,B=w.PI,C="number",D="string",E="array",F="toString",G="fill",H=Object.prototype.toString,I={},J="push",K=a._ISURL=/^url\(['"]?([^\)]+?)['"]?\)$/i,L=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i,M={NaN:1,Infinity:1,"-Infinity":1},N=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,O=w.round,P="setAttribute",Q=parseFloat,R=parseInt,S=r.prototype.toUpperCase,T=a._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0},U=a._availableAnimAttrs={blur:C,"clip-rect":"csv",cx:C,cy:C,fill:"colour","fill-opacity":C,"font-size":C,height:C,opacity:C,path:"path",r:C,rx:C,ry:C,stroke:"colour","stroke-opacity":C,"stroke-width":C,transform:"transform",width:C,x:C,y:C},V=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]/g,W=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,X={hs:1,rg:1},Y=/,?([achlmqrstvxz]),?/gi,Z=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,$=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,_=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/ig,ba=a._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,bb={},bc=function(a,b){return a.key-b.key},bd=function(a,b){return Q(a)-Q(b)},be=function(){},bf=function(a){return a},bg=a._rectPath=function(a,b,c,d,e){if(e)return[["M",a+e,b],["l",c-e*2,0],["a",e,e,0,0,1,e,e],["l",0,d-e*2],["a",e,e,0,0,1,-e,e],["l",e*2-c,0],["a",e,e,0,0,1,-e,-e],["l",0,e*2-d],["a",e,e,0,0,1,e,-e],["z"]];return[["M",a,b],["l",c,0],["l",0,d],["l",-c,0],["z"]]},bh=function(a,b,c,d){d==null&&(d=c);return[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]]},bi=a._getPath={path:function(a){return a.attr("path")},circle:function(a){var b=a.attrs;return bh(b.cx,b.cy,b.r)},ellipse:function(a){var b=a.attrs;return bh(b.cx,b.cy,b.rx,b.ry)},rect:function(a){var b=a.attrs;return bg(b.x,b.y,b.width,b.height,b.r)},image:function(a){var b=a.attrs;return bg(b.x,b.y,b.width,b.height)},text:function(a){var b=a._getBBox();return bg(b.x,b.y,b.width,b.height)}},bj=a.mapPath=function(a,b){if(!b)return a;var c,d,e,f,g,h,i;a=bR(a);for(e=0,g=a.length;e<g;e++){i=a[e];for(f=1,h=i.length;f<h;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d}return a};a._g=h,a.type=h.win.SVGAngle||h.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML";if(a.type=="VML"){var bk=h.doc.createElement("div"),bl;bk.innerHTML='<v:shape adj="1"/>',bl=bk.firstChild,bl.style.behavior="url(#default#VML)";if(!bl||typeof bl.adj!="object")return a.type=p;bk=null}a.svg=!(a.vml=a.type=="VML"),a._Paper=j,a.fn=k=j.prototype=a.prototype,a._id=0,a._oid=0,a.is=function(a,b){b=v.call(b);if(b=="finite")return!M[g](+a);if(b=="array")return a instanceof Array;return b=="null"&&a===null||b==typeof a&&a!==null||b=="object"&&a===Object(a)||b=="array"&&Array.isArray&&Array.isArray(a)||H.call(a).slice(8,-1).toLowerCase()==b},a.angle=function(b,c,d,e,f,g){if(f==null){var h=b-d,i=c-e;if(!h&&!i)return 0;return(180+w.atan2(-i,-h)*180/B+360)%360}return a.angle(b,c,f,g)-a.angle(d,e,f,g)},a.rad=function(a){return a%360*B/180},a.deg=function(a){return a*180/B%360},a.snapTo=function(b,c,d){d=a.is(d,"finite")?d:10;if(a.is(b,E)){var e=b.length;while(e--)if(z(b[e]-c)<=d)return b[e]}else{b=+b;var f=c%b;if(f<d)return c-f;if(f>b-d)return c-f+b}return c};var bn=a.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=w.random()*16|0,c=a=="x"?b:b&3|8;return c.toString(16)});a.setWindow=function(b){eve("raphael.setWindow",a,h.win,b),h.win=b,h.doc=h.win.document,a._engine.initWin&&a._engine.initWin(h.win)};var bo=function(b){if(a.vml){var c=/^\s+|\s+$/g,d;try{var e=new ActiveXObject("htmlfile");e.write("<body>"),e.close(),d=e.body}catch(f){d=createPopup().document.body}var g=d.createTextRange();bo=bv(function(a){try{d.style.color=r(a).replace(c,p);var b=g.queryCommandValue("ForeColor");b=(b&255)<<16|b&65280|(b&16711680)>>>16;return"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=h.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",h.doc.body.appendChild(i),bo=bv(function(a){i.style.color=a;return h.doc.defaultView.getComputedStyle(i,p).getPropertyValue("color")})}return bo(b)},bp=function(){return"hsb("+[this.h,this.s,this.b]+")"},bq=function(){return"hsl("+[this.h,this.s,this.l]+")"},br=function(){return this.hex},bs=function(b,c,d){c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b&&(d=b.b,c=b.g,b=b.r);if(c==null&&a.is(b,D)){var e=a.getRGB(b);b=e.r,c=e.g,d=e.b}if(b>1||c>1||d>1)b/=255,c/=255,d/=255;return[b,c,d]},bt=function(b,c,d,e){b*=255,c*=255,d*=255;var f={r:b,g:c,b:d,hex:a.rgb(b,c,d),toString:br};a.is(e,"finite")&&(f.opacity=e);return f};a.color=function(b){var c;a.is(b,"object")&&"h"in b&&"s"in b&&"b"in b?(c=a.hsb2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):a.is(b,"object")&&"h"in b&&"s"in b&&"l"in b?(c=a.hsl2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):(a.is(b,"string")&&(b=a.getRGB(b)),a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b?(c=a.rgb2hsl(b),b.h=c.h,b.s=c.s,b.l=c.l,c=a.rgb2hsb(b),b.v=c.b):(b={hex:"none"},b.r=b.g=b.b=b.h=b.s=b.v=b.l=-1)),b.toString=br;return b},a.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,a=a.h,d=a.o),a*=360;var e,f,g,h,i;a=a%360/60,i=c*b,h=i*(1-z(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h);if(a>1||b>1||c>1)a/=360,b/=100,c/=100;a*=360;var e,f,g,h,i;a=a%360/60,i=2*b*(c<.5?c:1-c),h=i*(1-z(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.rgb2hsb=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;f=x(a,b,c),g=f-y(a,b,c),d=g==0?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=g==0?0:g/f;return{h:d,s:e,b:f,toString:bp}},a.rgb2hsl=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;g=x(a,b,c),h=y(a,b,c),i=g-h,d=i==0?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=i==0?0:f<.5?i/(2*f):i/(2-2*f);return{h:d,s:e,l:f,toString:bq}},a._path2string=function(){return this.join(",").replace(Y,"$1")};var bw=a._preload=function(a,b){var c=h.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,h.doc.body.removeChild(this)},c.onerror=function(){h.doc.body.removeChild(this)},h.doc.body.appendChild(c),c.src=a};a.getRGB=bv(function(b){if(!b||!!((b=r(b)).indexOf("-")+1))return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx};if(b=="none")return{r:-1,g:-1,b:-1,hex:"none",toString:bx};!X[g](b.toLowerCase().substring(0,2))&&b.charAt()!="#"&&(b=bo(b));var c,d,e,f,h,i,j,k=b.match(L);if(k){k[2]&&(f=R(k[2].substring(5),16),e=R(k[2].substring(3,5),16),d=R(k[2].substring(1,3),16)),k[3]&&(f=R((i=k[3].charAt(3))+i,16),e=R((i=k[3].charAt(2))+i,16),d=R((i=k[3].charAt(1))+i,16)),k[4]&&(j=k[4][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),k[1].toLowerCase().slice(0,4)=="rgba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100));if(k[5]){j=k[5][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsb2rgb(d,e,f,h)}if(k[6]){j=k[6][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsla"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsl2rgb(d,e,f,h)}k={r:d,g:e,b:f,toString:bx},k.hex="#"+(16777216|f|e<<8|d<<16).toString(16).slice(1),a.is(h,"finite")&&(k.opacity=h);return k}return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx}},a),a.hsb=bv(function(b,c,d){return a.hsb2rgb(b,c,d).hex}),a.hsl=bv(function(b,c,d){return a.hsl2rgb(b,c,d).hex}),a.rgb=bv(function(a,b,c){return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)}),a.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b}));return c.hex},a.getColor.reset=function(){delete this.start},a.parsePathString=function(b){if(!b)return null;var c=bz(b);if(c.arr)return bJ(c.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];a.is(b,E)&&a.is(b[0],E)&&(e=bJ(b)),e.length||r(b).replace(Z,function(a,b,c){var f=[],g=b.toLowerCase();c.replace(_,function(a,b){b&&f.push(+b)}),g=="m"&&f.length>2&&(e.push([b][n](f.splice(0,2))),g="l",b=b=="m"?"l":"L");if(g=="r")e.push([b][n](f));else while(f.length>=d[g]){e.push([b][n](f.splice(0,d[g])));if(!d[g])break}}),e.toString=a._path2string,c.arr=bJ(e);return e},a.parseTransformString=bv(function(b){if(!b)return null;var c={r:3,s:4,t:2,m:6},d=[];a.is(b,E)&&a.is(b[0],E)&&(d=bJ(b)),d.length||r(b).replace($,function(a,b,c){var e=[],f=v.call(b);c.replace(_,function(a,b){b&&e.push(+b)}),d.push([b][n](e))}),d.toString=a._path2string;return d});var bz=function(a){var b=bz.ps=bz.ps||{};b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[g](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])});return b[a]};a.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=A(j,3),l=A(j,2),m=i*i,n=m*i,o=k*a+l*3*i*c+j*3*i*i*e+n*g,p=k*b+l*3*i*d+j*3*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,x=j*e+i*g,y=j*f+i*h,z=90-w.atan2(q-s,r-t)*180/B;(q>s||r<t)&&(z+=180);return{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:x,y:y},alpha:z}},a.bezierBBox=function(b,c,d,e,f,g,h,i){a.is(b,"array")||(b=[b,c,d,e,f,g,h,i]);var j=bQ.apply(null,b);return{x:j.min.x,y:j.min.y,x2:j.max.x,y2:j.max.y,width:j.max.x-j.min.x,height:j.max.y-j.min.y}},a.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},a.isBBoxIntersect=function(b,c){var d=a.isPointInsideBBox;return d(c,b.x,b.y)||d(c,b.x2,b.y)||d(c,b.x,b.y2)||d(c,b.x2,b.y2)||d(b,c.x,c.y)||d(b,c.x2,c.y)||d(b,c.x,c.y2)||d(b,c.x2,c.y2)||(b.x<c.x2&&b.x>c.x||c.x<b.x2&&c.x>b.x)&&(b.y<c.y2&&b.y>c.y||c.y<b.y2&&c.y>b.y)},a.pathIntersection=function(a,b){return bH(a,b)},a.pathIntersectionNumber=function(a,b){return bH(a,b,1)},a.isPointInsidePath=function(b,c,d){var e=a.pathBBox(b);return a.isPointInsideBBox(e,c,d)&&bH(b,[["M",c,d],["H",e.x2+10]],1)%2==1},a._removedFactory=function(a){return function(){eve("raphael.log",null,"Raphaël: you are calling to method “"+a+"” of removed object",a)}};var bI=a.pathBBox=function(a){var b=bz(a);if(b.bbox)return b.bbox;if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=bR(a);var c=0,d=0,e=[],f=[],g;for(var h=0,i=a.length;h<i;h++){g=a[h];if(g[0]=="M")c=g[1],d=g[2],e.push(c),f.push(d);else{var j=bQ(c,d,g[1],g[2],g[3],g[4],g[5],g[6]);e=e[n](j.min.x,j.max.x),f=f[n](j.min.y,j.max.y),c=g[5],d=g[6]}}var k=y[m](0,e),l=y[m](0,f),o=x[m](0,e),p=x[m](0,f),q={x:k,y:l,x2:o,y2:p,width:o-k,height:p-l};b.bbox=bm(q);return q},bJ=function(b){var c=bm(b);c.toString=a._path2string;return c},bK=a._pathToRelative=function(b){var c=bz(b);if(c.rel)return bJ(c.rel);if(!a.is(b,E)||!a.is(b&&b[0],E))b=a.parsePathString(b);var d=[],e=0,f=0,g=0,h=0,i=0;b[0][0]=="M"&&(e=b[0][1],f=b[0][2],g=e,h=f,i++,d.push(["M",e,f]));for(var j=i,k=b.length;j<k;j++){var l=d[j]=[],m=b[j];if(m[0]!=v.call(m[0])){l[0]=v.call(m[0]);switch(l[0]){case"a":l[1]=m[1],l[2]=m[2],l[3]=m[3],l[4]=m[4],l[5]=m[5],l[6]=+(m[6]-e).toFixed(3),l[7]=+(m[7]-f).toFixed(3);break;case"v":l[1]=+(m[1]-f).toFixed(3);break;case"m":g=m[1],h=m[2];default:for(var n=1,o=m.length;n<o;n++)l[n]=+(m[n]-(n%2?e:f)).toFixed(3)}}else{l=d[j]=[],m[0]=="m"&&(g=m[1]+e,h=m[2]+f);for(var p=0,q=m.length;p<q;p++)d[j][p]=m[p]}var r=d[j].length;switch(d[j][0]){case"z":e=g,f=h;break;case"h":e+=+d[j][r-1];break;case"v":f+=+d[j][r-1];break;default:e+=+d[j][r-2],f+=+d[j][r-1]}}d.toString=a._path2string,c.rel=bJ(d);return d},bL=a._pathToAbsolute=function(b){var c=bz(b);if(c.abs)return bJ(c.abs);if(!a.is(b,E)||!a.is(b&&b[0],E))b=a.parsePathString(b);if(!b||!b.length)return[["M",0,0]];var d=[],e=0,f=0,g=0,h=0,i=0;b[0][0]=="M"&&(e=+b[0][1],f=+b[0][2],g=e,h=f,i++,d[0]=["M",e,f]);var j=b.length==3&&b[0][0]=="M"&&b[1][0].toUpperCase()=="R"&&b[2][0].toUpperCase()=="Z";for(var k,l,m=i,o=b.length;m<o;m++){d.push(k=[]),l=b[m];if(l[0]!=S.call(l[0])){k[0]=S.call(l[0]);switch(k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+e),k[7]=+(l[7]+f);break;case"V":k[1]=+l[1]+f;break;case"H":k[1]=+l[1]+e;break;case"R":var p=[e,f][n](l.slice(1));for(var q=2,r=p.length;q<r;q++)p[q]=+p[q]+e,p[++q]=+p[q]+f;d.pop(),d=d[n](by(p,j));break;case"M":g=+l[1]+e,h=+l[2]+f;default:for(q=1,r=l.length;q<r;q++)k[q]=+l[q]+(q%2?e:f)}}else if(l[0]=="R")p=[e,f][n](l.slice(1)),d.pop(),d=d[n](by(p,j)),k=["R"][n](l.slice(-2));else for(var s=0,t=l.length;s<t;s++)k[s]=l[s];switch(k[0]){case"Z":e=g,f=h;break;case"H":e=k[1];break;case"V":f=k[1];break;case"M":g=k[k.length-2],h=k[k.length-1];default:e=k[k.length-2],f=k[k.length-1]}}d.toString=a._path2string,c.abs=bJ(d);return d},bM=function(a,b,c,d){return[a,b,c,d,c,d]},bN=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},bO=function(a,b,c,d,e,f,g,h,i,j){var k=B*120/180,l=B/180*(+e||0),m=[],o,p=bv(function(a,b,c){var d=a*w.cos(c)-b*w.sin(c),e=a*w.sin(c)+b*w.cos(c);return{x:d,y:e}});if(!j){o=p(a,b,-l),a=o.x,b=o.y,o=p(h,i,-l),h=o.x,i=o.y;var q=w.cos(B/180*e),r=w.sin(B/180*e),t=(a-h)/2,u=(b-i)/2,v=t*t/(c*c)+u*u/(d*d);v>1&&(v=w.sqrt(v),c=v*c,d=v*d);var x=c*c,y=d*d,A=(f==g?-1:1)*w.sqrt(z((x*y-x*u*u-y*t*t)/(x*u*u+y*t*t))),C=A*c*u/d+(a+h)/2,D=A*-d*t/c+(b+i)/2,E=w.asin(((b-D)/d).toFixed(9)),F=w.asin(((i-D)/d).toFixed(9));E=a<C?B-E:E,F=h<C?B-F:F,E<0&&(E=B*2+E),F<0&&(F=B*2+F),g&&E>F&&(E=E-B*2),!g&&F>E&&(F=F-B*2)}else E=j[0],F=j[1],C=j[2],D=j[3];var G=F-E;if(z(G)>k){var H=F,I=h,J=i;F=E+k*(g&&F>E?1:-1),h=C+c*w.cos(F),i=D+d*w.sin(F),m=bO(h,i,c,d,e,0,g,I,J,[F,H,C,D])}G=F-E;var K=w.cos(E),L=w.sin(E),M=w.cos(F),N=w.sin(F),O=w.tan(G/4),P=4/3*c*O,Q=4/3*d*O,R=[a,b],S=[a+P*L,b-Q*K],T=[h+P*N,i-Q*M],U=[h,i];S[0]=2*R[0]-S[0],S[1]=2*R[1]-S[1];if(j)return[S,T,U][n](m);m=[S,T,U][n](m).join()[s](",");var V=[];for(var W=0,X=m.length;W<X;W++)V[W]=W%2?p(m[W-1],m[W],l).y:p(m[W],m[W+1],l).x;return V},bP=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:A(j,3)*a+A(j,2)*3*i*c+j*3*i*i*e+A(i,3)*g,y:A(j,3)*b+A(j,2)*3*i*d+j*3*i*i*f+A(i,3)*h}},bQ=bv(function(a,b,c,d,e,f,g,h){var i=e-2*c+a-(g-2*e+c),j=2*(c-a)-2*(e-c),k=a-c,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,o=[b,h],p=[a,g],q;z(l)>"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y)),i=f-2*d+b-(h-2*f+d),j=2*(d-b)-2*(f-d),k=b-d,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,z(l)>"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y));return{min:{x:y[m](0,p),y:y[m](0,o)},max:{x:x[m](0,p),y:x[m](0,o)}}}),bR=a._path2curve=bv(function(a,b){var c=!b&&bz(a);if(!b&&c.curve)return bJ(c.curve);var d=bL(a),e=b&&bL(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=function(a,b){var c,d;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null);switch(a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][n](bO[m](0,[b.x,b.y][n](a.slice(1))));break;case"S":c=b.x+(b.x-(b.bx||b.x)),d=b.y+(b.y-(b.by||b.y)),a=["C",c,d][n](a.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x)),b.qy=b.y+(b.y-(b.qy||b.y)),a=["C"][n](bN(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][n](bN(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][n](bM(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][n](bM(b.x,b.y,a[1],b.y));break;case"V":a=["C"][n](bM(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][n](bM(b.x,b.y,b.X,b.Y))}return a},i=function(a,b){if(a[b].length>7){a[b].shift();var c=a[b];while(c.length)a.splice(b++,0,["C"][n](c.splice(0,6)));a.splice(b,1),l=x(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&a[g][0]=="M"&&b[g][0]!="M"&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],l=x(d.length,e&&e.length||0))};for(var k=0,l=x(d.length,e&&e.length||0);k<l;k++){d[k]=h(d[k],f),i(d,k),e&&(e[k]=h(e[k],g)),e&&i(e,k),j(d,e,f,g,k),j(e,d,g,f,k);var o=d[k],p=e&&e[k],q=o.length,r=e&&p.length;f.x=o[q-2],f.y=o[q-1],f.bx=Q(o[q-4])||f.x,f.by=Q(o[q-3])||f.y,g.bx=e&&(Q(p[r-4])||g.x),g.by=e&&(Q(p[r-3])||g.y),g.x=e&&p[r-2],g.y=e&&p[r-1]}e||(c.curve=bJ(d));return e?[d,e]:d},null,bJ),bS=a._parseDots=bv(function(b){var c=[];for(var d=0,e=b.length;d<e;d++){var f={},g=b[d].match(/^([^:]*):?([\d\.]*)/);f.color=a.getRGB(g[1]);if(f.color.error)return null;f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),c.push(f)}for(d=1,e=c.length-1;d<e;d++)if(!c[d].offset){var h=Q(c[d-1].offset||0),i=0;for(var j=d+1;j<e;j++)if(c[j].offset){i=c[j].offset;break}i||(i=100,j=e),i=Q(i);var k=(i-h)/(j-d+1);for(;d<j;d++)h+=k,c[d].offset=h+"%"}return c}),bT=a._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)},bU=a._tofront=function(a,b){b.top!==a&&(bT(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},bV=a._toback=function(a,b){b.bottom!==a&&(bT(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},bW=a._insertafter=function(a,b,c){bT(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},bX=a._insertbefore=function(a,b,c){bT(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},bY=a.toMatrix=function(a,b){var c=bI(a),d={_:{transform:p},getBBox:function(){return c}};b$(d,b);return d.matrix},bZ=a.transformPath=function(a,b){return bj(a,bY(a,b))},b$=a._extractTransform=function(b,c){if(c==null)return b._.transform;c=r(c).replace(/\.{3}|\u2026/g,b._.transform||p);var d=a.parseTransformString(c),e=0,f=0,g=0,h=1,i=1,j=b._,k=new cb;j.transform=d||[];if(d)for(var l=0,m=d.length;l<m;l++){var n=d[l],o=n.length,q=r(n[0]).toLowerCase(),s=n[0]!=q,t=s?k.invert():0,u,v,w,x,y;q=="t"&&o==3?s?(u=t.x(0,0),v=t.y(0,0),w=t.x(n[1],n[2]),x=t.y(n[1],n[2]),k.translate(w-u,x-v)):k.translate(n[1],n[2]):q=="r"?o==2?(y=y||b.getBBox(1),k.rotate(n[1],y.x+y.width/2,y.y+y.height/2),e+=n[1]):o==4&&(s?(w=t.x(n[2],n[3]),x=t.y(n[2],n[3]),k.rotate(n[1],w,x)):k.rotate(n[1],n[2],n[3]),e+=n[1]):q=="s"?o==2||o==3?(y=y||b.getBBox(1),k.scale(n[1],n[o-1],y.x+y.width/2,y.y+y.height/2),h*=n[1],i*=n[o-1]):o==5&&(s?(w=t.x(n[3],n[4]),x=t.y(n[3],n[4]),k.scale(n[1],n[2],w,x)):k.scale(n[1],n[2],n[3],n[4]),h*=n[1],i*=n[2]):q=="m"&&o==7&&k.add(n[1],n[2],n[3],n[4],n[5],n[6]),j.dirtyT=1,b.matrix=k}b.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,h==1&&i==1&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1},b_=function(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return a.length==4?[b,0,a[2],a[3]]:[b,0];case"s":return a.length==5?[b,1,1,a[3],a[4]]:a.length==3?[b,1,1]:[b,1]}},ca=a._equaliseTransform=function(b,c){c=r(c).replace(/\.{3}|\u2026/g,b),b=a.parseTransformString(b)||[],c=a.parseTransformString(c)||[];var d=x(b.length,c.length),e=[],f=[],g=0,h,i,j,k;for(;g<d;g++){j=b[g]||b_(c[g]),k=c[g]||b_(j);if(j[0]!=k[0]||j[0].toLowerCase()=="r"&&(j[2]!=k[2]||j[3]!=k[3])||j[0].toLowerCase()=="s"&&(j[3]!=k[3]||j[4]!=k[4]))return;e[g]=[],f[g]=[];for(h=0,i=x(j.length,k.length);h<i;h++)h in j&&(e[g][h]=j[h]),h in k&&(f[g][h]=k[h])}return{from:e,to:f}};a._getContainer=function(b,c,d,e){var f;f=e==null&&!a.is(b,"object")?h.doc.getElementById(b):b;if(f!=null){if(f.tagName)return c==null?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:c,height:d};return{container:1,x:b,y:c,width:d,height:e}}},a.pathToRelative=bK,a._engine={},a.path2curve=bR,a.matrix=function(a,b,c,d,e,f){return new cb(a,b,c,d,e,f)},function(b){function d(a){var b=w.sqrt(c(a));a[0]&&(a[0]/=b),a[1]&&(a[1]/=b)}function c(a){return a[0]*a[0]+a[1]*a[1]}b.add=function(a,b,c,d,e,f){var g=[[],[],[]],h=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],i=[[a,c,e],[b,d,f],[0,0,1]],j,k,l,m;a&&a instanceof cb&&(i=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]);for(j=0;j<3;j++)for(k=0;k<3;k++){m=0;for(l=0;l<3;l++)m+=h[j][l]*i[l][k];g[j][k]=m}this.a=g[0][0],this.b=g[1][0],this.c=g[0][1],this.d=g[1][1],this.e=g[0][2],this.f=g[1][2]},b.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new cb(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},b.clone=function(){return new cb(this.a,this.b,this.c,this.d,this.e,this.f)},b.translate=function(a,b){this.add(1,0,0,1,a,b)},b.scale=function(a,b,c,d){b==null&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},b.rotate=function(b,c,d){b=a.rad(b),c=c||0,d=d||0;var e=+w.cos(b).toFixed(9),f=+w.sin(b).toFixed(9);this.add(e,f,-f,e,c,d),this.add(1,0,0,1,-c,-d)},b.x=function(a,b){return a*this.a+b*this.c+this.e},b.y=function(a,b){return a*this.b+b*this.d+this.f},b.get=function(a){return+this[r.fromCharCode(97+a)].toFixed(4)},b.toString=function(){return a.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},b.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},b.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},b.split=function(){var b={};b.dx=this.e,b.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];b.scalex=w.sqrt(c(e[0])),d(e[0]),b.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*b.shear,e[1][1]-e[0][1]*b.shear],b.scaley=w.sqrt(c(e[1])),d(e[1]),b.shear/=b.scaley;var f=-e[0][1],g=e[1][1];g<0?(b.rotate=a.deg(w.acos(g)),f<0&&(b.rotate=360-b.rotate)):b.rotate=a.deg(w.asin(f)),b.isSimple=!+b.shear.toFixed(9)&&(b.scalex.toFixed(9)==b.scaley.toFixed(9)||!b.rotate),b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate,b.noRotation=!+b.shear.toFixed(9)&&!b.rotate;return b},b.toTransformString=function(a){var b=a||this[s]();if(b.isSimple){b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4);return(b.dx||b.dy?"t"+[b.dx,b.dy]:p)+(b.scalex!=1||b.scaley!=1?"s"+[b.scalex,b.scaley,0,0]:p)+(b.rotate?"r"+[b.rotate,0,0]:p)}return"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(cb.prototype);var cc=navigator.userAgent.match(/Version\/(.*?)\s/)||navigator.userAgent.match(/Chrome\/(\d+)/);navigator.vendor=="Apple Computer, Inc."&&(cc&&cc[1]<4||navigator.platform.slice(0,2)=="iP")||navigator.vendor=="Google Inc."&&cc&&cc[1]<8?k.safari=function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});setTimeout(function(){a.remove()})}:k.safari=be;var cd=function(){this.returnValue=!1},ce=function(){return this.originalEvent.preventDefault()},cf=function(){this.cancelBubble=!0},cg=function(){return this.originalEvent.stopPropagation()},ch=function(){if(h.doc.addEventListener)return function(a,b,c,d){var e=o&&u[b]?u[b]:b,f=function(e){var f=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,i=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,j=e.clientX+i,k=e.clientY+f;if(o&&u[g](b))for(var l=0,m=e.targetTouches&&e.targetTouches.length;l<m;l++)if(e.targetTouches[l].target==a){var n=e;e=e.targetTouches[l],e.originalEvent=n,e.preventDefault=ce,e.stopPropagation=cg;break}return c.call(d,e,j,k)};a.addEventListener(e,f,!1);return function(){a.removeEventListener(e,f,!1);return!0}};if(h.doc.attachEvent)return function(a,b,c,d){var e=function(a){a=a||h.win.event;var b=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,e=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;a.preventDefault=a.preventDefault||cd,a.stopPropagation=a.stopPropagation||cf;return c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){a.detachEvent("on"+b,e);return!0};return f}}(),ci=[],cj=function(a){var b=a.clientX,c=a.clientY,d=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,e=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,f,g=ci.length;while(g--){f=ci[g];if(o){var i=a.touches.length,j;while(i--){j=a.touches[i];if(j.identifier==f.el._drag.id){b=j.clientX,c=j.clientY,(a.originalEvent?a.originalEvent:a).preventDefault();break}}}else a.preventDefault();var k=f.el.node,l,m=k.nextSibling,n=k.parentNode,p=k.style.display;h.win.opera&&n.removeChild(k),k.style.display="none",l=f.el.paper.getElementByPoint(b,c),k.style.display=p,h.win.opera&&(m?n.insertBefore(k,m):n.appendChild(k)),l&&eve("raphael.drag.over."+f.el.id,f.el,l),b+=e,c+=d,eve("raphael.drag.move."+f.el.id,f.move_scope||f.el,b-f.el._drag.x,c-f.el._drag.y,b,c,a)}},ck=function(b){a.unmousemove(cj).unmouseup(ck);var c=ci.length,d;while(c--)d=ci[c],d.el._drag={},eve("raphael.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,b);ci=[]},cl=a.el={};for(var cm=t.length;cm--;)(function(b){a[b]=cl[b]=function(c,d){a.is(c,"function")&&(this.events=this.events||[],this.events.push({name:b,f:c,unbind:ch(this.shape||this.node||h.doc,b,c,d||this)}));return this},a["un"+b]=cl["un"+b]=function(a){var c=this.events||[],d=c.length;while(d--)if(c[d].name==b&&c[d].f==a){c[d].unbind(),c.splice(d,1),!c.length&&delete this.events;return this}return this}})(t[cm]);cl.data=function(b,c){var d=bb[this.id]=bb[this.id]||{};if(arguments.length==1){if(a.is(b,"object")){for(var e in b)b[g](e)&&this.data(e,b[e]);return this}eve("raphael.data.get."+this.id,this,d[b],b);return d[b]}d[b]=c,eve("raphael.data.set."+this.id,this,c,b);return this},cl.removeData=function(a){a==null?bb[this.id]={}:bb[this.id]&&delete bb[this.id][a];return this},cl.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},cl.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var cn=[];cl.drag=function(b,c,d,e,f,g){function i(i){(i.originalEvent||i).preventDefault();var j=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,k=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft;this._drag.x=i.clientX+k,this._drag.y=i.clientY+j,this._drag.id=i.identifier,!ci.length&&a.mousemove(cj).mouseup(ck),ci.push({el:this,move_scope:e,start_scope:f,end_scope:g}),c&&eve.on("raphael.drag.start."+this.id,c),b&&eve.on("raphael.drag.move."+this.id,b),d&&eve.on("raphael.drag.end."+this.id,d),eve("raphael.drag.start."+this.id,f||e||this,i.clientX+k,i.clientY+j,i)}this._drag={},cn.push({el:this,start:i}),this.mousedown(i);return this},cl.onDragOver=function(a){a?eve.on("raphael.drag.over."+this.id,a):eve.unbind("raphael.drag.over."+this.id)},cl.undrag=function(){var b=cn.length;while(b--)cn[b].el==this&&(this.unmousedown(cn[b].start),cn.splice(b,1),eve.unbind("raphael.drag.*."+this.id));!cn.length&&a.unmousemove(cj).unmouseup(ck)},k.circle=function(b,c,d){var e=a._engine.circle(this,b||0,c||0,d||0);this.__set__&&this.__set__.push(e);return e},k.rect=function(b,c,d,e,f){var g=a._engine.rect(this,b||0,c||0,d||0,e||0,f||0);this.__set__&&this.__set__.push(g);return g},k.ellipse=function(b,c,d,e){var f=a._engine.ellipse(this,b||0,c||0,d||0,e||0);this.__set__&&this.__set__.push(f);return f},k.path=function(b){b&&!a.is(b,D)&&!a.is(b[0],E)&&(b+=p);var c=a._engine.path(a.format[m](a,arguments),this);this.__set__&&this.__set__.push(c);return c},k.image=function(b,c,d,e,f){var g=a._engine.image(this,b||"about:blank",c||0,d||0,e||0,f||0);this.__set__&&this.__set__.push(g);return g},k.text=function(b,c,d){var e=a._engine.text(this,b||0,c||0,r(d));this.__set__&&this.__set__.push(e);return e},k.set=function(b){!a.is(b,"array")&&(b=Array.prototype.splice.call(arguments,0,arguments.length));var c=new cG(b);this.__set__&&this.__set__.push(c);return c},k.setStart=function(a){this.__set__=a||this.set()},k.setFinish=function(a){var b=this.__set__;delete this.__set__;return b},k.setSize=function(b,c){return a._engine.setSize.call(this,b,c)},k.setViewBox=function(b,c,d,e,f){return a._engine.setViewBox.call(this,b,c,d,e,f)},k.top=k.bottom=null,k.raphael=a;var co=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,i=b.top+(h.win.pageYOffset||e.scrollTop||d.scrollTop)-f,j=b.left+(h.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:i,x:j}};k.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=h.doc.elementFromPoint(a,b);if(h.win.opera&&e.tagName=="svg"){var f=co(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var i=d.getIntersectionList(g,null);i.length&&(e=i[i.length-1])}if(!e)return null;while(e.parentNode&&e!=d.parentNode&&!e.raphael)e=e.parentNode;e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null;return e},k.getById=function(a){var b=this.bottom;while(b){if(b.id==a)return b;b=b.next}return null},k.forEach=function(a,b){var c=this.bottom;while(c){if(a.call(b,c)===!1)return this;c=c.next}return this},k.getElementsByPoint=function(a,b){var c=this.set();this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)});return c},cl.isPointInside=function(b,c){var d=this.realPath=this.realPath||bi[this.type](this);return a.isPointInsidePath(d,b,c)},cl.getBBox=function(a){if(this.removed)return{};var b=this._;if(a){if(b.dirty||!b.bboxwt)this.realPath=bi[this.type](this),b.bboxwt=bI(this.realPath),b.bboxwt.toString=cq,b.dirty=0;return b.bboxwt}if(b.dirty||b.dirtyT||!b.bbox){if(b.dirty||!this.realPath)b.bboxwt=0,this.realPath=bi[this.type](this);b.bbox=bI(bj(this.realPath,this.matrix)),b.bbox.toString=cq,b.dirty=b.dirtyT=0}return b.bbox},cl.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());this.__set__&&this.__set__.push(a);return a},cl.glow=function(a){if(this.type=="text")return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:a.opacity||.5,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||bi[this.type](this);f=this.matrix?bj(f,this.matrix):f;for(var g=1;g<c+1;g++)e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var cr={},cs=function(b,c,d,e,f,g,h,i,j){return j==null?bB(b,c,d,e,f,g,h,i):a.findDotsAtSegment(b,c,d,e,f,g,h,i,bC(b,c,d,e,f,g,h,i,j))},ct=function(b,c){return function(d,e,f){d=bR(d);var g,h,i,j,k="",l={},m,n=0;for(var o=0,p=d.length;o<p;o++){i=d[o];if(i[0]=="M")g=+i[1],h=+i[2];else{j=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6]);if(n+j>e){if(c&&!l.start){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),k+=["C"+m.start.x,m.start.y,m.m.x,m.m.y,m.x,m.y];if(f)return k;l.start=k,k=["M"+m.x,m.y+"C"+m.n.x,m.n.y,m.end.x,m.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!b&&!c){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);return{x:m.x,y:m.y,alpha:m.alpha}}}n+=j,g=+i[5],h=+i[6]}k+=i.shift()+i}l.end=k,m=b?n:c?l:a.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),m.alpha&&(m={x:m.x,y:m.y,alpha:m.alpha});return m}},cu=ct(1),cv=ct(),cw=ct(0,1);a.getTotalLength=cu,a.getPointAtLength=cv,a.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return cw(a,b).end;var d=cw(a,c,1);return b?cw(d,b).end:d},cl.getTotalLength=function(){if(this.type=="path"){if(this.node.getTotalLength)return this.node.getTotalLength();return cu(this.attrs.path)}},cl.getPointAtLength=function(a){if(this.type=="path")return cv(this.attrs.path,a)},cl.getSubpath=function(b,c){if(this.type=="path")return a.getSubpath(this.attrs.path,b,c)};var cx=a.easing_formulas={linear:function(a){return a},"<":function(a){return A(a,1.7)},">":function(a){return A(a,.48)},"<>":function(a){var b=.48-a/1.04,c=w.sqrt(.1734+b*b),d=c-b,e=A(z(d),1/3)*(d<0?-1:1),f=-c-b,g=A(z(f),1/3)*(f<0?-1:1),h=e+g+.5;return(1-h)*3*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a=a-1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){if(a==!!a)return a;return A(2,-10*a)*w.sin((a-.075)*2*B/.3)+1},bounce:function(a){var b=7.5625,c=2.75,d;a<1/c?d=b*a*a:a<2/c?(a-=1.5/c,d=b*a*a+.75):a<2.5/c?(a-=2.25/c,d=b*a*a+.9375):(a-=2.625/c,d=b*a*a+.984375);return d}};cx.easeIn=cx["ease-in"]=cx["<"],cx.easeOut=cx["ease-out"]=cx[">"],cx.easeInOut=cx["ease-in-out"]=cx["<>"],cx["back-in"]=cx.backIn,cx["back-out"]=cx.backOut;var cy=[],cz=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},cA=function(){var b=+(new Date),c=0;for(;c<cy.length;c++){var d=cy[c];if(d.el.removed||d.paused)continue;var e=b-d.start,f=d.ms,h=d.easing,i=d.from,j=d.diff,k=d.to,l=d.t,m=d.el,o={},p,r={},s;d.initstatus?(e=(d.initstatus*d.anim.top-d.prev)/(d.percent-d.prev)*f,d.status=d.initstatus,delete d.initstatus,d.stop&&cy.splice(c--,1)):d.status=(d.prev+(d.percent-d.prev)*(e/f))/d.anim.top;if(e<0)continue;if(e<f){var t=h(e/f);for(var u in i)if(i[g](u)){switch(U[u]){case C:p=+i[u]+t*f*j[u];break;case"colour":p="rgb("+[cB(O(i[u].r+t*f*j[u].r)),cB(O(i[u].g+t*f*j[u].g)),cB(O(i[u].b+t*f*j[u].b))].join(",")+")";break;case"path":p=[];for(var v=0,w=i[u].length;v<w;v++){p[v]=[i[u][v][0]];for(var x=1,y=i[u][v].length;x<y;x++)p[v][x]=+i[u][v][x]+t*f*j[u][v][x];p[v]=p[v].join(q)}p=p.join(q);break;case"transform":if(j[u].real){p=[];for(v=0,w=i[u].length;v<w;v++){p[v]=[i[u][v][0]];for(x=1,y=i[u][v].length;x<y;x++)p[v][x]=i[u][v][x]+t*f*j[u][v][x]}}else{var z=function(a){return+i[u][a]+t*f*j[u][a]};p=[["m",z(0),z(1),z(2),z(3),z(4),z(5)]]}break;case"csv":if(u=="clip-rect"){p=[],v=4;while(v--)p[v]=+i[u][v]+t*f*j[u][v]}break;default:var A=[][n](i[u]);p=[],v=m.paper.customAttributes[u].length;while(v--)p[v]=+A[v]+t*f*j[u][v]}o[u]=p}m.attr(o),function(a,b,c){setTimeout(function(){eve("raphael.anim.frame."+a,b,c)})}(m.id,m,d.anim)}else{(function(b,c,d){setTimeout(function(){eve("raphael.anim.frame."+c.id,c,d),eve("raphael.anim.finish."+c.id,c,d),a.is(b,"function")&&b.call(c)})})(d.callback,m,d.anim),m.attr(k),cy.splice(c--,1);if(d.repeat>1&&!d.next){for(s in k)k[g](s)&&(r[s]=d.totalOrigin[s]);d.el.attr(r),cE(d.anim,d.el,d.anim.percents[0],null,d.totalOrigin,d.repeat-1)}d.next&&!d.stop&&cE(d.anim,d.el,d.next,null,d.totalOrigin,d.repeat)}}a.svg&&m&&m.paper&&m.paper.safari(),cy.length&&cz(cA)},cB=function(a){return a>255?255:a<0?0:a};cl.animateWith=function(b,c,d,e,f,g){var h=this;if(h.removed){g&&g.call(h);return h}var i=d instanceof cD?d:a.animation(d,e,f,g),j,k;cE(i,h,i.percents[0],null,h.attr());for(var l=0,m=cy.length;l<m;l++)if(cy[l].anim==c&&cy[l].el==b){cy[m-1].start=cy[l].start;break}return h},cl.onAnimation=function(a){a?eve.on("raphael.anim.frame."+this.id,a):eve.unbind("raphael.anim.frame."+this.id);return this},cD.prototype.delay=function(a){var b=new cD(this.anim,this.ms);b.times=this.times,b.del=+a||0;return b},cD.prototype.repeat=function(a){var b=new cD(this.anim,this.ms);b.del=this.del,b.times=w.floor(x(a,0))||1;return b},a.animation=function(b,c,d,e){if(b instanceof cD)return b;if(a.is(d,"function")||!d)e=e||d||null,d=null;b=Object(b),c=+c||0;var f={},h,i;for(i in b)b[g](i)&&Q(i)!=i&&Q(i)+"%"!=i&&(h=!0,f[i]=b[i]);if(!h)return new cD(b,c);d&&(f.easing=d),e&&(f.callback=e);return new cD({100:f},c)},cl.animate=function(b,c,d,e){var f=this;if(f.removed){e&&e.call(f);return f}var g=b instanceof cD?b:a.animation(b,c,d,e);cE(g,f,g.percents[0],null,f.attr());return f},cl.setTime=function(a,b){a&&b!=null&&this.status(a,y(b,a.ms)/a.ms);return this},cl.status=function(a,b){var c=[],d=0,e,f;if(b!=null){cE(a,this,-1,y(b,1));return this}e=cy.length;for(;d<e;d++){f=cy[d];if(f.el.id==this.id&&(!a||f.anim==a)){if(a)return f.status;c.push({anim:f.anim,status:f.status})}}if(a)return 0;return c},cl.pause=function(a){for(var b=0;b<cy.length;b++)cy[b].el.id==this.id&&(!a||cy[b].anim==a)&&eve("raphael.anim.pause."+this.id,this,cy[b].anim)!==!1&&(cy[b].paused=!0);return this},cl.resume=function(a){for(var b=0;b<cy.length;b++)if(cy[b].el.id==this.id&&(!a||cy[b].anim==a)){var c=cy[b];eve("raphael.anim.resume."+this.id,this,c.anim)!==!1&&(delete c.paused,this.status(c.anim,c.status))}return this},cl.stop=function(a){for(var b=0;b<cy.length;b++)cy[b].el.id==this.id&&(!a||cy[b].anim==a)&&eve("raphael.anim.stop."+this.id,this,cy[b].anim)!==!1&&cy.splice(b--,1);return this},eve.on("raphael.remove",cF),eve.on("raphael.clear",cF),cl.toString=function(){return"Raphaël’s object"};var cG=function(a){this.items=[],this.length=0,this.type="set";if(a)for(var b=0,c=a.length;b<c;b++)a[b]&&(a[b].constructor==cl.constructor||a[b].constructor==cG)&&(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},cH=cG.prototype;cH.push=function(){var a,b;for(var c=0,d=arguments.length;c<d;c++)a=arguments[c],a&&(a.constructor==cl.constructor||a.constructor==cG)&&(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},cH.pop=function(){this.length&&delete this[this.length--];return this.items.pop()},cH.forEach=function(a,b){for(var c=0,d=this.items.length;c<d;c++)if(a.call(b,this.items[c],c)===!1)return this;return this};for(var cI in cl)cl[g](cI)&&(cH[cI]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][m](c,b)})}}(cI));cH.attr=function(b,c){if(b&&a.is(b,E)&&a.is(b[0],"object"))for(var d=0,e=b.length;d<e;d++)this.items[d].attr(b[d]);else for(var f=0,g=this.items.length;f<g;f++)this.items[f].attr(b,c);return this},cH.clear=function(){while(this.length)this.pop()},cH.splice=function(a,b,c){a=a<0?x(this.length+a,0):a,b=x(0,y(this.length-a,b));var d=[],e=[],f=[],g;for(g=2;g<arguments.length;g++)f.push(arguments[g]);for(g=0;g<b;g++)e.push(this[a+g]);for(;g<this.length-a;g++)d.push(this[a+g]);var h=f.length;for(g=0;g<h+d.length;g++)this.items[a+g]=this[a+g]=g<h?f[g]:d[g-h];g=this.items.length=this.length-=b-h;while(this[g])delete this[g++];return new cG(e)},cH.exclude=function(a){for(var b=0,c=this.length;b<c;b++)if(this[b]==a){this.splice(b,1);return!0}},cH.animate=function(b,c,d,e){(a.is(d,"function")||!d)&&(e=d||null);var f=this.items.length,g=f,h,i=this,j;if(!f)return this;e&&(j=function(){!--f&&e.call(i)}),d=a.is(d,D)?d:j;var k=a.animation(b,c,d,j);h=this.items[--g].animate(k);while(g--)this.items[g]&&!this.items[g].removed&&this.items[g].animateWith(h,k,k);return this},cH.insertAfter=function(a){var b=this.items.length;while(b--)this.items[b].insertAfter(a);return this},cH.getBBox=function(){var a=[],b=[],c=[],d=[];for(var e=this.items.length;e--;)if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)}a=y[m](0,a),b=y[m](0,b),c=x[m](0,c),d=x[m](0,d);return{x:a,y:b,x2:c,y2:d,width:c-a,height:d-b}},cH.clone=function(a){a=new cG;for(var b=0,c=this.items.length;b<c;b++)a.push(this.items[b].clone());return a},cH.toString=function(){return"Raphaël‘s set"},a.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face)a.face[g](d)&&(b.face[d]=a.face[d]);this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b];if(!a.svg){b.face["units-per-em"]=R(a.face["units-per-em"],10);for(var e in a.glyphs)if(a.glyphs[g](e)){var f=a.glyphs[e];b.glyphs[e]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"};if(f.k)for(var h in f.k)f[g](h)&&(b.glyphs[e].k[h]=f.k[h])}}return a},k.getFont=function(b,c,d,e){e=e||"normal",d=d||"normal",c=+c||{normal:400,bold:700,lighter:300,bolder:800}[c]||400;if(!!a.fonts){var f=a.fonts[b];if(!f){var h=new RegExp("(^|\\s)"+b.replace(/[^\w\d\s+!~.:_-]/g,p)+"(\\s|$)","i");for(var i in a.fonts)if(a.fonts[g](i)&&h.test(i)){f=a.fonts[i];break}}var j;if(f)for(var k=0,l=f.length;k<l;k++){j=f[k];if(j.face["font-weight"]==c&&(j.face["font-style"]==d||!j.face["font-style"])&&j.face["font-stretch"]==e)break}return j}},k.print=function(b,d,e,f,g,h,i){h=h||"middle",i=x(y(i||0,1),-1);var j=r(e)[s](p),k=0,l=0,m=p,n;a.is(f,e)&&(f=this.getFont(f));if(f){n=(g||16)/f.face["units-per-em"];var o=f.face.bbox[s](c),q=+o[0],t=o[3]-o[1],u=0,v=+o[1]+(h=="baseline"?t+ +f.face.descent:t/2);for(var w=0,z=j.length;w<z;w++){if(j[w]=="\n")k=0,B=0,l=0,u+=t;else{var A=l&&f.glyphs[j[w-1]]||{},B=f.glyphs[j[w]];k+=l?(A.w||f.w)+(A.k&&A.k[j[w]]||0)+f.w*i:0,l=1}B&&B.d&&(m+=a.transformPath(B.d,["t",k*n,u*n,"s",n,n,q,v,"t",(b-q)/n,(d-v)/n]))}}return this.path(m).attr({fill:"#000",stroke:"none"})},k.add=function(b){if(a.is(b,"array")){var c=this.set(),e=0,f=b.length,h;for(;e<f;e++)h=b[e]||{},d[g](h.type)&&c.push(this[h.type]().attr(h))}return c},a.format=function(b,c){var d=a.is(c,E)?[0][n](c):arguments;b&&a.is(b,D)&&d.length-1&&(b=b.replace(e,function(a,b){return d[++b]==null?p:d[b]}));return b||p},a.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),typeof e=="function"&&f&&(e=e()))}),e=(e==null||e==d?a:e)+"";return e};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}}(),a.ninja=function(){i.was?h.win.Raphael=i.is:delete Raphael;return a},a.st=cH,function(b,c,d){function e(){/in/.test(b.readyState)?setTimeout(e,9):a.eve("raphael.DOMload")}b.readyState==null&&b.addEventListener&&(b.addEventListener(c,d=function(){b.removeEventListener(c,d,!1),b.readyState="complete"},!1),b.readyState="loading"),e()}(document,"DOMContentLoaded"),i.was?h.win.Raphael=a:Raphael=a,eve.on("raphael.DOMload",function(){b=!0})}(),window.Raphael.svg&&function(a){var b="hasOwnProperty",c=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=a.eve,l="",m=" ",n="http://www.w3.org/1999/xlink",o={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},p={};a.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var q=function(d,e){if(e){typeof d=="string"&&(d=q(d));for(var f in e)e[b](f)&&(f.substring(0,6)=="xlink:"?d.setAttributeNS(n,f.substring(6),c(e[f])):d.setAttribute(f,c(e[f])))}else d=a._g.doc.createElementNS("http://www.w3.org/2000/svg",d),d.style&&(d.style.webkitTapHighlightColor="rgba(0,0,0,0)");return d},r=function(b,e){var j="linear",k=b.id+e,m=.5,n=.5,o=b.node,p=b.paper,r=o.style,s=a._g.doc.getElementById(k);if(!s){e=c(e).replace(a._radial_gradient,function(a,b,c){j="radial";if(b&&c){m=d(b),n=d(c);var e=(n>.5)*2-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&n!=.5&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/);if(j=="linear"){var t=e.shift();t=-d(t);if(isNaN(t))return null;var u=[0,0,f.cos(a.rad(t)),f.sin(a.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=a._parseDots(e);if(!w)return null;k=k.replace(/[\(\)\s,\xb0#]/g,"_"),b.gradient&&k!=b.gradient.id&&(p.defs.removeChild(b.gradient),delete b.gradient);if(!b.gradient){s=q(j+"Gradient",{id:k}),b.gradient=s,q(s,j=="radial"?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:b.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;x<y;x++)s.appendChild(q("stop",{offset:w[x].offset?w[x].offset:x?"100%":"0%","stop-color":w[x].color||"#fff"}))}}q(o,{fill:"url(#"+k+")",opacity:1,"fill-opacity":1}),r.fill=l,r.opacity=1,r.fillOpacity=1;return 1},s=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+b.y+")"})},t=function(d,e,f){if(d.type=="path"){var g=c(e).toLowerCase().split("-"),h=d.paper,i=f?"end":"start",j=d.node,k=d.attrs,m=k["stroke-width"],n=g.length,r="classic",s,t,u,v,w,x=3,y=3,z=5;while(n--)switch(g[n]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":r=g[n];break;case"wide":y=5;break;case"narrow":y=2;break;case"long":x=5;break;case"short":x=2}r=="open"?(x+=2,y+=2,z+=2,u=1,v=f?4:1,w={fill:"none",stroke:k.stroke}):(v=u=x/2,w={fill:k.stroke,stroke:"none"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={};if(r!="none"){var A="raphael-marker-"+r,B="raphael-marker-"+i+r+x+y;a._g.doc.getElementById(A)?p[A]++:(h.defs.appendChild(q(q("path"),{"stroke-linecap":"round",d:o[r],id:A})),p[A]=1);var C=a._g.doc.getElementById(B),D;C?(p[B]++,D=C.getElementsByTagName("use")[0]):(C=q(q("marker"),{id:B,markerHeight:y,markerWidth:x,orient:"auto",refX:v,refY:y/2}),D=q(q("use"),{"xlink:href":"#"+A,transform:(f?"rotate(180 "+x/2+" "+y/2+") ":l)+"scale("+x/z+","+y/z+")","stroke-width":(1/((x/z+y/z)/2)).toFixed(4)}),C.appendChild(D),h.defs.appendChild(C),p[B]=1),q(D,w);var F=u*(r!="diamond"&&r!="oval");f?(s=d._.arrows.startdx*m||0,t=a.getTotalLength(k.path)-F*m):(s=F*m,t=a.getTotalLength(k.path)-(d._.arrows.enddx*m||0)),w={},w["marker-"+i]="url(#"+B+")";if(t||s)w.d=Raphael.getSubpath(k.path,s,t);q(j,w),d._.arrows[i+"Path"]=A,d._.arrows[i+"Marker"]=B,d._.arrows[i+"dx"]=F,d._.arrows[i+"Type"]=r,d._.arrows[i+"String"]=e}else f?(s=d._.arrows.startdx*m||0,t=a.getTotalLength(k.path)-s):(s=0,t=a.getTotalLength(k.path)-(d._.arrows.enddx*m||0)),d._.arrows[i+"Path"]&&q(j,{d:Raphael.getSubpath(k.path,s,t)}),delete d._.arrows[i+"Path"],delete d._.arrows[i+"Marker"],delete d._.arrows[i+"dx"],delete d._.arrows[i+"Type"],delete d._.arrows[i+"String"];for(w in p)if(p[b](w)&&!p[w]){var G=a._g.doc.getElementById(w);G&&G.parentNode.removeChild(G)}}},u={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},v=function(a,b,d){b=u[c(b).toLowerCase()];if(b){var e=a.attrs["stroke-width"]||"1",f={round:e,square:e,butt:0}[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],h=b.length;while(h--)g[h]=b[h]*e+(h%2?1:-1)*f;q(a.node,{"stroke-dasharray":g.join(",")})}},w=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility="hidden";for(var o in f)if(f[b](o)){if(!a._availableAttrs[b](o))continue;var p=f[o];k[o]=p;switch(o){case"blur":d.blur(p);break;case"href":case"title":case"target":var u=i.parentNode;if(u.tagName.toLowerCase()!="a"){var w=q("a");u.insertBefore(w,i),w.appendChild(i),u=w}o=="target"?u.setAttributeNS(n,"show",p=="blank"?"new":p):u.setAttributeNS(n,o,p);break;case"cursor":i.style.cursor=p;break;case"transform":d.transform(p);break;case"arrow-start":t(d,p);break;case"arrow-end":t(d,p,1);break;case"clip-rect":var x=c(p).split(j);if(x.length==4){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var z=q("clipPath"),A=q("rect");z.id=a.createUUID(),q(A,{x:x[0],y:x[1],width:x[2],height:x[3]}),z.appendChild(A),d.paper.defs.appendChild(z),q(i,{"clip-path":"url(#"+z.id+")"}),d.clip=A}if(!p){var B=i.getAttribute("clip-path");if(B){var C=a._g.doc.getElementById(B.replace(/(^url\(#|\)$)/g,l));C&&C.parentNode.removeChild(C),q(i,{"clip-path":l}),delete d.clip}}break;case"path":d.type=="path"&&(q(i,{d:p?k.path=a._pathToAbsolute(p):"M0,0"}),d._.dirty=1,d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1)));break;case"width":i.setAttribute(o,p),d._.dirty=1;if(k.fx)o="x",p=k.x;else break;case"x":k.fx&&(p=-k.x-(k.width||0));case"rx":if(o=="rx"&&d.type=="rect")break;case"cx":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"height":i.setAttribute(o,p),d._.dirty=1;if(k.fy)o="y",p=k.y;else break;case"y":k.fy&&(p=-k.y-(k.height||0));case"ry":if(o=="ry"&&d.type=="rect")break;case"cy":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"r":d.type=="rect"?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case"src":d.type=="image"&&i.setAttributeNS(n,"href",p);break;case"stroke-width":if(d._.sx!=1||d._.sy!=1)p/=g(h(d._.sx),h(d._.sy))||1;d.paper._vbSize&&(p*=d.paper._vbSize),i.setAttribute(o,p),k["stroke-dasharray"]&&v(d,k["stroke-dasharray"],f),d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"stroke-dasharray":v(d,p,f);break;case"fill":var D=c(p).match(a._ISURL);if(D){z=q("pattern");var F=q("image");z.id=a.createUUID(),q(z,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),q(F,{x:0,y:0,"xlink:href":D[1]}),z.appendChild(F),function(b){a._preload(D[1],function(){var a=this.offsetWidth,c=this.offsetHeight;q(b,{width:a,height:c}),q(F,{width:a,height:c}),d.paper.safari()})}(z),d.paper.defs.appendChild(z),q(i,{fill:"url(#"+z.id+")"}),d.pattern=z,d.pattern&&s(d);break}var G=a.getRGB(p);if(!G.error)delete f.gradient,delete k.gradient,!a.is(k.opacity,"undefined")&&a.is(f.opacity,"undefined")&&q(i,{opacity:k.opacity}),!a.is(k["fill-opacity"],"undefined")&&a.is(f["fill-opacity"],"undefined")&&q(i,{"fill-opacity":k["fill-opacity"]});else if((d.type=="circle"||d.type=="ellipse"||c(p).charAt()!="r")&&r(d,p)){if("opacity"in k||"fill-opacity"in k){var H=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l));if(H){var I=H.getElementsByTagName("stop");q(I[I.length-1],{"stop-opacity":("opacity"in k?k.opacity:1)*("fill-opacity"in k?k["fill-opacity"]:1)})}}k.gradient=p,k.fill="none";break}G[b]("opacity")&&q(i,{"fill-opacity":G.opacity>1?G.opacity/100:G.opacity});case"stroke":G=a.getRGB(p),i.setAttribute(o,G.hex),o=="stroke"&&G[b]("opacity")&&q(i,{"stroke-opacity":G.opacity>1?G.opacity/100:G.opacity}),o=="stroke"&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":(d.type=="circle"||d.type=="ellipse"||c(p).charAt()!="r")&&r(d,p);break;case"opacity":k.gradient&&!k[b]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){H=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),H&&(I=H.getElementsByTagName("stop"),q(I[I.length-1],{"stop-opacity":p}));break};default:o=="font-size"&&(p=e(p,10)+"px");var J=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[J]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if(d.type=="text"&&!!(f[b]("text")||f[b]("font")||f[b]("font-size")||f[b]("x")||f[b]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(a._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[b]("text")){g.text=f.text;while(h.firstChild)h.removeChild(h.firstChild);var j=c(f.text).split("\n"),k=[],m;for(var n=0,o=j.length;n<o;n++)m=q("tspan"),n&&q(m,{dy:i*x,x:g.x}),m.appendChild(a._g.doc.createTextNode(j[n])),h.appendChild(m),k[n]=m}else{k=h.getElementsByTagName("tspan");for(n=0,o=k.length;n<o;n++)n?q(k[n],{dy:i*x,x:g.x}):q(k[0],{dy:0})}q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&a.is(r,"finite")&&q(k[0],{dy:r})}},z=function(b,c){var d=0,e=0;this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.matrix=a.matrix(),this.realPath=null,this.paper=c,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},A=a.el;z.prototype=A,A.constructor=z,a._engine.path=function(a,b){var c=q("path");b.canvas&&b.canvas.appendChild(c);var d=new z(c,b);d.type="path",w(d,{fill:"none",stroke:"#000",path:a});return d},A.rotate=function(a,b,e){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),e==null&&(b=e);if(b==null||e==null){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}this.transform(this._.transform.concat([["r",a,b,e]]));return this},A.scale=function(a,b,e,f){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),b==null&&(b=a),f==null&&(e=f);if(e==null||f==null)var g=this.getBBox(1);e=e==null?g.x+g.width/2:e,f=f==null?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]]));return this},A.translate=function(a,b){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this.transform(this._.transform.concat([["t",a,b]]));return this},A.transform=function(c){var d=this._;if(c==null)return d.transform;a._extractTransform(this,c),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&s(this),this.node&&q(this.node,{transform:this.matrix});if(d.sx!=1||d.sy!=1){var e=this.attrs[b]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":e})}return this},A.hide=function(){!this.removed&&this.paper.safari(this.node.style.display="none");return this},A.show=function(){!this.removed&&this.paper.safari(this.node.style.display="");return this},A.remove=function(){if(!this.removed&&!!this.node.parentNode){var b=this.paper;b.__set__&&b.__set__.exclude(this),k.unbind("raphael.*.*."+this.id),this.gradient&&b.defs.removeChild(this.gradient),a._tear(this,b),this.node.parentNode.tagName.toLowerCase()=="a"?this.node.parentNode.parentNode.removeChild(this.node.parentNode):this.node.parentNode.removeChild(this.node);for(var c in this)this[c]=typeof this[c]=="function"?a._removedFactory(c):null;this.removed=!0}},A._getBBox=function(){if(this.node.style.display=="none"){this.show();var a=!0}var b={};try{b=this.node.getBBox()}catch(c){}finally{b=b||{}}a&&this.hide();return b},A.attr=function(c,d){if(this.removed)return this;if(c==null){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);e.gradient&&e.fill=="none"&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform;return e}if(d==null&&a.is(c,"string")){if(c=="fill"&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;if(c=="transform")return this._.transform;var g=c.split(j),h={};for(var i=0,l=g.length;i<l;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return l-1?h:h[g[0]]}if(d==null&&a.is(c,"array")){h={};for(i=0,l=c.length;i<l;i++)h[c[i]]=this.attr(c[i]);return h}if(d!=null){var m={};m[c]=d}else c!=null&&a.is(c,"object")&&(m=c);for(var n in m)k("raphael.attr."+n+"."+this.id,this,m[n]);for(n in this.paper.customAttributes)if(this.paper.customAttributes[b](n)&&m[b](n)&&a.is(this.paper.customAttributes[n],"function")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o)o[b](p)&&(m[p]=o[p])}w(this,m);return this},A.toFront=function(){if(this.removed)return this;this.node.parentNode.tagName.toLowerCase()=="a"?this.node.parentNode.parentNode.appendChild(this.node.parentNode):this.node.parentNode.appendChild(this.node);var b=this.paper;b.top!=this&&a._tofront(this,b);return this},A.toBack=function(){if(this.removed)return this;var b=this.node.parentNode;b.tagName.toLowerCase()=="a"?b.parentNode.insertBefore(this.node.parentNode,this.node.parentNode.parentNode.firstChild):b.firstChild!=this.node&&b.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper);var c=this.paper;return this},A.insertAfter=function(b){if(this.removed)return this;var c=b.node||b[b.length-1].node;c.nextSibling?c.parentNode.insertBefore(this.node,c.nextSibling):c.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper);return this},A.insertBefore=function(b){if(this.removed)return this;var c=b.node||b[0].node;c.parentNode.insertBefore(this.node,c),a._insertbefore(this,b,this.paper);return this},A.blur=function(b){var c=this;if(+b!==0){var d=q("filter"),e=q("feGaussianBlur");c.attrs.blur=b,d.id=a.createUUID(),q(e,{stdDeviation:+b||1.5}),d.appendChild(e),c.paper.defs.appendChild(d),c._blur=d,q(c.node,{filter:"url(#"+d.id+")"})}else c._blur&&(c._blur.parentNode.removeChild(c._blur),delete c._blur,delete c.attrs.blur),c.node.removeAttribute("filter")},a._engine.circle=function(a,b,c,d){var e=q("circle");a.canvas&&a.canvas.appendChild(e);var f=new z(e,a);f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",q(e,f.attrs);return f},a._engine.rect=function(a,b,c,d,e,f){var g=q("rect");a.canvas&&a.canvas.appendChild(g);var h=new z(g,a);h.attrs={x:b,y:c,width:d,height:e,r:f||0,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",q(g,h.attrs);return h},a._engine.ellipse=function(a,b,c,d,e){var f=q("ellipse");a.canvas&&a.canvas.appendChild(f);var g=new z(f,a);g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",q(f,g.attrs);return g},a._engine.image=function(a,b,c,d,e,f){var g=q("image");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(n,"href",b),a.canvas&&a.canvas.appendChild(g);var h=new z(g,a);h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image";return h},a._engine.text=function(b,c,d,e){var f=q("text");b.canvas&&b.canvas.appendChild(f);var g=new z(f,b);g.attrs={x:c,y:d,"text-anchor":"middle",text:e,font:a._availableAttrs.font,stroke:"none",fill:"#000"},g.type="text",w(g,g.attrs);return g},a._engine.setSize=function(a,b){this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox);return this},a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b&&b.container,d=b.x,e=b.y,f=b.width,g=b.height;if(!c)throw new Error("SVG container not found.");var h=q("svg"),i="overflow:hidden;",j;d=d||0,e=e||0,f=f||512,g=g||342,q(h,{height:g,version:1.1,width:f,xmlns:"http://www.w3.org/2000/svg"}),c==1?(h.style.cssText=i+"position:absolute;left:"+d+"px;top:"+e+"px",a._g.doc.body.appendChild(h),j=1):(h.style.cssText=i+"position:relative",c.firstChild?c.insertBefore(h,c.firstChild):c.appendChild(h)),c=new a._Paper,c.width=f,c.height=g,c.canvas=h,c.clear(),c._left=c._top=0,j&&(c.renderfix=function(){}),c.renderfix();return c},a._engine.setViewBox=function(a,b,c,d,e){k("raphael.setViewBox",this,this._viewBox,[a,b,c,d,e]);var f=g(c/this.width,d/this.height),h=this.top,i=e?"meet":"xMinYMin",j,l;a==null?(this._vbSize&&(f=1),delete this._vbSize,j="0 0 "+this.width+m+this.height):(this._vbSize=f,j=a+m+b+m+c+m+d),q(this.canvas,{viewBox:j,preserveAspectRatio:i});while(f&&h)l="stroke-width"in h.attrs?h.attrs["stroke-width"]:1,h.attr({"stroke-width":l}),h._.dirty=1,h._.dirtyT=1,h=h.prev;this._viewBox=[a,b,c,d,!!e];return this},a.prototype.renderfix=function(){var a=this.canvas,b=a.style,c;try{c=a.getScreenCTM()||a.createSVGMatrix()}catch(d){c=a.createSVGMatrix()}var e=-c.e%1,f=-c.f%1;if(e||f)e&&(this._left=(this._left+e)%1,b.left=this._left+"px"),f&&(this._top=(this._top+f)%1,b.top=this._top+"px")},a.prototype.clear=function(){a.eve("raphael.clear",this);var b=this.canvas;while(b.firstChild)b.removeChild(b.firstChild);this.bottom=this.top=null,(this.desc=q("desc")).appendChild(a._g.doc.createTextNode("Created with Raphaël "+a.version)),b.appendChild(this.desc),b.appendChild(this.defs=q("defs"))},a.prototype.remove=function(){k("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null};var B=a.st;for(var C in A)A[b](C)&&!B[b](C)&&(B[C]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(C))}(window.Raphael),window.Raphael.vml&&function(a){var b="hasOwnProperty",c=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j="fill",k=/[, ]+/,l=a.eve,m=" progid:DXImageTransform.Microsoft",n=" ",o="",p={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\S+Blur\([^\)]+\)/g,s=/-?[^,\s-]+/g,t="position:absolute;left:0;top:0;width:1px;height:1px",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(b){var d=/[ahqstv]/ig,e=a._pathToAbsolute;c(b).match(d)&&(e=a._path2curve),d=/[clmz]/g;if(e==a._pathToAbsolute&&!c(b).match(d)){var g=c(b).replace(q,function(a,b,c){var d=[],e=b.toLowerCase()=="m",g=p[b];c.replace(s,function(a){e&&d.length==2&&(g+=d+p[b=="m"?"l":"L"],d=[]),d.push(f(a*u))});return g+d});return g}var h=e(b),i,j;g=[];for(var k=0,l=h.length;k<l;k++){i=h[k],j=h[k][0].toLowerCase(),j=="z"&&(j="x");for(var m=1,r=i.length;m<r;m++)j+=f(i[m]*u)+(m!=r-1?",":o);g.push(j)}return g.join(n)},y=function(b,c,d){var e=a.matrix();e.rotate(-b,.5,.5);return{dx:e.x(c,d),dy:e.y(c,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p="",q,r=u/b,s=u/c;m.visibility="hidden";if(!!b&&!!c){l.coordsize=i(r)+n+i(s),m.rotation=f*(b*c<0?-1:1);if(f){var t=y(f,d,e);d=t.dx,e=t.dy}b<0&&(p+="x"),c<0&&(p+=" y")&&(o=-1),m.flip=p,l.coordorigin=d*-r+n+e*-s;if(k||g.fillsize){var v=l.getElementsByTagName(j);v=v&&v[0],l.removeChild(v),k&&(t=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),v.position=t.dx*o+n+t.dy*o),g.fillsize&&(v.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(v)}m.visibility="visible"}};a.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var A=function(a,b,d){var e=c(b).toLowerCase().split("-"),f=d?"end":"start",g=e.length,h="classic",i="medium",j="medium";while(g--)switch(e[g]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":h=e[g];break;case"wide":case"narrow":j=e[g];break;case"long":case"short":i=e[g]}var k=a.node.getElementsByTagName("stroke")[0];k[f+"arrow"]=h,k[f+"arrowlength"]=i,k[f+"arrowwidth"]=j},B=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q,r=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),s=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),t=e;for(var y in i)i[b](y)&&(m[y]=i[y]);r&&(m.path=a._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),"blur"in i&&e.blur(i.blur);if(i.path&&e.type=="path"||r)l.path=x(~c(m.path).toLowerCase().indexOf("r")?a._pathToAbsolute(m.path):m.path),e.type=="image"&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0));"transform"in i&&e.transform(i.transform);if(s){var B=+m.cx,D=+m.cy,E=+m.rx||+m.r||0,G=+m.ry||+m.r||0;l.path=a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",f((B-E)*u),f((D-G)*u),f((B+E)*u),f((D+G)*u),f(B*u))}if("clip-rect"in i){var H=c(i["clip-rect"]).split(k);if(H.length==4){H[2]=+H[2]+ +H[0],H[3]=+H[3]+ +H[1];var I=l.clipRect||a._g.doc.createElement("div"),J=I.style;J.clip=a.format("rect({1}px {2}px {3}px {0}px)",H),l.clipRect||(J.position="absolute",J.top=0,J.left=0,J.width=e.paper.width+"px",J.height=e.paper.height+"px",l.parentNode.insertBefore(I,l),I.appendChild(l),l.clipRect=I)}i["clip-rect"]||l.clipRect&&(l.clipRect.style.clip="auto")}if(e.textpath){var K=e.textpath.style;i.font&&(K.font=i.font),i["font-family"]&&(K.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,o)+'"'),i["font-size"]&&(K.fontSize=i["font-size"]),i["font-weight"]&&(K.fontWeight=i["font-weight"]),i["font-style"]&&(K.fontStyle=i["font-style"])}"arrow-start"in i&&A(t,i["arrow-start"]),"arrow-end"in i&&A(t,i["arrow-end"],1);if(i.opacity!=null||i["stroke-width"]!=null||i.fill!=null||i.src!=null||i.stroke!=null||i["stroke-width"]!=null||i["stroke-opacity"]!=null||i["fill-opacity"]!=null||i["stroke-dasharray"]!=null||i["stroke-miterlimit"]!=null||i["stroke-linejoin"]!=null||i["stroke-linecap"]!=null){var L=l.getElementsByTagName(j),M=!1;L=L&&L[0],!L&&(M=L=F(j)),e.type=="image"&&i.src&&(L.src=i.src),i.fill&&(L.on=!0);if(L.on==null||i.fill=="none"||i.fill===null)L.on=!1;if(L.on&&i.fill){var N=c(i.fill).match(a._ISURL);if(N){L.parentNode==l&&l.removeChild(L),L.rotate=!0,L.src=N[1],L.type="tile";var O=e.getBBox(1);L.position=O.x+n+O.y,e._.fillpos=[O.x,O.y],a._preload(N[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else L.color=a.getRGB(i.fill).hex,L.src=o,L.type="solid",a.getRGB(i.fill).error&&(t.type in{circle:1,ellipse:1}||c(i.fill).charAt()!="r")&&C(t,i.fill,L)&&(m.fill="none",m.gradient=i.fill,L.rotate=!1)}if("fill-opacity"in i||"opacity"in i){var P=((+m["fill-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+a.getRGB(i.fill).o+1||2)-1);P=h(g(P,0),1),L.opacity=P,L.src&&(L.color="none")}l.appendChild(L);var Q=l.getElementsByTagName("stroke")&&l.getElementsByTagName("stroke")[0],T=!1;!Q&&(T=Q=F("stroke"));if(i.stroke&&i.stroke!="none"||i["stroke-width"]||i["stroke-opacity"]!=null||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])Q.on=!0;(i.stroke=="none"||i.stroke===null||Q.on==null||i.stroke==0||i["stroke-width"]==0)&&(Q.on=!1);var U=a.getRGB(i.stroke);Q.on&&i.stroke&&(Q.color=U.hex),P=((+m["stroke-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+U.o+1||2)-1);var V=(d(i["stroke-width"])||1)*.75;P=h(g(P,0),1),i["stroke-width"]==null&&(V=m["stroke-width"]),i["stroke-width"]&&(Q.weight=V),V&&V<1&&(P*=V)&&(Q.weight=1),Q.opacity=P,i["stroke-linejoin"]&&(Q.joinstyle=i["stroke-linejoin"]||"miter"),Q.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(Q.endcap=i["stroke-linecap"]=="butt"?"flat":i["stroke-linecap"]=="square"?"square":"round");if(i["stroke-dasharray"]){var W={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};Q.dashstyle=W[b](i["stroke-dasharray"])?W[i["stroke-dasharray"]]:o}T&&l.appendChild(Q)}if(t.type=="text"){t.paper.canvas.style.display=o;var X=t.paper.span,Y=100,Z=m.font&&m.font.match(/\d+(?:\.\d*)?(?=px)/);p=X.style,m.font&&(p.font=m.font),m["font-family"]&&(p.fontFamily=m["font-family"]),m["font-weight"]&&(p.fontWeight=m["font-weight"]),m["font-style"]&&(p.fontStyle=m["font-style"]),Z=d(m["font-size"]||Z&&Z[0])||10,p.fontSize=Z*Y+"px",t.textpath.string&&(X.innerHTML=c(t.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));var $=X.getBoundingClientRect();t.W=m.w=($.right-$.left)/Y,t.H=m.h=($.bottom-$.top)/Y,t.X=m.x,t.Y=m.y+t.H/2,("x"in i||"y"in i)&&(t.path.v=a.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));var _=["x","y","text","font","font-family","font-weight","font-style","font-size"];for(var ba=0,bb=_.length;ba<bb;ba++)if(_[ba]in i){t._.dirty=1;break}switch(m["text-anchor"]){case"start":t.textpath.style["v-text-align"]="left",t.bbx=t.W/2;break;case"end":t.textpath.style["v-text-align"]="right",t.bbx=-t.W/2;break;default:t.textpath.style["v-text-align"]="center",t.bbx=0}t.textpath.style["v-text-kern"]=!0}},C=function(b,f,g){b.attrs=b.attrs||{};var h=b.attrs,i=Math.pow,j,k,l="linear",m=".5 .5";b.attrs.gradient=f,f=c(f).replace(a._radial_gradient,function(a,b,c){l="radial",b&&c&&(b=d(b),c=d(c),i(b-.5,2)+i(c-.5,2)>.25&&(c=e.sqrt(.25-i(b-.5,2))*((c>.5)*2-1)+.5),m=b+n+c);return o}),f=f.split(/\s*\-\s*/);if(l=="linear"){var p=f.shift();p=-d(p);if(isNaN(p))return null}var q=a._parseDots(f);if(!q)return null;b=b.shape||b.node;if(q.length){b.removeChild(g),g.on=!0,g.method="none",g.color=q[0].color,g.color2=q[q.length-1].color;var r=[];for(var s=0,t=q.length;s<t;s++)q[s].offset&&r.push(q[s].offset+n+q[s].color);g.colors=r.length?r.join():"0% "+g.color,l=="radial"?(g.type="gradientTitle",g.focus="100%",g.focussize="0 0",g.focusposition=m,g.angle=0):(g.type="gradient",g.angle=(270-p)%360),b.appendChild(g)}return 1},D=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=c,this.matrix=a.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},E=a.el;D.prototype=E,E.constructor=D,E.transform=function(b){if(b==null)return this._.transform;var d=this.paper._viewBoxShift,e=d?"s"+[d.scale,d.scale]+"-1-1t"+[d.dx,d.dy]:o,f;d&&(f=b=c(b).replace(/\.{3}|\u2026/g,this._.transform||o)),a._extractTransform(this,e+b);var g=this.matrix.clone(),h=this.skew,i=this.node,j,k=~c(this.attrs.fill).indexOf("-"),l=!c(this.attrs.fill).indexOf("url(");g.translate(-0.5,-0.5);if(l||k||this.type=="image"){h.matrix="1 0 0 1",h.offset="0 0",j=g.split();if(k&&j.noRotation||!j.isSimple){i.style.filter=g.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;i.coordorigin=q*-u+n+r*-u,z(this,1,1,q,r,0)}else i.style.filter=o,z(this,j.scalex,j.scaley,j.dx,j.dy,j.rotate)}else i.style.filter=o,h.matrix=c(g),h.offset=g.offset();f&&(this._.transform=f);return this},E.rotate=function(a,b,e){if(this.removed)return this;if(a!=null){a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),e==null&&(b=e);if(b==null||e==null){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}this._.dirtyT=1,this.transform(this._.transform.concat([["r",a,b,e]]));return this}},E.translate=function(a,b){if(this.removed)return this;a=c(a).split(k),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=b),this.transform(this._.transform.concat([["t",a,b]]));return this},E.scale=function(a,b,e,f){if(this.removed)return this;a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),b==null&&(b=a),f==null&&(e=f);if(e==null||f==null)var g=this.getBBox(1);e=e==null?g.x+g.width/2:e,f=f==null?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this._.dirtyT=1;return this},E.hide=function(){!this.removed&&(this.node.style.display="none");return this},E.show=function(){!this.removed&&(this.node.style.display=o);return this},E._getBBox=function(){if(this.removed)return{};return{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},E.remove=function(){if(!this.removed&&!!this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),a.eve.unbind("raphael.*.*."+this.id),a._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null;this.removed=!0}},E.attr=function(c,d){if(this.removed)return this;if(c==null){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);e.gradient&&e.fill=="none"&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform;return e}if(d==null&&a.is(c,"string")){if(c==j&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;var g=c.split(k),h={};for(var i=0,m=g.length;i<m;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return m-1?h:h[g[0]]}if(this.attrs&&d==null&&a.is(c,"array")){h={};for(i=0,m=c.length;i<m;i++)h[c[i]]=this.attr(c[i]);return h}var n;d!=null&&(n={},n[c]=d),d==null&&a.is(c,"object")&&(n=c);for(var o in n)l("raphael.attr."+o+"."+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes)if(this.paper.customAttributes[b](o)&&n[b](o)&&a.is(this.paper.customAttributes[o],"function")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p)p[b](q)&&(n[q]=p[q])}n.text&&this.type=="text"&&(this.textpath.string=n.text),B(this,n)}return this},E.toFront=function(){!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&a._tofront(this,this.paper);return this},E.toBack=function(){if(this.removed)return this;this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper));return this},E.insertAfter=function(b){if(this.removed)return this;b.constructor==a.st.constructor&&(b=b[b.length-1]),b.node.nextSibling?b.node.parentNode.insertBefore(this.node,b.node.nextSibling):b.node.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper);return this},E.insertBefore=function(b){if(this.removed)return this;b.constructor==a.st.constructor&&(b=b[0]),b.node.parentNode.insertBefore(this.node,b.node),a._insertbefore(this,b,this.paper);return this},E.blur=function(b){var c=this.node.runtimeStyle,d=c.filter;d=d.replace(r,o),+b!==0?(this.attrs.blur=b,c.filter=d+n+m+".Blur(pixelradius="+(+b||1.5)+")",c.margin=a.format("-{0}px 0 0 -{0}px",f(+b||1.5))):(c.filter=d,c.margin=0,delete this.attrs.blur)},a._engine.path=function(a,b){var c=F("shape");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new D(c,b),e={fill:"none",stroke:"#000"};a&&(e.path=a),d.type="path",d.path=[],d.Path=o,B(d,e),b.canvas.appendChild(c);var f=F("skew");f.on=!0,c.appendChild(f),d.skew=f,d.transform(o);return d},a._engine.rect=function(b,c,d,e,f,g){var h=a._rectPath(c,d,e,f,g),i=b.path(h),j=i.attrs;i.X=j.x=c,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type="rect";return i},a._engine.ellipse=function(a,b,c,d,e){var f=a.path(),g=f.attrs;f.X=b-d,f.Y=c-e,f.W=d*2,f.H=e*2,f.type="ellipse",B(f,{cx:b,cy:c,rx:d,ry:e});return f},a._engine.circle=function(a,b,c,d){var e=a.path(),f=e.attrs;e.X=b-d,e.Y=c-d,e.W=e.H=d*2,e.type="circle",B(e,{cx:b,cy:c,r:d});return e},a._engine.image=function(b,c,d,e,f,g){var h=a._rectPath(d,e,f,g),i=b.path(h).attr({stroke:"none"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];k.src=c,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type="image",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=c,m.type="tile",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0);return i},a._engine.text=function(b,d,e,g){var h=F("shape"),i=F("path"),j=F("textpath");d=d||0,e=e||0,g=g||"",i.v=a.format("m{0},{1}l{2},{1}",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=c(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin="0 0";var k=new D(h,b),l={fill:"#000",stroke:"none",font:a._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type="text",k.attrs.text=c(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,B(k,l),h.appendChild(j),h.appendChild(i),b.canvas.appendChild(h);var m=F("skew");m.on=!0,h.appendChild(m),k.skew=m,k.transform(o);return k},a._engine.setSize=function(b,c){var d=this.canvas.style;this.width=b,this.height=c,b==+b&&(b+="px"),c==+c&&(c+="px"),d.width=b,d.height=c,d.clip="rect(0 "+b+" "+c+" 0)",this._viewBox&&a._engine.setViewBox.apply(this,this._viewBox);return this},a._engine.setViewBox=function(b,c,d,e,f){a.eve("raphael.setViewBox",this,this._viewBox,[b,c,d,e,f]);var h=this.width,i=this.height,j=1/g(d/h,e/i),k,l;f&&(k=i/e,l=h/d,d*k<h&&(b-=(h-d*k)/2/k),e*l<i&&(c-=(i-e*l)/2/l)),this._viewBox=[b,c,d,e,!!f],this._viewBoxShift={dx:-b,dy:-c,scale:j},this.forEach(function(a){a.transform("...")});return this};var F;a._engine.initWin=function(a){var b=a.document;b.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!b.namespaces.rvml&&b.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),F=function(a){return b.createElement("<rvml:"+a+' class="rvml">')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},a._engine.initWin(a._g.win),a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,d=b.height,e,f=b.width,g=b.x,h=b.y;if(!c)throw new Error("VML container not found.");var i=new a._Paper,j=i.canvas=a._g.doc.createElement("div"),k=j.style;g=g||0,h=h||0,f=f||512,d=d||342,i.width=f,i.height=d,f==+f&&(f+="px"),d==+d&&(d+="px"),i.coordsize=u*1e3+n+u*1e3,i.coordorigin="0 0",i.span=a._g.doc.createElement("span"),i.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",j.appendChild(i.span),k.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",f,d),c==1?(a._g.doc.body.appendChild(j),k.left=g+"px",k.top=h+"px",k.position="absolute"):c.firstChild?c.insertBefore(j,c.firstChild):c.appendChild(j),i.renderfix=function(){};return i},a.prototype.clear=function(){a.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=a._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},a.prototype.remove=function(){a.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null;return!0};var G=a.st;for(var H in E)E[b](H)&&!G[b](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}(window.Raphael)
\ No newline at end of file
--- a/src/js/libs/raphael.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5436 +0,0 @@
-// ┌─────────────────────────────────────────────────────────────────────┐ \\
-// │ Raphaël 2.0 - JavaScript Vector Library                             │ \\
-// ├─────────────────────────────────────────────────────────────────────┤ \\
-// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\
-// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\
-// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\
-// └─────────────────────────────────────────────────────────────────────┘ \\
-
-// ┌──────────────────────────────────────────────────────────────────────────────────────┐ \\
-// │ Eve 0.3.2 - JavaScript Events Library                                                │ \\
-// ├──────────────────────────────────────────────────────────────────────────────────────┤ \\
-// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://dmitry.baranovskiy.com/)          │ \\
-// │ Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license. │ \\
-// └──────────────────────────────────────────────────────────────────────────────────────┘ \\
-
-(function (glob) {
-    var version = "0.3.2",
-        has = "hasOwnProperty",
-        separator = /[\.\/]/,
-        wildcard = "*",
-        fun = function () {},
-        numsort = function (a, b) {
-            return a - b;
-        },
-        current_event,
-        stop,
-        events = {n: {}},
-    
-        eve = function (name, scope) {
-            var e = events,
-                oldstop = stop,
-                args = Array.prototype.slice.call(arguments, 2),
-                listeners = eve.listeners(name),
-                z = 0,
-                f = false,
-                l,
-                indexed = [],
-                queue = {},
-                out = [],
-                errors = [];
-            current_event = name;
-            stop = 0;
-            for (var i = 0, ii = listeners.length; i < ii; i++) if ("zIndex" in listeners[i]) {
-                indexed.push(listeners[i].zIndex);
-                if (listeners[i].zIndex < 0) {
-                    queue[listeners[i].zIndex] = listeners[i];
-                }
-            }
-            indexed.sort(numsort);
-            while (indexed[z] < 0) {
-                l = queue[indexed[z++]];
-                out.push(l.apply(scope, args));
-                if (stop) {
-                    stop = oldstop;
-                    return out;
-                }
-            }
-            for (i = 0; i < ii; i++) {
-                l = listeners[i];
-                if ("zIndex" in l) {
-                    if (l.zIndex == indexed[z]) {
-                        out.push(l.apply(scope, args));
-                        if (stop) {
-                            stop = oldstop;
-                            return out;
-                        }
-                        do {
-                            z++;
-                            l = queue[indexed[z]];
-                            l && out.push(l.apply(scope, args));
-                            if (stop) {
-                                stop = oldstop;
-                                return out;
-                            }
-                        } while (l)
-                    } else {
-                        queue[l.zIndex] = l;
-                    }
-                } else {
-                    out.push(l.apply(scope, args));
-                    if (stop) {
-                        stop = oldstop;
-                        return out;
-                    }
-                }
-            }
-            stop = oldstop;
-            return out.length ? out : null;
-        };
-    
-    eve.listeners = function (name) {
-        var names = name.split(separator),
-            e = events,
-            item,
-            items,
-            k,
-            i,
-            ii,
-            j,
-            jj,
-            nes,
-            es = [e],
-            out = [];
-        for (i = 0, ii = names.length; i < ii; i++) {
-            nes = [];
-            for (j = 0, jj = es.length; j < jj; j++) {
-                e = es[j].n;
-                items = [e[names[i]], e[wildcard]];
-                k = 2;
-                while (k--) {
-                    item = items[k];
-                    if (item) {
-                        nes.push(item);
-                        out = out.concat(item.f || []);
-                    }
-                }
-            }
-            es = nes;
-        }
-        return out;
-    };
-    
-    
-    eve.on = function (name, f) {
-        var names = name.split(separator),
-            e = events;
-        for (var i = 0, ii = names.length; i < ii; i++) {
-            e = e.n;
-            !e[names[i]] && (e[names[i]] = {n: {}});
-            e = e[names[i]];
-        }
-        e.f = e.f || [];
-        for (i = 0, ii = e.f.length; i < ii; i++) if (e.f[i] == f) {
-            return fun;
-        }
-        e.f.push(f);
-        return function (zIndex) {
-            if (+zIndex == +zIndex) {
-                f.zIndex = +zIndex;
-            }
-        };
-    };
-    
-    eve.stop = function () {
-        stop = 1;
-    };
-    
-    eve.nt = function (subname) {
-        if (subname) {
-            return new RegExp("(?:\\.|\\/|^)" + subname + "(?:\\.|\\/|$)").test(current_event);
-        }
-        return current_event;
-    };
-    
-    eve.unbind = function (name, f) {
-        var names = name.split(separator),
-            e,
-            key,
-            splice,
-            cur = [events];
-        for (var i = 0, ii = names.length; i < ii; i++) {
-            for (var j = 0; j < cur.length; j += splice.length - 2) {
-                splice = [j, 1];
-                e = cur[j].n;
-                if (names[i] != wildcard) {
-                    if (e[names[i]]) {
-                        splice.push(e[names[i]]);
-                    }
-                } else {
-                    for (key in e) if (e[has](key)) {
-                        splice.push(e[key]);
-                    }
-                }
-                cur.splice.apply(cur, splice);
-            }
-        }
-        for (i = 0, ii = cur.length; i < ii; i++) {
-            e = cur[i];
-            while (e.n) {
-                if (f) {
-                    if (e.f) {
-                        for (j = 0, jj = e.f.length; j < jj; j++) if (e.f[j] == f) {
-                            e.f.splice(j, 1);
-                            break;
-                        }
-                        !e.f.length && delete e.f;
-                    }
-                    for (key in e.n) if (e.n[has](key) && e.n[key].f) {
-                        var funcs = e.n[key].f;
-                        for (j = 0, jj = funcs.length; j < jj; j++) if (funcs[j] == f) {
-                            funcs.splice(j, 1);
-                            break;
-                        }
-                        !funcs.length && delete e.n[key].f;
-                    }
-                } else {
-                    delete e.f;
-                    for (key in e.n) if (e.n[has](key) && e.n[key].f) {
-                        delete e.n[key].f;
-                    }
-                }
-                e = e.n;
-            }
-        }
-    };
-    
-    eve.version = version;
-    eve.toString = function () {
-        return "You are running Eve " + version;
-    };
-    (typeof module != "undefined" && module.exports) ? (module.exports = eve) : (glob.eve = eve);
-})(this);
-
-// ┌─────────────────────────────────────────────────────────────────────┐ \\
-// │ "Raphaël 2.0" - JavaScript Vector Library                           │ \\
-// ├─────────────────────────────────────────────────────────────────────┤ \\
-// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\
-// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\
-// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\
-// └─────────────────────────────────────────────────────────────────────┘ \\
-(function () {
-    
-    function R(first) {
-        if (R.is(first, "function")) {
-            return loaded ? first() : eve.on("DOMload", first);
-        } else if (R.is(first, array)) {
-            var a = first,
-                cnv = R._engine.create[apply](R, a.splice(0, 3 + R.is(a[0], nu))),
-                res = cnv.set(),
-                i = 0,
-                ii = a.length,
-                j;
-            for (; i < ii; i++) {
-                j = a[i] || {};
-                elements[has](j.type) && res.push(cnv[j.type]().attr(j));
-            }
-            return res;
-        } else {
-            var args = Array.prototype.slice.call(arguments, 0);
-            if (R.is(args[args.length - 1], "function")) {
-                var f = args.pop();
-                return loaded ? f.call(R._engine.create[apply](R, args)) : eve.on("DOMload", function () {
-                    f.call(R._engine.create[apply](R, args));
-                });
-            } else {
-                return R._engine.create[apply](R, arguments);
-            }
-        }
-    }
-    R.version = "2.0.0";
-    R.eve = eve;
-    var loaded,
-        separator = /[, ]+/,
-        elements = {circle: 1, rect: 1, path: 1, ellipse: 1, text: 1, image: 1},
-        formatrg = /\{(\d+)\}/g,
-        proto = "prototype",
-        has = "hasOwnProperty",
-        g = {
-            doc: document,
-            win: window
-        },
-        oldRaphael = {
-            was: Object.prototype[has].call(g.win, "Raphael"),
-            is: g.win.Raphael
-        },
-        Paper = function () {
-            
-            
-            this.ca = this.customAttributes = {};
-        },
-        paperproto,
-        appendChild = "appendChild",
-        apply = "apply",
-        concat = "concat",
-        supportsTouch = "createTouch" in g.doc,
-        E = "",
-        S = " ",
-        Str = String,
-        split = "split",
-        events = "click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[split](S),
-        touchMap = {
-            mousedown: "touchstart",
-            mousemove: "touchmove",
-            mouseup: "touchend"
-        },
-        lowerCase = Str.prototype.toLowerCase,
-        math = Math,
-        mmax = math.max,
-        mmin = math.min,
-        abs = math.abs,
-        pow = math.pow,
-        PI = math.PI,
-        nu = "number",
-        string = "string",
-        array = "array",
-        toString = "toString",
-        fillString = "fill",
-        objectToString = Object.prototype.toString,
-        paper = {},
-        push = "push",
-        ISURL = R._ISURL = /^url\(['"]?([^\)]+?)['"]?\)$/i,
-        colourRegExp = /^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i,
-        isnan = {"NaN": 1, "Infinity": 1, "-Infinity": 1},
-        bezierrg = /^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,
-        round = math.round,
-        setAttribute = "setAttribute",
-        toFloat = parseFloat,
-        toInt = parseInt,
-        upperCase = Str.prototype.toUpperCase,
-        availableAttrs = R._availableAttrs = {
-            "arrow-end": "none",
-            "arrow-start": "none",
-            blur: 0,
-            "clip-rect": "0 0 1e9 1e9",
-            cursor: "default",
-            cx: 0,
-            cy: 0,
-            fill: "#fff",
-            "fill-opacity": 1,
-            font: '10px "Arial"',
-            "font-family": '"Arial"',
-            "font-size": "10",
-            "font-style": "normal",
-            "font-weight": 400,
-            gradient: 0,
-            height: 0,
-            href: "http://raphaeljs.com/",
-            opacity: 1,
-            path: "M0,0",
-            r: 0,
-            rx: 0,
-            ry: 0,
-            src: "",
-            stroke: "#000",
-            "stroke-dasharray": "",
-            "stroke-linecap": "butt",
-            "stroke-linejoin": "butt",
-            "stroke-miterlimit": 0,
-            "stroke-opacity": 1,
-            "stroke-width": 1,
-            target: "_blank",
-            "text-anchor": "middle",
-            title: "Raphael",
-            transform: "",
-            width: 0,
-            x: 0,
-            y: 0
-        },
-        availableAnimAttrs = R._availableAnimAttrs = {
-            blur: nu,
-            "clip-rect": "csv",
-            cx: nu,
-            cy: nu,
-            fill: "colour",
-            "fill-opacity": nu,
-            "font-size": nu,
-            height: nu,
-            opacity: nu,
-            path: "path",
-            r: nu,
-            rx: nu,
-            ry: nu,
-            stroke: "colour",
-            "stroke-opacity": nu,
-            "stroke-width": nu,
-            transform: "transform",
-            width: nu,
-            x: nu,
-            y: nu
-        },
-        commaSpaces = /\s*,\s*/,
-        hsrg = {hs: 1, rg: 1},
-        p2s = /,?([achlmqrstvxz]),?/gi,
-        pathCommand = /([achlmrqstvz])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?\s*,?\s*)+)/ig,
-        tCommand = /([rstm])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?\s*,?\s*)+)/ig,
-        pathValues = /(-?\d*\.?\d*(?:e[\-+]?\d+)?)\s*,?\s*/ig,
-        radial_gradient = R._radial_gradient = /^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/,
-        eldata = {},
-        sortByKey = function (a, b) {
-            return a.key - b.key;
-        },
-        sortByNumber = function (a, b) {
-            return toFloat(a) - toFloat(b);
-        },
-        fun = function () {},
-        pipe = function (x) {
-            return x;
-        },
-        rectPath = R._rectPath = function (x, y, w, h, r) {
-            if (r) {
-                return [["M", x + r, y], ["l", w - r * 2, 0], ["a", r, r, 0, 0, 1, r, r], ["l", 0, h - r * 2], ["a", r, r, 0, 0, 1, -r, r], ["l", r * 2 - w, 0], ["a", r, r, 0, 0, 1, -r, -r], ["l", 0, r * 2 - h], ["a", r, r, 0, 0, 1, r, -r], ["z"]];
-            }
-            return [["M", x, y], ["l", w, 0], ["l", 0, h], ["l", -w, 0], ["z"]];
-        },
-        ellipsePath = function (x, y, rx, ry) {
-            if (ry == null) {
-                ry = rx;
-            }
-            return [["M", x, y], ["m", 0, -ry], ["a", rx, ry, 0, 1, 1, 0, 2 * ry], ["a", rx, ry, 0, 1, 1, 0, -2 * ry], ["z"]];
-        },
-        getPath = R._getPath = {
-            path: function (el) {
-                return el.attr("path");
-            },
-            circle: function (el) {
-                var a = el.attrs;
-                return ellipsePath(a.cx, a.cy, a.r);
-            },
-            ellipse: function (el) {
-                var a = el.attrs;
-                return ellipsePath(a.cx, a.cy, a.rx, a.ry);
-            },
-            rect: function (el) {
-                var a = el.attrs;
-                return rectPath(a.x, a.y, a.width, a.height, a.r);
-            },
-            image: function (el) {
-                var a = el.attrs;
-                return rectPath(a.x, a.y, a.width, a.height);
-            },
-            text: function (el) {
-                var bbox = el._getBBox();
-                return rectPath(bbox.x, bbox.y, bbox.width, bbox.height);
-            }
-        },
-        mapPath = R.mapPath = function (path, matrix) {
-            if (!matrix) {
-                return path;
-            }
-            var x, y, i, j, pathi;
-            path = path2curve(path);
-            for (i = 0, ii = path.length; i < ii; i++) {
-                pathi = path[i];
-                for (j = 1, jj = pathi.length; j < jj; j += 2) {
-                    x = matrix.x(pathi[j], pathi[j + 1]);
-                    y = matrix.y(pathi[j], pathi[j + 1]);
-                    pathi[j] = x;
-                    pathi[j + 1] = y;
-                }
-            }
-            return path;
-        };
-
-    R._g = g;
-    
-    R.type = (g.win.SVGAngle || g.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") ? "SVG" : "VML");
-    if (R.type == "VML") {
-        var d = g.doc.createElement("div"),
-            b;
-        d.innerHTML = '<v:shape adj="1"/>';
-        b = d.firstChild;
-        b.style.behavior = "url(#default#VML)";
-        if (!(b && typeof b.adj == "object")) {
-            return (R.type = E);
-        }
-        d = null;
-    }
-    
-    
-    R.svg = !(R.vml = R.type == "VML");
-    R._Paper = Paper;
-    
-    R.fn = paperproto = Paper.prototype = R.prototype;
-    R._id = 0;
-    R._oid = 0;
-    
-    R.is = function (o, type) {
-        type = lowerCase.call(type);
-        if (type == "finite") {
-            return !isnan[has](+o);
-        }
-        if (type == "array") {
-            return o instanceof Array;
-        }
-        return  (type == "null" && o === null) ||
-                (type == typeof o && o !== null) ||
-                (type == "object" && o === Object(o)) ||
-                (type == "array" && Array.isArray && Array.isArray(o)) ||
-                objectToString.call(o).slice(8, -1).toLowerCase() == type;
-    };
-    
-    R.angle = function (x1, y1, x2, y2, x3, y3) {
-        if (x3 == null) {
-            var x = x1 - x2,
-                y = y1 - y2;
-            if (!x && !y) {
-                return 0;
-            }
-            return (180 + math.atan2(-y, -x) * 180 / PI + 360) % 360;
-        } else {
-            return R.angle(x1, y1, x3, y3) - R.angle(x2, y2, x3, y3);
-        }
-    };
-    
-    R.rad = function (deg) {
-        return deg % 360 * PI / 180;
-    };
-    
-    R.deg = function (rad) {
-        return rad * 180 / PI % 360;
-    };
-    
-    R.snapTo = function (values, value, tolerance) {
-        tolerance = R.is(tolerance, "finite") ? tolerance : 10;
-        if (R.is(values, array)) {
-            var i = values.length;
-            while (i--) if (abs(values[i] - value) <= tolerance) {
-                return values[i];
-            }
-        } else {
-            values = +values;
-            var rem = value % values;
-            if (rem < tolerance) {
-                return value - rem;
-            }
-            if (rem > values - tolerance) {
-                return value - rem + values;
-            }
-        }
-        return value;
-    };
-    
-    
-    var createUUID = R.createUUID = (function (uuidRegEx, uuidReplacer) {
-        return function () {
-            return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(uuidRegEx, uuidReplacer).toUpperCase();
-        };
-    })(/[xy]/g, function (c) {
-        var r = math.random() * 16 | 0,
-            v = c == "x" ? r : (r & 3 | 8);
-        return v.toString(16);
-    });
-
-    
-    R.setWindow = function (newwin) {
-        eve("setWindow", R, g.win, newwin);
-        g.win = newwin;
-        g.doc = g.win.document;
-        if (initWin) {
-            initWin(g.win);
-        }
-    };
-    var toHex = function (color) {
-        if (R.vml) {
-            // http://dean.edwards.name/weblog/2009/10/convert-any-colour-value-to-hex-in-msie/
-            var trim = /^\s+|\s+$/g;
-            var bod;
-            try {
-                var docum = new ActiveXObject("htmlfile");
-                docum.write("<body>");
-                docum.close();
-                bod = docum.body;
-            } catch(e) {
-                bod = createPopup().document.body;
-            }
-            var range = bod.createTextRange();
-            toHex = cacher(function (color) {
-                try {
-                    bod.style.color = Str(color).replace(trim, E);
-                    var value = range.queryCommandValue("ForeColor");
-                    value = ((value & 255) << 16) | (value & 65280) | ((value & 16711680) >>> 16);
-                    return "#" + ("000000" + value.toString(16)).slice(-6);
-                } catch(e) {
-                    return "none";
-                }
-            });
-        } else {
-            var i = g.doc.createElement("i");
-            i.title = "Rapha\xebl Colour Picker";
-            i.style.display = "none";
-            g.doc.body.appendChild(i);
-            toHex = cacher(function (color) {
-                i.style.color = color;
-                return g.doc.defaultView.getComputedStyle(i, E).getPropertyValue("color");
-            });
-        }
-        return toHex(color);
-    },
-    hsbtoString = function () {
-        return "hsb(" + [this.h, this.s, this.b] + ")";
-    },
-    hsltoString = function () {
-        return "hsl(" + [this.h, this.s, this.l] + ")";
-    },
-    rgbtoString = function () {
-        return this.hex;
-    },
-    prepareRGB = function (r, g, b) {
-        if (g == null && R.is(r, "object") && "r" in r && "g" in r && "b" in r) {
-            b = r.b;
-            g = r.g;
-            r = r.r;
-        }
-        if (g == null && R.is(r, string)) {
-            var clr = R.getRGB(r);
-            r = clr.r;
-            g = clr.g;
-            b = clr.b;
-        }
-        if (r > 1 || g > 1 || b > 1) {
-            r /= 255;
-            g /= 255;
-            b /= 255;
-        }
-        
-        return [r, g, b];
-    },
-    packageRGB = function (r, g, b, o) {
-        r *= 255;
-        g *= 255;
-        b *= 255;
-        var rgb = {
-            r: r,
-            g: g,
-            b: b,
-            hex: R.rgb(r, g, b),
-            toString: rgbtoString
-        };
-        R.is(o, "finite") && (rgb.opacity = o);
-        return rgb;
-    };
-    
-    
-    R.color = function (clr) {
-        var rgb;
-        if (R.is(clr, "object") && "h" in clr && "s" in clr && "b" in clr) {
-            rgb = R.hsb2rgb(clr);
-            clr.r = rgb.r;
-            clr.g = rgb.g;
-            clr.b = rgb.b;
-            clr.hex = rgb.hex;
-        } else if (R.is(clr, "object") && "h" in clr && "s" in clr && "l" in clr) {
-            rgb = R.hsl2rgb(clr);
-            clr.r = rgb.r;
-            clr.g = rgb.g;
-            clr.b = rgb.b;
-            clr.hex = rgb.hex;
-        } else {
-            if (R.is(clr, "string")) {
-                clr = R.getRGB(clr);
-            }
-            if (R.is(clr, "object") && "r" in clr && "g" in clr && "b" in clr) {
-                rgb = R.rgb2hsl(clr);
-                clr.h = rgb.h;
-                clr.s = rgb.s;
-                clr.l = rgb.l;
-                rgb = R.rgb2hsb(clr);
-                clr.v = rgb.b;
-            } else {
-                clr = {hex: "none"};
-                crl.r = clr.g = clr.b = clr.h = clr.s = clr.v = clr.l = -1;
-            }
-        }
-        clr.toString = rgbtoString;
-        return clr;
-    };
-    
-    R.hsb2rgb = function (h, s, v, o) {
-        if (this.is(h, "object") && "h" in h && "s" in h && "b" in h) {
-            v = h.b;
-            s = h.s;
-            h = h.h;
-            o = h.o;
-        }
-        h *= 360;
-        var R, G, B, X, C;
-        h = (h % 360) / 60;
-        C = v * s;
-        X = C * (1 - abs(h % 2 - 1));
-        R = G = B = v - C;
-
-        h = ~~h;
-        R += [C, X, 0, 0, X, C][h];
-        G += [X, C, C, X, 0, 0][h];
-        B += [0, 0, X, C, C, X][h];
-        return packageRGB(R, G, B, o);
-    };
-    
-    R.hsl2rgb = function (h, s, l, o) {
-        if (this.is(h, "object") && "h" in h && "s" in h && "l" in h) {
-            l = h.l;
-            s = h.s;
-            h = h.h;
-        }
-        if (h > 1 || s > 1 || l > 1) {
-            h /= 360;
-            s /= 100;
-            l /= 100;
-        }
-        h *= 360;
-        var R, G, B, X, C;
-        h = (h % 360) / 60;
-        C = 2 * s * (l < .5 ? l : 1 - l);
-        X = C * (1 - abs(h % 2 - 1));
-        R = G = B = l - C / 2;
-
-        h = ~~h;
-        R += [C, X, 0, 0, X, C][h];
-        G += [X, C, C, X, 0, 0][h];
-        B += [0, 0, X, C, C, X][h];
-        return packageRGB(R, G, B, o);
-    };
-    
-    R.rgb2hsb = function (r, g, b) {
-        b = prepareRGB(r, g, b);
-        r = b[0];
-        g = b[1];
-        b = b[2];
-
-        var H, S, V, C;
-        V = mmax(r, g, b);
-        C = V - mmin(r, g, b);
-        H = (C == 0 ? null :
-             V == r ? (g - b) / C :
-             V == g ? (b - r) / C + 2 :
-                      (r - g) / C + 4
-            );
-        H = ((H + 360) % 6) * 60 / 360;
-        S = C == 0 ? 0 : C / V;
-        return {h: H, s: S, b: V, toString: hsbtoString};
-    };
-    
-    R.rgb2hsl = function (r, g, b) {
-        b = prepareRGB(r, g, b);
-        r = b[0];
-        g = b[1];
-        b = b[2];
-
-        var H, S, L, M, m, C;
-        M = mmax(r, g, b);
-        m = mmin(r, g, b);
-        C = M - m;
-        H = (C == 0 ? null :
-             M == r ? (g - b) / C :
-             M == g ? (b - r) / C + 2 :
-                      (r - g) / C + 4);
-        H = ((H + 360) % 6) * 60 / 360;
-        L = (M + m) / 2;
-        S = (C == 0 ? 0 :
-             L < .5 ? C / (2 * L) :
-                      C / (2 - 2 * L));
-        return {h: H, s: S, l: L, toString: hsltoString};
-    };
-    R._path2string = function () {
-        return this.join(",").replace(p2s, "$1");
-    };
-    function repush(array, item) {
-        for (var i = 0, ii = array.length; i < ii; i++) if (array[i] === item) {
-            return array.push(array.splice(i, 1)[0]);
-        }
-    }
-    function cacher(f, scope, postprocessor) {
-        function newf() {
-            var arg = Array.prototype.slice.call(arguments, 0),
-                args = arg.join("\u2400"),
-                cache = newf.cache = newf.cache || {},
-                count = newf.count = newf.count || [];
-            if (cache[has](args)) {
-                repush(count, args);
-                return postprocessor ? postprocessor(cache[args]) : cache[args];
-            }
-            count.length >= 1e3 && delete cache[count.shift()];
-            count.push(args);
-            cache[args] = f[apply](scope, arg);
-            return postprocessor ? postprocessor(cache[args]) : cache[args];
-        }
-        return newf;
-    }
-
-    var preload = R._preload = function (src, f) {
-        var img = g.doc.createElement("img");
-        img.style.cssText = "position:absolute;left:-9999em;top-9999em";
-        img.onload = function () {
-            f.call(this);
-            this.onload = null;
-            g.doc.body.removeChild(this);
-        };
-        img.onerror = function () {
-            g.doc.body.removeChild(this);
-        };
-        g.doc.body.appendChild(img);
-        img.src = src;
-    };
-    
-    function clrToString() {
-        return this.hex;
-    }
-
-    
-    R.getRGB = cacher(function (colour) {
-        if (!colour || !!((colour = Str(colour)).indexOf("-") + 1)) {
-            return {r: -1, g: -1, b: -1, hex: "none", error: 1, toString: clrToString};
-        }
-        if (colour == "none") {
-            return {r: -1, g: -1, b: -1, hex: "none", toString: clrToString};
-        }
-        !(hsrg[has](colour.toLowerCase().substring(0, 2)) || colour.charAt() == "#") && (colour = toHex(colour));
-        var res,
-            red,
-            green,
-            blue,
-            opacity,
-            t,
-            values,
-            rgb = colour.match(colourRegExp);
-        if (rgb) {
-            if (rgb[2]) {
-                blue = toInt(rgb[2].substring(5), 16);
-                green = toInt(rgb[2].substring(3, 5), 16);
-                red = toInt(rgb[2].substring(1, 3), 16);
-            }
-            if (rgb[3]) {
-                blue = toInt((t = rgb[3].charAt(3)) + t, 16);
-                green = toInt((t = rgb[3].charAt(2)) + t, 16);
-                red = toInt((t = rgb[3].charAt(1)) + t, 16);
-            }
-            if (rgb[4]) {
-                values = rgb[4][split](commaSpaces);
-                red = toFloat(values[0]);
-                values[0].slice(-1) == "%" && (red *= 2.55);
-                green = toFloat(values[1]);
-                values[1].slice(-1) == "%" && (green *= 2.55);
-                blue = toFloat(values[2]);
-                values[2].slice(-1) == "%" && (blue *= 2.55);
-                rgb[1].toLowerCase().slice(0, 4) == "rgba" && (opacity = toFloat(values[3]));
-                values[3] && values[3].slice(-1) == "%" && (opacity /= 100);
-            }
-            if (rgb[5]) {
-                values = rgb[5][split](commaSpaces);
-                red = toFloat(values[0]);
-                values[0].slice(-1) == "%" && (red *= 2.55);
-                green = toFloat(values[1]);
-                values[1].slice(-1) == "%" && (green *= 2.55);
-                blue = toFloat(values[2]);
-                values[2].slice(-1) == "%" && (blue *= 2.55);
-                (values[0].slice(-3) == "deg" || values[0].slice(-1) == "\xb0") && (red /= 360);
-                rgb[1].toLowerCase().slice(0, 4) == "hsba" && (opacity = toFloat(values[3]));
-                values[3] && values[3].slice(-1) == "%" && (opacity /= 100);
-                return R.hsb2rgb(red, green, blue, opacity);
-            }
-            if (rgb[6]) {
-                values = rgb[6][split](commaSpaces);
-                red = toFloat(values[0]);
-                values[0].slice(-1) == "%" && (red *= 2.55);
-                green = toFloat(values[1]);
-                values[1].slice(-1) == "%" && (green *= 2.55);
-                blue = toFloat(values[2]);
-                values[2].slice(-1) == "%" && (blue *= 2.55);
-                (values[0].slice(-3) == "deg" || values[0].slice(-1) == "\xb0") && (red /= 360);
-                rgb[1].toLowerCase().slice(0, 4) == "hsla" && (opacity = toFloat(values[3]));
-                values[3] && values[3].slice(-1) == "%" && (opacity /= 100);
-                return R.hsl2rgb(red, green, blue, opacity);
-            }
-            rgb = {r: red, g: green, b: blue, toString: clrToString};
-            rgb.hex = "#" + (16777216 | blue | (green << 8) | (red << 16)).toString(16).slice(1);
-            R.is(opacity, "finite") && (rgb.opacity = opacity);
-            return rgb;
-        }
-        return {r: -1, g: -1, b: -1, hex: "none", error: 1, toString: clrToString};
-    }, R);
-    
-    R.hsb = cacher(function (h, s, b) {
-        return R.hsb2rgb(h, s, b).hex;
-    });
-    
-    R.hsl = cacher(function (h, s, l) {
-        return R.hsl2rgb(h, s, l).hex;
-    });
-    
-    R.rgb = cacher(function (r, g, b) {
-        return "#" + (16777216 | b | (g << 8) | (r << 16)).toString(16).slice(1);
-    });
-    
-    R.getColor = function (value) {
-        var start = this.getColor.start = this.getColor.start || {h: 0, s: 1, b: value || .75},
-            rgb = this.hsb2rgb(start.h, start.s, start.b);
-        start.h += .075;
-        if (start.h > 1) {
-            start.h = 0;
-            start.s -= .2;
-            start.s <= 0 && (this.getColor.start = {h: 0, s: 1, b: start.b});
-        }
-        return rgb.hex;
-    };
-    
-    R.getColor.reset = function () {
-        delete this.start;
-    };
-
-    // http://schepers.cc/getting-to-the-point
-    function catmullRom2bezier(crp) {
-        var d = [];
-        for (var i = 0, iLen = crp.length; iLen - 2 > i; i += 2) {
-            var p = [{x: +crp[i],     y: +crp[i + 1]},
-                     {x: +crp[i],     y: +crp[i + 1]},
-                     {x: +crp[i + 2], y: +crp[i + 3]},
-                     {x: +crp[i + 4], y: +crp[i + 5]}];
-            if (iLen - 4 == i) {
-                p[0] = {x: +crp[i - 2], y: +crp[i - 1]};
-                p[3] = p[2];
-            } else if (i) {
-                p[0] = {x: +crp[i - 2], y: +crp[i - 1]};
-            }
-            d.push(["C",
-                (-p[0].x + 6 * p[1].x + p[2].x) / 6,
-                (-p[0].y + 6 * p[1].y + p[2].y) / 6,
-                (p[1].x + 6 * p[2].x - p[3].x) / 6,
-                (p[1].y + 6*p[2].y - p[3].y) / 6,
-                p[2].x,
-                p[2].y
-            ]);
-        }
-
-        return d;
-    }
-    
-    R.parsePathString = cacher(function (pathString) {
-        if (!pathString) {
-            return null;
-        }
-        var paramCounts = {a: 7, c: 6, h: 1, l: 2, m: 2, r: 4, q: 4, s: 4, t: 2, v: 1, z: 0},
-            data = [];
-        if (R.is(pathString, array) && R.is(pathString[0], array)) { // rough assumption
-            data = pathClone(pathString);
-        }
-        if (!data.length) {
-            Str(pathString).replace(pathCommand, function (a, b, c) {
-                var params = [],
-                    name = b.toLowerCase();
-                c.replace(pathValues, function (a, b) {
-                    b && params.push(+b);
-                });
-                if (name == "m" && params.length > 2) {
-                    data.push([b][concat](params.splice(0, 2)));
-                    name = "l";
-                    b = b == "m" ? "l" : "L";
-                }
-                if (name == "r") {
-                    data.push([b][concat](params));
-                } else while (params.length >= paramCounts[name]) {
-                    data.push([b][concat](params.splice(0, paramCounts[name])));
-                    if (!paramCounts[name]) {
-                        break;
-                    }
-                }
-            });
-        }
-        data.toString = R._path2string;
-        return data;
-    });
-    
-    R.parseTransformString = cacher(function (TString) {
-        if (!TString) {
-            return null;
-        }
-        var paramCounts = {r: 3, s: 4, t: 2, m: 6},
-            data = [];
-        if (R.is(TString, array) && R.is(TString[0], array)) { // rough assumption
-            data = pathClone(TString);
-        }
-        if (!data.length) {
-            Str(TString).replace(tCommand, function (a, b, c) {
-                var params = [],
-                    name = lowerCase.call(b);
-                c.replace(pathValues, function (a, b) {
-                    b && params.push(+b);
-                });
-                data.push([b][concat](params));
-            });
-        }
-        data.toString = R._path2string;
-        return data;
-    });
-    
-    R.findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {
-        var t1 = 1 - t,
-            t13 = pow(t1, 3),
-            t12 = pow(t1, 2),
-            t2 = t * t,
-            t3 = t2 * t,
-            x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x,
-            y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y,
-            mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x),
-            my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y),
-            nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x),
-            ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y),
-            ax = t1 * p1x + t * c1x,
-            ay = t1 * p1y + t * c1y,
-            cx = t1 * c2x + t * p2x,
-            cy = t1 * c2y + t * p2y,
-            alpha = (90 - math.atan2(mx - nx, my - ny) * 180 / PI);
-        (mx > nx || my < ny) && (alpha += 180);
-        return {
-            x: x,
-            y: y,
-            m: {x: mx, y: my},
-            n: {x: nx, y: ny},
-            start: {x: ax, y: ay},
-            end: {x: cx, y: cy},
-            alpha: alpha
-        };
-    };
-    var pathDimensions = cacher(function (path) {
-        if (!path) {
-            return {x: 0, y: 0, width: 0, height: 0};
-        }
-        path = path2curve(path);
-        var x = 0, 
-            y = 0,
-            X = [],
-            Y = [],
-            p;
-        for (var i = 0, ii = path.length; i < ii; i++) {
-            p = path[i];
-            if (p[0] == "M") {
-                x = p[1];
-                y = p[2];
-                X.push(x);
-                Y.push(y);
-            } else {
-                var dim = curveDim(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);
-                X = X[concat](dim.min.x, dim.max.x);
-                Y = Y[concat](dim.min.y, dim.max.y);
-                x = p[5];
-                y = p[6];
-            }
-        }
-        var xmin = mmin[apply](0, X),
-            ymin = mmin[apply](0, Y);
-        return {
-            x: xmin,
-            y: ymin,
-            width: mmax[apply](0, X) - xmin,
-            height: mmax[apply](0, Y) - ymin
-        };
-    }, null, function (o) {
-        return {
-            x: o.x,
-            y: o.y,
-            width: o.width,
-            height: o.height
-        };
-    }),
-        pathClone = function (pathArray) {
-            var res = [];
-            if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption
-                pathArray = R.parsePathString(pathArray);
-            }
-            for (var i = 0, ii = pathArray.length; i < ii; i++) {
-                res[i] = [];
-                for (var j = 0, jj = pathArray[i].length; j < jj; j++) {
-                    res[i][j] = pathArray[i][j];
-                }
-            }
-            res.toString = R._path2string;
-            return res;
-        },
-        pathToRelative = R._pathToRelative = cacher(function (pathArray) {
-            if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption
-                pathArray = R.parsePathString(pathArray);
-            }
-            var res = [],
-                x = 0,
-                y = 0,
-                mx = 0,
-                my = 0,
-                start = 0;
-            if (pathArray[0][0] == "M") {
-                x = pathArray[0][1];
-                y = pathArray[0][2];
-                mx = x;
-                my = y;
-                start++;
-                res.push(["M", x, y]);
-            }
-            for (var i = start, ii = pathArray.length; i < ii; i++) {
-                var r = res[i] = [],
-                    pa = pathArray[i];
-                if (pa[0] != lowerCase.call(pa[0])) {
-                    r[0] = lowerCase.call(pa[0]);
-                    switch (r[0]) {
-                        case "a":
-                            r[1] = pa[1];
-                            r[2] = pa[2];
-                            r[3] = pa[3];
-                            r[4] = pa[4];
-                            r[5] = pa[5];
-                            r[6] = +(pa[6] - x).toFixed(3);
-                            r[7] = +(pa[7] - y).toFixed(3);
-                            break;
-                        case "v":
-                            r[1] = +(pa[1] - y).toFixed(3);
-                            break;
-                        case "m":
-                            mx = pa[1];
-                            my = pa[2];
-                        default:
-                            for (var j = 1, jj = pa.length; j < jj; j++) {
-                                r[j] = +(pa[j] - ((j % 2) ? x : y)).toFixed(3);
-                            }
-                    }
-                } else {
-                    r = res[i] = [];
-                    if (pa[0] == "m") {
-                        mx = pa[1] + x;
-                        my = pa[2] + y;
-                    }
-                    for (var k = 0, kk = pa.length; k < kk; k++) {
-                        res[i][k] = pa[k];
-                    }
-                }
-                var len = res[i].length;
-                switch (res[i][0]) {
-                    case "z":
-                        x = mx;
-                        y = my;
-                        break;
-                    case "h":
-                        x += +res[i][len - 1];
-                        break;
-                    case "v":
-                        y += +res[i][len - 1];
-                        break;
-                    default:
-                        x += +res[i][len - 2];
-                        y += +res[i][len - 1];
-                }
-            }
-            res.toString = R._path2string;
-            return res;
-        }, 0, pathClone),
-        pathToAbsolute = R._pathToAbsolute = cacher(function (pathArray) {
-            if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption
-                pathArray = R.parsePathString(pathArray);
-            }
-            if (!pathArray || !pathArray.length) {
-                return [["M", 0, 0]];
-            }
-            var res = [],
-                x = 0,
-                y = 0,
-                mx = 0,
-                my = 0,
-                start = 0;
-            if (pathArray[0][0] == "M") {
-                x = +pathArray[0][1];
-                y = +pathArray[0][2];
-                mx = x;
-                my = y;
-                start++;
-                res[0] = ["M", x, y];
-            }
-            for (var r, pa, i = start, ii = pathArray.length; i < ii; i++) {
-                res.push(r = []);
-                pa = pathArray[i];
-                if (pa[0] != upperCase.call(pa[0])) {
-                    r[0] = upperCase.call(pa[0]);
-                    switch (r[0]) {
-                        case "A":
-                            r[1] = pa[1];
-                            r[2] = pa[2];
-                            r[3] = pa[3];
-                            r[4] = pa[4];
-                            r[5] = pa[5];
-                            r[6] = +(pa[6] + x);
-                            r[7] = +(pa[7] + y);
-                            break;
-                        case "V":
-                            r[1] = +pa[1] + y;
-                            break;
-                        case "H":
-                            r[1] = +pa[1] + x;
-                            break;
-                        case "R":
-                            var dots = [x, y][concat](pa.slice(1));
-                            for (var j = 2, jj = dots.length; j < jj; j++) {
-                                dots[j] = +dots[j] + x;
-                                dots[++j] = +dots[j] + y;
-                            }
-                            res.pop();
-                            res = res[concat](catmullRom2bezier(dots));
-                            break;
-                        case "M":
-                            mx = +pa[1] + x;
-                            my = +pa[2] + y;
-                        default:
-                            for (j = 1, jj = pa.length; j < jj; j++) {
-                                r[j] = +pa[j] + ((j % 2) ? x : y);
-                            }
-                    }
-                } else if (pa[0] == "R") {
-                    dots = [x, y][concat](pa.slice(1));
-                    res.pop();
-                    res = res[concat](catmullRom2bezier(dots));
-                    r = ["R"][concat](pa.slice(-2));
-                } else {
-                    for (var k = 0, kk = pa.length; k < kk; k++) {
-                        r[k] = pa[k];
-                    }
-                }
-                switch (r[0]) {
-                    case "Z":
-                        x = mx;
-                        y = my;
-                        break;
-                    case "H":
-                        x = r[1];
-                        break;
-                    case "V":
-                        y = r[1];
-                        break;
-                    case "M":
-                        mx = r[r.length - 2];
-                        my = r[r.length - 1];
-                    default:
-                        x = r[r.length - 2];
-                        y = r[r.length - 1];
-                }
-            }
-            res.toString = R._path2string;
-            return res;
-        }, null, pathClone),
-        l2c = function (x1, y1, x2, y2) {
-            return [x1, y1, x2, y2, x2, y2];
-        },
-        q2c = function (x1, y1, ax, ay, x2, y2) {
-            var _13 = 1 / 3,
-                _23 = 2 / 3;
-            return [
-                    _13 * x1 + _23 * ax,
-                    _13 * y1 + _23 * ay,
-                    _13 * x2 + _23 * ax,
-                    _13 * y2 + _23 * ay,
-                    x2,
-                    y2
-                ];
-        },
-        a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {
-            // for more information of where this math came from visit:
-            // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes
-            var _120 = PI * 120 / 180,
-                rad = PI / 180 * (+angle || 0),
-                res = [],
-                xy,
-                rotate = cacher(function (x, y, rad) {
-                    var X = x * math.cos(rad) - y * math.sin(rad),
-                        Y = x * math.sin(rad) + y * math.cos(rad);
-                    return {x: X, y: Y};
-                });
-            if (!recursive) {
-                xy = rotate(x1, y1, -rad);
-                x1 = xy.x;
-                y1 = xy.y;
-                xy = rotate(x2, y2, -rad);
-                x2 = xy.x;
-                y2 = xy.y;
-                var cos = math.cos(PI / 180 * angle),
-                    sin = math.sin(PI / 180 * angle),
-                    x = (x1 - x2) / 2,
-                    y = (y1 - y2) / 2;
-                var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);
-                if (h > 1) {
-                    h = math.sqrt(h);
-                    rx = h * rx;
-                    ry = h * ry;
-                }
-                var rx2 = rx * rx,
-                    ry2 = ry * ry,
-                    k = (large_arc_flag == sweep_flag ? -1 : 1) *
-                        math.sqrt(abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x))),
-                    cx = k * rx * y / ry + (x1 + x2) / 2,
-                    cy = k * -ry * x / rx + (y1 + y2) / 2,
-                    f1 = math.asin(((y1 - cy) / ry).toFixed(9)),
-                    f2 = math.asin(((y2 - cy) / ry).toFixed(9));
-
-                f1 = x1 < cx ? PI - f1 : f1;
-                f2 = x2 < cx ? PI - f2 : f2;
-                f1 < 0 && (f1 = PI * 2 + f1);
-                f2 < 0 && (f2 = PI * 2 + f2);
-                if (sweep_flag && f1 > f2) {
-                    f1 = f1 - PI * 2;
-                }
-                if (!sweep_flag && f2 > f1) {
-                    f2 = f2 - PI * 2;
-                }
-            } else {
-                f1 = recursive[0];
-                f2 = recursive[1];
-                cx = recursive[2];
-                cy = recursive[3];
-            }
-            var df = f2 - f1;
-            if (abs(df) > _120) {
-                var f2old = f2,
-                    x2old = x2,
-                    y2old = y2;
-                f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);
-                x2 = cx + rx * math.cos(f2);
-                y2 = cy + ry * math.sin(f2);
-                res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);
-            }
-            df = f2 - f1;
-            var c1 = math.cos(f1),
-                s1 = math.sin(f1),
-                c2 = math.cos(f2),
-                s2 = math.sin(f2),
-                t = math.tan(df / 4),
-                hx = 4 / 3 * rx * t,
-                hy = 4 / 3 * ry * t,
-                m1 = [x1, y1],
-                m2 = [x1 + hx * s1, y1 - hy * c1],
-                m3 = [x2 + hx * s2, y2 - hy * c2],
-                m4 = [x2, y2];
-            m2[0] = 2 * m1[0] - m2[0];
-            m2[1] = 2 * m1[1] - m2[1];
-            if (recursive) {
-                return [m2, m3, m4][concat](res);
-            } else {
-                res = [m2, m3, m4][concat](res).join()[split](",");
-                var newres = [];
-                for (var i = 0, ii = res.length; i < ii; i++) {
-                    newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;
-                }
-                return newres;
-            }
-        },
-        findDotAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {
-            var t1 = 1 - t;
-            return {
-                x: pow(t1, 3) * p1x + pow(t1, 2) * 3 * t * c1x + t1 * 3 * t * t * c2x + pow(t, 3) * p2x,
-                y: pow(t1, 3) * p1y + pow(t1, 2) * 3 * t * c1y + t1 * 3 * t * t * c2y + pow(t, 3) * p2y
-            };
-        },
-        curveDim = cacher(function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {
-            var a = (c2x - 2 * c1x + p1x) - (p2x - 2 * c2x + c1x),
-                b = 2 * (c1x - p1x) - 2 * (c2x - c1x),
-                c = p1x - c1x,
-                t1 = (-b + math.sqrt(b * b - 4 * a * c)) / 2 / a,
-                t2 = (-b - math.sqrt(b * b - 4 * a * c)) / 2 / a,
-                y = [p1y, p2y],
-                x = [p1x, p2x],
-                dot;
-            abs(t1) > "1e12" && (t1 = .5);
-            abs(t2) > "1e12" && (t2 = .5);
-            if (t1 > 0 && t1 < 1) {
-                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1);
-                x.push(dot.x);
-                y.push(dot.y);
-            }
-            if (t2 > 0 && t2 < 1) {
-                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t2);
-                x.push(dot.x);
-                y.push(dot.y);
-            }
-            a = (c2y - 2 * c1y + p1y) - (p2y - 2 * c2y + c1y);
-            b = 2 * (c1y - p1y) - 2 * (c2y - c1y);
-            c = p1y - c1y;
-            t1 = (-b + math.sqrt(b * b - 4 * a * c)) / 2 / a;
-            t2 = (-b - math.sqrt(b * b - 4 * a * c)) / 2 / a;
-            abs(t1) > "1e12" && (t1 = .5);
-            abs(t2) > "1e12" && (t2 = .5);
-            if (t1 > 0 && t1 < 1) {
-                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1);
-                x.push(dot.x);
-                y.push(dot.y);
-            }
-            if (t2 > 0 && t2 < 1) {
-                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t2);
-                x.push(dot.x);
-                y.push(dot.y);
-            }
-            return {
-                min: {x: mmin[apply](0, x), y: mmin[apply](0, y)},
-                max: {x: mmax[apply](0, x), y: mmax[apply](0, y)}
-            };
-        }),
-        path2curve = R._path2curve = cacher(function (path, path2) {
-            var p = pathToAbsolute(path),
-                p2 = path2 && pathToAbsolute(path2),
-                attrs = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},
-                attrs2 = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},
-                processPath = function (path, d) {
-                    var nx, ny;
-                    if (!path) {
-                        return ["C", d.x, d.y, d.x, d.y, d.x, d.y];
-                    }
-                    !(path[0] in {T:1, Q:1}) && (d.qx = d.qy = null);
-                    switch (path[0]) {
-                        case "M":
-                            d.X = path[1];
-                            d.Y = path[2];
-                            break;
-                        case "A":
-                            path = ["C"][concat](a2c[apply](0, [d.x, d.y][concat](path.slice(1))));
-                            break;
-                        case "S":
-                            nx = d.x + (d.x - (d.bx || d.x));
-                            ny = d.y + (d.y - (d.by || d.y));
-                            path = ["C", nx, ny][concat](path.slice(1));
-                            break;
-                        case "T":
-                            d.qx = d.x + (d.x - (d.qx || d.x));
-                            d.qy = d.y + (d.y - (d.qy || d.y));
-                            path = ["C"][concat](q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));
-                            break;
-                        case "Q":
-                            d.qx = path[1];
-                            d.qy = path[2];
-                            path = ["C"][concat](q2c(d.x, d.y, path[1], path[2], path[3], path[4]));
-                            break;
-                        case "L":
-                            path = ["C"][concat](l2c(d.x, d.y, path[1], path[2]));
-                            break;
-                        case "H":
-                            path = ["C"][concat](l2c(d.x, d.y, path[1], d.y));
-                            break;
-                        case "V":
-                            path = ["C"][concat](l2c(d.x, d.y, d.x, path[1]));
-                            break;
-                        case "Z":
-                            path = ["C"][concat](l2c(d.x, d.y, d.X, d.Y));
-                            break;
-                    }
-                    return path;
-                },
-                fixArc = function (pp, i) {
-                    if (pp[i].length > 7) {
-                        pp[i].shift();
-                        var pi = pp[i];
-                        while (pi.length) {
-                            pp.splice(i++, 0, ["C"][concat](pi.splice(0, 6)));
-                        }
-                        pp.splice(i, 1);
-                        ii = mmax(p.length, p2 && p2.length || 0);
-                    }
-                },
-                fixM = function (path1, path2, a1, a2, i) {
-                    if (path1 && path2 && path1[i][0] == "M" && path2[i][0] != "M") {
-                        path2.splice(i, 0, ["M", a2.x, a2.y]);
-                        a1.bx = 0;
-                        a1.by = 0;
-                        a1.x = path1[i][1];
-                        a1.y = path1[i][2];
-                        ii = mmax(p.length, p2 && p2.length || 0);
-                    }
-                };
-            for (var i = 0, ii = mmax(p.length, p2 && p2.length || 0); i < ii; i++) {
-                p[i] = processPath(p[i], attrs);
-                fixArc(p, i);
-                p2 && (p2[i] = processPath(p2[i], attrs2));
-                p2 && fixArc(p2, i);
-                fixM(p, p2, attrs, attrs2, i);
-                fixM(p2, p, attrs2, attrs, i);
-                var seg = p[i],
-                    seg2 = p2 && p2[i],
-                    seglen = seg.length,
-                    seg2len = p2 && seg2.length;
-                attrs.x = seg[seglen - 2];
-                attrs.y = seg[seglen - 1];
-                attrs.bx = toFloat(seg[seglen - 4]) || attrs.x;
-                attrs.by = toFloat(seg[seglen - 3]) || attrs.y;
-                attrs2.bx = p2 && (toFloat(seg2[seg2len - 4]) || attrs2.x);
-                attrs2.by = p2 && (toFloat(seg2[seg2len - 3]) || attrs2.y);
-                attrs2.x = p2 && seg2[seg2len - 2];
-                attrs2.y = p2 && seg2[seg2len - 1];
-            }
-            return p2 ? [p, p2] : p;
-        }, null, pathClone),
-        parseDots = R._parseDots = cacher(function (gradient) {
-            var dots = [];
-            for (var i = 0, ii = gradient.length; i < ii; i++) {
-                var dot = {},
-                    par = gradient[i].match(/^([^:]*):?([\d\.]*)/);
-                dot.color = R.getRGB(par[1]);
-                if (dot.color.error) {
-                    return null;
-                }
-                dot.color = dot.color.hex;
-                par[2] && (dot.offset = par[2] + "%");
-                dots.push(dot);
-            }
-            for (i = 1, ii = dots.length - 1; i < ii; i++) {
-                if (!dots[i].offset) {
-                    var start = toFloat(dots[i - 1].offset || 0),
-                        end = 0;
-                    for (var j = i + 1; j < ii; j++) {
-                        if (dots[j].offset) {
-                            end = dots[j].offset;
-                            break;
-                        }
-                    }
-                    if (!end) {
-                        end = 100;
-                        j = ii;
-                    }
-                    end = toFloat(end);
-                    var d = (end - start) / (j - i + 1);
-                    for (; i < j; i++) {
-                        start += d;
-                        dots[i].offset = start + "%";
-                    }
-                }
-            }
-            return dots;
-        }),
-        tear = R._tear = function (el, paper) {
-            el == paper.top && (paper.top = el.prev);
-            el == paper.bottom && (paper.bottom = el.next);
-            el.next && (el.next.prev = el.prev);
-            el.prev && (el.prev.next = el.next);
-        },
-        tofront = R._tofront = function (el, paper) {
-            if (paper.top === el) {
-                return;
-            }
-            tear(el, paper);
-            el.next = null;
-            el.prev = paper.top;
-            paper.top.next = el;
-            paper.top = el;
-        },
-        toback = R._toback = function (el, paper) {
-            if (paper.bottom === el) {
-                return;
-            }
-            tear(el, paper);
-            el.next = paper.bottom;
-            el.prev = null;
-            paper.bottom.prev = el;
-            paper.bottom = el;
-        },
-        insertafter = R._insertafter = function (el, el2, paper) {
-            tear(el, paper);
-            el2 == paper.top && (paper.top = el);
-            el2.next && (el2.next.prev = el);
-            el.next = el2.next;
-            el.prev = el2;
-            el2.next = el;
-        },
-        insertbefore = R._insertbefore = function (el, el2, paper) {
-            tear(el, paper);
-            el2 == paper.bottom && (paper.bottom = el);
-            el2.prev && (el2.prev.next = el);
-            el.prev = el2.prev;
-            el2.prev = el;
-            el.next = el2;
-        },
-        removed = function (methodname) {
-            return function () {
-                throw new Error("Rapha\xebl: you are calling to method \u201c" + methodname + "\u201d of removed object");
-            };
-        },
-        extractTransform = R._extractTransform = function (el, tstr) {
-            if (tstr == null) {
-                return el._.transform;
-            }
-            tstr = Str(tstr).replace(/\.{3}|\u2026/g, el._.transform || E);
-            var tdata = R.parseTransformString(tstr),
-                deg = 0,
-                dx = 0,
-                dy = 0,
-                sx = 1,
-                sy = 1,
-                _ = el._,
-                m = new Matrix;
-            _.transform = tdata || [];
-            if (tdata) {
-                for (var i = 0, ii = tdata.length; i < ii; i++) {
-                    var t = tdata[i],
-                        tlen = t.length,
-                        command = Str(t[0]).toLowerCase(),
-                        absolute = t[0] != command,
-                        inver = absolute ? m.invert() : 0,
-                        x1,
-                        y1,
-                        x2,
-                        y2,
-                        bb;
-                    if (command == "t" && tlen == 3) {
-                        if (absolute) {
-                            x1 = inver.x(0, 0);
-                            y1 = inver.y(0, 0);
-                            x2 = inver.x(t[1], t[2]);
-                            y2 = inver.y(t[1], t[2]);
-                            m.translate(x2 - x1, y2 - y1);
-                        } else {
-                            m.translate(t[1], t[2]);
-                        }
-                    } else if (command == "r") {
-                        if (tlen == 2) {
-                            bb = bb || el.getBBox(1);
-                            m.rotate(t[1], bb.x + bb.width / 2, bb.y + bb.height / 2);
-                            deg += t[1];
-                        } else if (tlen == 4) {
-                            if (absolute) {
-                                x2 = inver.x(t[2], t[3]);
-                                y2 = inver.y(t[2], t[3]);
-                                m.rotate(t[1], x2, y2);
-                            } else {
-                                m.rotate(t[1], t[2], t[3]);
-                            }
-                            deg += t[1];
-                        }
-                    } else if (command == "s") {
-                        if (tlen == 2 || tlen == 3) {
-                            bb = bb || el.getBBox(1);
-                            m.scale(t[1], t[tlen - 1], bb.x + bb.width / 2, bb.y + bb.height / 2);
-                            sx *= t[1];
-                            sy *= t[tlen - 1];
-                        } else if (tlen == 5) {
-                            if (absolute) {
-                                x2 = inver.x(t[3], t[4]);
-                                y2 = inver.y(t[3], t[4]);
-                                m.scale(t[1], t[2], x2, y2);
-                            } else {
-                                m.scale(t[1], t[2], t[3], t[4]);
-                            }
-                            sx *= t[1];
-                            sy *= t[2];
-                        }
-                    } else if (command == "m" && tlen == 7) {
-                        m.add(t[1], t[2], t[3], t[4], t[5], t[6]);
-                    }
-                    _.dirtyT = 1;
-                    el.matrix = m;
-                }
-            }
-
-            el.matrix = m;
-
-            _.sx = sx;
-            _.sy = sy;
-            _.deg = deg;
-            _.dx = dx = m.e;
-            _.dy = dy = m.f;
-
-            if (sx == 1 && sy == 1 && !deg && _.bbox) {
-                _.bbox.x += +dx;
-                _.bbox.y += +dy;
-            } else {
-                _.dirtyT = 1;
-            }
-        },
-        getEmpty = function (item) {
-            var l = item[0];
-            switch (l.toLowerCase()) {
-                case "t": return [l, 0, 0];
-                case "m": return [l, 1, 0, 0, 1, 0, 0];
-                case "r": if (item.length == 4) {
-                    return [l, 0, item[2], item[3]];
-                } else {
-                    return [l, 0];
-                }
-                case "s": if (item.length == 5) {
-                    return [l, 1, 1, item[3], item[4]];
-                } else if (item.length == 3) {
-                    return [l, 1, 1];
-                } else {
-                    return [l, 1];
-                }
-            }
-        },
-        equaliseTransform = R._equaliseTransform = function (t1, t2) {
-            t2 = Str(t2).replace(/\.{3}|\u2026/g, t1);
-            t1 = R.parseTransformString(t1) || [];
-            t2 = R.parseTransformString(t2) || [];
-            var maxlength = mmax(t1.length, t2.length),
-                from = [],
-                to = [],
-                i = 0, j, jj,
-                tt1, tt2;
-            for (; i < maxlength; i++) {
-                tt1 = t1[i] || getEmpty(t2[i]);
-                tt2 = t2[i] || getEmpty(tt1);
-                if ((tt1[0] != tt2[0]) ||
-                    (tt1[0].toLowerCase() == "r" && (tt1[2] != tt2[2] || tt1[3] != tt2[3])) ||
-                    (tt1[0].toLowerCase() == "s" && (tt1[3] != tt2[3] || tt1[4] != tt2[4]))
-                    ) {
-                    return;
-                }
-                from[i] = [];
-                to[i] = [];
-                for (j = 0, jj = mmax(tt1.length, tt2.length); j < jj; j++) {
-                    j in tt1 && (from[i][j] = tt1[j]);
-                    j in tt2 && (to[i][j] = tt2[j]);
-                }
-            }
-            return {
-                from: from,
-                to: to
-            };
-        };
-    R._getContainer = function (x, y, w, h) {
-        var container;
-        container = h == null && !R.is(x, "object") ? g.doc.getElementById(x) : x;
-        if (container == null) {
-            return;
-        }
-        if (container.tagName) {
-            if (y == null) {
-                return {
-                    container: container,
-                    width: container.style.pixelWidth || container.offsetWidth,
-                    height: container.style.pixelHeight || container.offsetHeight
-                };
-            } else {
-                return {
-                    container: container,
-                    width: y,
-                    height: w
-                };
-            }
-        }
-        return {
-            container: 1,
-            x: x,
-            y: y,
-            width: w,
-            height: h
-        };
-    };
-    
-    R.pathToRelative = pathToRelative;
-    R._engine = {};
-    
-    R.path2curve = path2curve;
-    
-    R.matrix = function (a, b, c, d, e, f) {
-        return new Matrix(a, b, c, d, e, f);
-    };
-    function Matrix(a, b, c, d, e, f) {
-        if (a != null) {
-            this.a = +a;
-            this.b = +b;
-            this.c = +c;
-            this.d = +d;
-            this.e = +e;
-            this.f = +f;
-        } else {
-            this.a = 1;
-            this.b = 0;
-            this.c = 0;
-            this.d = 1;
-            this.e = 0;
-            this.f = 0;
-        }
-    }
-    (function (matrixproto) {
-        
-        matrixproto.add = function (a, b, c, d, e, f) {
-            var out = [[], [], []],
-                m = [[this.a, this.c, this.e], [this.b, this.d, this.f], [0, 0, 1]],
-                matrix = [[a, c, e], [b, d, f], [0, 0, 1]],
-                x, y, z, res;
-
-            if (a && a instanceof Matrix) {
-                matrix = [[a.a, a.c, a.e], [a.b, a.d, a.f], [0, 0, 1]];
-            }
-
-            for (x = 0; x < 3; x++) {
-                for (y = 0; y < 3; y++) {
-                    res = 0;
-                    for (z = 0; z < 3; z++) {
-                        res += m[x][z] * matrix[z][y];
-                    }
-                    out[x][y] = res;
-                }
-            }
-            this.a = out[0][0];
-            this.b = out[1][0];
-            this.c = out[0][1];
-            this.d = out[1][1];
-            this.e = out[0][2];
-            this.f = out[1][2];
-        };
-        
-        matrixproto.invert = function () {
-            var me = this,
-                x = me.a * me.d - me.b * me.c;
-            return new Matrix(me.d / x, -me.b / x, -me.c / x, me.a / x, (me.c * me.f - me.d * me.e) / x, (me.b * me.e - me.a * me.f) / x);
-        };
-        
-        matrixproto.clone = function () {
-            return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);
-        };
-        
-        matrixproto.translate = function (x, y) {
-            this.add(1, 0, 0, 1, x, y);
-        };
-        
-        matrixproto.scale = function (x, y, cx, cy) {
-            y == null && (y = x);
-            (cx || cy) && this.add(1, 0, 0, 1, cx, cy);
-            this.add(x, 0, 0, y, 0, 0);
-            (cx || cy) && this.add(1, 0, 0, 1, -cx, -cy);
-        };
-        
-        matrixproto.rotate = function (a, x, y) {
-            a = R.rad(a);
-            x = x || 0;
-            y = y || 0;
-            var cos = +math.cos(a).toFixed(9),
-                sin = +math.sin(a).toFixed(9);
-            this.add(cos, sin, -sin, cos, x, y);
-            this.add(1, 0, 0, 1, -x, -y);
-        };
-        
-        matrixproto.x = function (x, y) {
-            return x * this.a + y * this.c + this.e;
-        };
-        
-        matrixproto.y = function (x, y) {
-            return x * this.b + y * this.d + this.f;
-        };
-        matrixproto.get = function (i) {
-            return +this[Str.fromCharCode(97 + i)].toFixed(4);
-        };
-        matrixproto.toString = function () {
-            return R.svg ?
-                "matrix(" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() + ")" :
-                [this.get(0), this.get(2), this.get(1), this.get(3), 0, 0].join();
-        };
-        matrixproto.toFilter = function () {
-            return "progid:DXImageTransform.Microsoft.Matrix(M11=" + this.get(0) +
-                ", M12=" + this.get(2) + ", M21=" + this.get(1) + ", M22=" + this.get(3) +
-                ", Dx=" + this.get(4) + ", Dy=" + this.get(5) + ", sizingmethod='auto expand')";
-        };
-        matrixproto.offset = function () {
-            return [this.e.toFixed(4), this.f.toFixed(4)];
-        };
-        function norm(a) {
-            return a[0] * a[0] + a[1] * a[1];
-        }
-        function normalize(a) {
-            var mag = math.sqrt(norm(a));
-            a[0] && (a[0] /= mag);
-            a[1] && (a[1] /= mag);
-        }
-        
-        matrixproto.split = function () {
-            var out = {};
-            // translation
-            out.dx = this.e;
-            out.dy = this.f;
-
-            // scale and shear
-            var row = [[this.a, this.c], [this.b, this.d]];
-            out.scalex = math.sqrt(norm(row[0]));
-            normalize(row[0]);
-
-            out.shear = row[0][0] * row[1][0] + row[0][1] * row[1][1];
-            row[1] = [row[1][0] - row[0][0] * out.shear, row[1][1] - row[0][1] * out.shear];
-
-            out.scaley = math.sqrt(norm(row[1]));
-            normalize(row[1]);
-            out.shear /= out.scaley;
-
-            // rotation
-            var sin = -row[0][1],
-                cos = row[1][1];
-            if (cos < 0) {
-                out.rotate = R.deg(math.acos(cos));
-                if (sin < 0) {
-                    out.rotate = 360 - out.rotate;
-                }
-            } else {
-                out.rotate = R.deg(math.asin(sin));
-            }
-
-            out.isSimple = !+out.shear.toFixed(9) && (out.scalex.toFixed(9) == out.scaley.toFixed(9) || !out.rotate);
-            out.isSuperSimple = !+out.shear.toFixed(9) && out.scalex.toFixed(9) == out.scaley.toFixed(9) && !out.rotate;
-            out.noRotation = !+out.shear.toFixed(9) && !out.rotate;
-            return out;
-        };
-        
-        matrixproto.toTransformString = function (shorter) {
-            var s = shorter || this[split]();
-            if (s.isSimple) {
-                return "t" + [s.dx, s.dy] + "s" + [s.scalex, s.scaley, 0, 0] + "r" + [s.rotate, 0, 0];
-            } else {
-                return "m" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)];
-            }
-        };
-    })(Matrix.prototype);
-
-    // WebKit rendering bug workaround method
-    var version = navigator.userAgent.match(/Version\/(.*?)\s/) || navigator.userAgent.match(/Chrome\/(\d+)/);
-    if ((navigator.vendor == "Apple Computer, Inc.") && (version && version[1] < 4 || navigator.platform.slice(0, 2) == "iP") ||
-        (navigator.vendor == "Google Inc." && version && version[1] < 8)) {
-        
-        paperproto.safari = function () {
-            var rect = this.rect(-99, -99, this.width + 99, this.height + 99).attr({stroke: "none"});
-            setTimeout(function () {rect.remove();});
-        };
-    } else {
-        paperproto.safari = fun;
-    }
- 
-    var preventDefault = function () {
-        this.returnValue = false;
-    },
-    preventTouch = function () {
-        return this.originalEvent.preventDefault();
-    },
-    stopPropagation = function () {
-        this.cancelBubble = true;
-    },
-    stopTouch = function () {
-        return this.originalEvent.stopPropagation();
-    },
-    addEvent = (function () {
-        if (g.doc.addEventListener) {
-            return function (obj, type, fn, element) {
-                var realName = supportsTouch && touchMap[type] ? touchMap[type] : type,
-                    f = function (e) {
-                        var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,
-                            scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,
-                            x = e.clientX + scrollX,
-                            y = e.clientY + scrollY;
-                    if (supportsTouch && touchMap[has](type)) {
-                        for (var i = 0, ii = e.targetTouches && e.targetTouches.length; i < ii; i++) {
-                            if (e.targetTouches[i].target == obj) {
-                                var olde = e;
-                                e = e.targetTouches[i];
-                                e.originalEvent = olde;
-                                e.preventDefault = preventTouch;
-                                e.stopPropagation = stopTouch;
-                                break;
-                            }
-                        }
-                    }
-                    return fn.call(element, e, x, y);
-                };
-                obj.addEventListener(realName, f, false);
-                return function () {
-                    obj.removeEventListener(realName, f, false);
-                    return true;
-                };
-            };
-        } else if (g.doc.attachEvent) {
-            return function (obj, type, fn, element) {
-                var f = function (e) {
-                    e = e || g.win.event;
-                    var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,
-                        scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,
-                        x = e.clientX + scrollX,
-                        y = e.clientY + scrollY;
-                    e.preventDefault = e.preventDefault || preventDefault;
-                    e.stopPropagation = e.stopPropagation || stopPropagation;
-                    return fn.call(element, e, x, y);
-                };
-                obj.attachEvent("on" + type, f);
-                var detacher = function () {
-                    obj.detachEvent("on" + type, f);
-                    return true;
-                };
-                return detacher;
-            };
-        }
-    })(),
-    drag = [],
-    dragMove = function (e) {
-        var x = e.clientX,
-            y = e.clientY,
-            scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,
-            scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,
-            dragi,
-            j = drag.length;
-        while (j--) {
-            dragi = drag[j];
-            if (supportsTouch) {
-                var i = e.touches.length,
-                    touch;
-                while (i--) {
-                    touch = e.touches[i];
-                    if (touch.identifier == dragi.el._drag.id) {
-                        x = touch.clientX;
-                        y = touch.clientY;
-                        (e.originalEvent ? e.originalEvent : e).preventDefault();
-                        break;
-                    }
-                }
-            } else {
-                e.preventDefault();
-            }
-            var node = dragi.el.node,
-                o,
-                next = node.nextSibling,
-                parent = node.parentNode,
-                display = node.style.display;
-            g.win.opera && parent.removeChild(node);
-            node.style.display = "none";
-            o = dragi.el.paper.getElementByPoint(x, y);
-            node.style.display = display;
-            g.win.opera && (next ? parent.insertBefore(node, next) : parent.appendChild(node));
-            o && eve("drag.over." + dragi.el.id, dragi.el, o);
-            x += scrollX;
-            y += scrollY;
-            eve("drag.move." + dragi.el.id, dragi.move_scope || dragi.el, x - dragi.el._drag.x, y - dragi.el._drag.y, x, y, e);
-        }
-    },
-    dragUp = function (e) {
-        R.unmousemove(dragMove).unmouseup(dragUp);
-        var i = drag.length,
-            dragi;
-        while (i--) {
-            dragi = drag[i];
-            dragi.el._drag = {};
-            eve("drag.end." + dragi.el.id, dragi.end_scope || dragi.start_scope || dragi.move_scope || dragi.el, e);
-        }
-        drag = [];
-    },
-    
-    elproto = R.el = {};
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    for (var i = events.length; i--;) {
-        (function (eventName) {
-            R[eventName] = elproto[eventName] = function (fn, scope) {
-                if (R.is(fn, "function")) {
-                    this.events = this.events || [];
-                    this.events.push({name: eventName, f: fn, unbind: addEvent(this.shape || this.node || g.doc, eventName, fn, scope || this)});
-                }
-                return this;
-            };
-            R["un" + eventName] = elproto["un" + eventName] = function (fn) {
-                var events = this.events,
-                    l = events.length;
-                while (l--) if (events[l].name == eventName && events[l].f == fn) {
-                    events[l].unbind();
-                    events.splice(l, 1);
-                    !events.length && delete this.events;
-                    return this;
-                }
-                return this;
-            };
-        })(events[i]);
-    }
-    
-    
-    elproto.data = function (key, value) {
-        var data = eldata[this.id] = eldata[this.id] || {};
-        if (arguments.length == 1) {
-            if (R.is(key, "object")) {
-                for (var i in key) if (key[has](i)) {
-                    this.data(i, key[i]);
-                }
-                return this;
-            }
-            eve("data.get." + this.id, this, data[key], key);
-            return data[key];
-        }
-        data[key] = value;
-        eve("data.set." + this.id, this, value, key);
-        return this;
-    };
-    
-    elproto.removeData = function (key) {
-        if (key == null) {
-            eldata[this.id] = {};
-        } else {
-            eldata[this.id] && delete eldata[this.id][key];
-        }
-        return this;
-    };
-    
-    elproto.hover = function (f_in, f_out, scope_in, scope_out) {
-        return this.mouseover(f_in, scope_in).mouseout(f_out, scope_out || scope_in);
-    };
-    
-    elproto.unhover = function (f_in, f_out) {
-        return this.unmouseover(f_in).unmouseout(f_out);
-    };
-    
-    elproto.drag = function (onmove, onstart, onend, move_scope, start_scope, end_scope) {
-        function start(e) {
-            (e.originalEvent || e).preventDefault();
-            var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,
-                scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft;
-            this._drag.x = e.clientX + scrollX;
-            this._drag.y = e.clientY + scrollY;
-            this._drag.id = e.identifier;
-            !drag.length && R.mousemove(dragMove).mouseup(dragUp);
-            drag.push({el: this, move_scope: move_scope, start_scope: start_scope, end_scope: end_scope});
-            onstart && eve.on("drag.start." + this.id, onstart);
-            onmove && eve.on("drag.move." + this.id, onmove);
-            onend && eve.on("drag.end." + this.id, onend);
-            eve("drag.start." + this.id, start_scope || move_scope || this, e.clientX + scrollX, e.clientY + scrollY, e);
-        }
-        this._drag = {};
-        this.mousedown(start);
-        return this;
-    };
-    
-    elproto.onDragOver = function (f) {
-        f ? eve.on("drag.over." + this.id, f) : eve.unbind("drag.over." + this.id);
-    };
-    
-    elproto.undrag = function () {
-        var i = drag.length;
-        while (i--) if (drag[i].el == this) {
-            R.unmousedown(drag[i].start);
-            drag.splice(i++, 1);
-            eve.unbind("drag.*." + this.id);
-        }
-        !drag.length && R.unmousemove(dragMove).unmouseup(dragUp);
-    };
-    
-    paperproto.circle = function (x, y, r) {
-        var out = R._engine.circle(this, x || 0, y || 0, r || 0);
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.rect = function (x, y, w, h, r) {
-        var out = R._engine.rect(this, x || 0, y || 0, w || 0, h || 0, r || 0);
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.ellipse = function (x, y, rx, ry) {
-        var out = R._engine.ellipse(this, x || 0, y || 0, rx || 0, ry || 0);
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.path = function (pathString) {
-        pathString && !R.is(pathString, string) && !R.is(pathString[0], array) && (pathString += E);
-        var out = R._engine.path(R.format[apply](R, arguments), this);
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.image = function (src, x, y, w, h) {
-        var out = R._engine.image(this, src || "about:blank", x || 0, y || 0, w || 0, h || 0);
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.text = function (x, y, text) {
-        var out = R._engine.text(this, x || 0, y || 0, Str(text));
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.set = function (itemsArray) {
-        !R.is(itemsArray, "array") && (itemsArray = Array.prototype.splice.call(arguments, 0, arguments.length));
-        var out = new Set(itemsArray);
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.setStart = function (set) {
-        this.__set__ = set || this.set();
-    };
-    
-    paperproto.setFinish = function (set) {
-        var out = this.__set__;
-        delete this.__set__;
-        return out;
-    };
-    
-    paperproto.setSize = function (width, height) {
-        return R._engine.setSize.call(this, width, height);
-    };
-    
-    paperproto.setViewBox = function (x, y, w, h, fit) {
-        return R._engine.setViewBox.call(this, x, y, w, h, fit);
-    };
-    
-    
-    paperproto.top = paperproto.bottom = null;
-    
-    paperproto.raphael = R;
-    var getOffset = function (elem) {
-        var box = elem.getBoundingClientRect(),
-            doc = elem.ownerDocument,
-            body = doc.body,
-            docElem = doc.documentElement,
-            clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
-            top  = box.top  + (g.win.pageYOffset || docElem.scrollTop || body.scrollTop ) - clientTop,
-            left = box.left + (g.win.pageXOffset || docElem.scrollLeft || body.scrollLeft) - clientLeft;
-        return {
-            y: top,
-            x: left
-        };
-    };
-    
-    paperproto.getElementByPoint = function (x, y) {
-        var paper = this,
-            svg = paper.canvas,
-            target = g.doc.elementFromPoint(x, y);
-        if (g.win.opera && target.tagName == "svg") {
-            var so = getOffset(svg),
-                sr = svg.createSVGRect();
-            sr.x = x - so.x;
-            sr.y = y - so.y;
-            sr.width = sr.height = 1;
-            var hits = svg.getIntersectionList(sr, null);
-            if (hits.length) {
-                target = hits[hits.length - 1];
-            }
-        }
-        if (!target) {
-            return null;
-        }
-        while (target.parentNode && target != svg.parentNode && !target.raphael) {
-            target = target.parentNode;
-        }
-        target == paper.canvas.parentNode && (target = svg);
-        target = target && target.raphael ? paper.getById(target.raphaelid) : null;
-        return target;
-    };
-    
-    paperproto.getById = function (id) {
-        var bot = this.bottom;
-        while (bot) {
-            if (bot.id == id) {
-                return bot;
-            }
-            bot = bot.next;
-        }
-        return null;
-    };
-    
-    paperproto.forEach = function (callback, thisArg) {
-        var bot = this.bottom;
-        while (bot) {
-            if (callback.call(thisArg, bot) === false) {
-                return this;
-            }
-            bot = bot.next;
-        }
-        return this;
-    };
-    function x_y() {
-        return this.x + S + this.y;
-    }
-    function x_y_w_h() {
-        return this.x + S + this.y + S + this.width + " \xd7 " + this.height;
-    }
-    
-    elproto.getBBox = function (isWithoutTransform) {
-        if (this.removed) {
-            return {};
-        }
-        var _ = this._;
-        if (isWithoutTransform) {
-            if (_.dirty || !_.bboxwt) {
-                this.realPath = getPath[this.type](this);
-                _.bboxwt = pathDimensions(this.realPath);
-                _.bboxwt.toString = x_y_w_h;
-                _.dirty = 0;
-            }
-            return _.bboxwt;
-        }
-        if (_.dirty || _.dirtyT || !_.bbox) {
-            if (_.dirty || !this.realPath) {
-                _.bboxwt = 0;
-                this.realPath = getPath[this.type](this);
-            }
-            _.bbox = pathDimensions(mapPath(this.realPath, this.matrix));
-            _.bbox.toString = x_y_w_h;
-            _.dirty = _.dirtyT = 0;
-        }
-        return _.bbox;
-    };
-    
-    elproto.clone = function () {
-        if (this.removed) {
-            return null;
-        }
-        var out = this.paper[this.type]().attr(this.attr());
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    elproto.glow = function (glow) {
-        if (this.type == "text") {
-            return null;
-        }
-        glow = glow || {};
-        var s = {
-            width: (glow.width || 10) + (+this.attr("stroke-width") || 1),
-            fill: glow.fill || false,
-            opacity: glow.opacity || .5,
-            offsetx: glow.offsetx || 0,
-            offsety: glow.offsety || 0,
-            color: glow.color || "#000"
-        },
-            c = s.width / 2,
-            r = this.paper,
-            out = r.set(),
-            path = this.realPath || getPath[this.type](this);
-        path = this.matrix ? mapPath(path, this.matrix) : path;
-        for (var i = 1; i < c + 1; i++) {
-            out.push(r.path(path).attr({
-                stroke: s.color,
-                fill: s.fill ? s.color : "none",
-                "stroke-linejoin": "round",
-                "stroke-linecap": "round",
-                "stroke-width": +(s.width / c * i).toFixed(3),
-                opacity: +(s.opacity / c).toFixed(3)
-            }));
-        }
-        return out.insertBefore(this).translate(s.offsetx, s.offsety);
-    };
-    var curveslengths = {},
-    getPointAtSegmentLength = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, length) {
-        var len = 0,
-            precision = 100,
-            name = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y].join(),
-            cache = curveslengths[name],
-            old, dot;
-        !cache && (curveslengths[name] = cache = {data: []});
-        cache.timer && clearTimeout(cache.timer);
-        cache.timer = setTimeout(function () {delete curveslengths[name];}, 2e3);
-        if (length != null && !cache.precision) {
-            var total = getPointAtSegmentLength(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y);
-            cache.precision = ~~total * 10;
-            cache.data = [];
-        }
-        precision = cache.precision || precision;
-        for (var i = 0; i < precision + 1; i++) {
-            if (cache.data[i * precision]) {
-                dot = cache.data[i * precision];
-            } else {
-                dot = R.findDotsAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, i / precision);
-                cache.data[i * precision] = dot;
-            }
-            i && (len += pow(pow(old.x - dot.x, 2) + pow(old.y - dot.y, 2), .5));
-            if (length != null && len >= length) {
-                return dot;
-            }
-            old = dot;
-        }
-        if (length == null) {
-            return len;
-        }
-    },
-    getLengthFactory = function (istotal, subpath) {
-        return function (path, length, onlystart) {
-            path = path2curve(path);
-            var x, y, p, l, sp = "", subpaths = {}, point,
-                len = 0;
-            for (var i = 0, ii = path.length; i < ii; i++) {
-                p = path[i];
-                if (p[0] == "M") {
-                    x = +p[1];
-                    y = +p[2];
-                } else {
-                    l = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);
-                    if (len + l > length) {
-                        if (subpath && !subpaths.start) {
-                            point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);
-                            sp += ["C" + point.start.x, point.start.y, point.m.x, point.m.y, point.x, point.y];
-                            if (onlystart) {return sp;}
-                            subpaths.start = sp;
-                            sp = ["M" + point.x, point.y + "C" + point.n.x, point.n.y, point.end.x, point.end.y, p[5], p[6]].join();
-                            len += l;
-                            x = +p[5];
-                            y = +p[6];
-                            continue;
-                        }
-                        if (!istotal && !subpath) {
-                            point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);
-                            return {x: point.x, y: point.y, alpha: point.alpha};
-                        }
-                    }
-                    len += l;
-                    x = +p[5];
-                    y = +p[6];
-                }
-                sp += p.shift() + p;
-            }
-            subpaths.end = sp;
-            point = istotal ? len : subpath ? subpaths : R.findDotsAtSegment(x, y, p[0], p[1], p[2], p[3], p[4], p[5], 1);
-            point.alpha && (point = {x: point.x, y: point.y, alpha: point.alpha});
-            return point;
-        };
-    };
-    var getTotalLength = getLengthFactory(1),
-        getPointAtLength = getLengthFactory(),
-        getSubpathsAtLength = getLengthFactory(0, 1);
-    
-    R.getTotalLength = getTotalLength;
-    
-    R.getPointAtLength = getPointAtLength;
-    
-    R.getSubpath = function (path, from, to) {
-        if (this.getTotalLength(path) - to < 1e-6) {
-            return getSubpathsAtLength(path, from).end;
-        }
-        var a = getSubpathsAtLength(path, to, 1);
-        return from ? getSubpathsAtLength(a, from).end : a;
-    };
-    
-    elproto.getTotalLength = function () {
-        if (this.type != "path") {return;}
-        if (this.node.getTotalLength) {
-            return this.node.getTotalLength();
-        }
-        return getTotalLength(this.attrs.path);
-    };
-    
-    elproto.getPointAtLength = function (length) {
-        if (this.type != "path") {return;}
-        return getPointAtLength(this.attrs.path, length);
-    };
-    
-    elproto.getSubpath = function (from, to) {
-        if (this.type != "path") {return;}
-        return R.getSubpath(this.attrs.path, from, to);
-    };
-    
-    var ef = R.easing_formulas = {
-        linear: function (n) {
-            return n;
-        },
-        "<": function (n) {
-            return pow(n, 1.7);
-        },
-        ">": function (n) {
-            return pow(n, .48);
-        },
-        "<>": function (n) {
-            var q = .48 - n / 1.04,
-                Q = math.sqrt(.1734 + q * q),
-                x = Q - q,
-                X = pow(abs(x), 1 / 3) * (x < 0 ? -1 : 1),
-                y = -Q - q,
-                Y = pow(abs(y), 1 / 3) * (y < 0 ? -1 : 1),
-                t = X + Y + .5;
-            return (1 - t) * 3 * t * t + t * t * t;
-        },
-        backIn: function (n) {
-            var s = 1.70158;
-            return n * n * ((s + 1) * n - s);
-        },
-        backOut: function (n) {
-            n = n - 1;
-            var s = 1.70158;
-            return n * n * ((s + 1) * n + s) + 1;
-        },
-        elastic: function (n) {
-            if (n == !!n) {
-                return n;
-            }
-            return pow(2, -10 * n) * math.sin((n - .075) * (2 * PI) / .3) + 1;
-        },
-        bounce: function (n) {
-            var s = 7.5625,
-                p = 2.75,
-                l;
-            if (n < (1 / p)) {
-                l = s * n * n;
-            } else {
-                if (n < (2 / p)) {
-                    n -= (1.5 / p);
-                    l = s * n * n + .75;
-                } else {
-                    if (n < (2.5 / p)) {
-                        n -= (2.25 / p);
-                        l = s * n * n + .9375;
-                    } else {
-                        n -= (2.625 / p);
-                        l = s * n * n + .984375;
-                    }
-                }
-            }
-            return l;
-        }
-    };
-    ef.easeIn = ef["ease-in"] = ef["<"];
-    ef.easeOut = ef["ease-out"] = ef[">"];
-    ef.easeInOut = ef["ease-in-out"] = ef["<>"];
-    ef["back-in"] = ef.backIn;
-    ef["back-out"] = ef.backOut;
-
-    var animationElements = [],
-        requestAnimFrame = window.requestAnimationFrame       ||
-                           window.webkitRequestAnimationFrame ||
-                           window.mozRequestAnimationFrame    ||
-                           window.oRequestAnimationFrame      ||
-                           window.msRequestAnimationFrame     ||
-                           function (callback) {
-                               setTimeout(callback, 16);
-                           },
-        animation = function () {
-            var Now = +new Date,
-                l = 0;
-            for (; l < animationElements.length; l++) {
-                var e = animationElements[l];
-                if (e.el.removed || e.paused) {
-                    continue;
-                }
-                var time = Now - e.start,
-                    ms = e.ms,
-                    easing = e.easing,
-                    from = e.from,
-                    diff = e.diff,
-                    to = e.to,
-                    t = e.t,
-                    that = e.el,
-                    set = {},
-                    now,
-                    init = {},
-                    key;
-                if (e.initstatus) {
-                    time = (e.initstatus * e.anim.top - e.prev) / (e.percent - e.prev) * ms;
-                    e.status = e.initstatus;
-                    delete e.initstatus;
-                    e.stop && animationElements.splice(l--, 1);
-                } else {
-                    e.status = (e.prev + (e.percent - e.prev) * (time / ms)) / e.anim.top;
-                }
-                if (time < 0) {
-                    continue;
-                }
-                if (time < ms) {
-                    var pos = easing(time / ms);
-                    for (var attr in from) if (from[has](attr)) {
-                        switch (availableAnimAttrs[attr]) {
-                            case nu:
-                                now = +from[attr] + pos * ms * diff[attr];
-                                break;
-                            case "colour":
-                                now = "rgb(" + [
-                                    upto255(round(from[attr].r + pos * ms * diff[attr].r)),
-                                    upto255(round(from[attr].g + pos * ms * diff[attr].g)),
-                                    upto255(round(from[attr].b + pos * ms * diff[attr].b))
-                                ].join(",") + ")";
-                                break;
-                            case "path":
-                                now = [];
-                                for (var i = 0, ii = from[attr].length; i < ii; i++) {
-                                    now[i] = [from[attr][i][0]];
-                                    for (var j = 1, jj = from[attr][i].length; j < jj; j++) {
-                                        now[i][j] = +from[attr][i][j] + pos * ms * diff[attr][i][j];
-                                    }
-                                    now[i] = now[i].join(S);
-                                }
-                                now = now.join(S);
-                                break;
-                            case "transform":
-                                if (diff[attr].real) {
-                                    now = [];
-                                    for (i = 0, ii = from[attr].length; i < ii; i++) {
-                                        now[i] = [from[attr][i][0]];
-                                        for (j = 1, jj = from[attr][i].length; j < jj; j++) {
-                                            now[i][j] = from[attr][i][j] + pos * ms * diff[attr][i][j];
-                                        }
-                                    }
-                                } else {
-                                    var get = function (i) {
-                                        return +from[attr][i] + pos * ms * diff[attr][i];
-                                    };
-                                    // now = [["r", get(2), 0, 0], ["t", get(3), get(4)], ["s", get(0), get(1), 0, 0]];
-                                    now = [["m", get(0), get(1), get(2), get(3), get(4), get(5)]];
-                                }
-                                break;
-                            case "csv":
-                                if (attr == "clip-rect") {
-                                    now = [];
-                                    i = 4;
-                                    while (i--) {
-                                        now[i] = +from[attr][i] + pos * ms * diff[attr][i];
-                                    }
-                                }
-                                break;
-                            default:
-                                var from2 = [][concat](from[attr]);
-                                now = [];
-                                i = that.paper.customAttributes[attr].length;
-                                while (i--) {
-                                    now[i] = +from2[i] + pos * ms * diff[attr][i];
-                                }
-                                break;
-                        }
-                        set[attr] = now;
-                    }
-                    that.attr(set);
-                    (function (id, that, anim) {
-                        setTimeout(function () {
-                            eve("anim.frame." + id, that, anim);
-                        });
-                    })(that.id, that, e.anim);
-                } else {
-                    (function(f, el, a) {
-                        setTimeout(function() {
-                            eve("anim.frame." + el.id, el, a);
-                            eve("anim.finish." + el.id, el, a);
-                            R.is(f, "function") && f.call(el);
-                        });
-                    })(e.callback, that, e.anim);
-                    that.attr(to);
-                    animationElements.splice(l--, 1);
-                    if (e.repeat > 1 && !e.next) {
-                        for (key in to) if (to[has](key)) {
-                            init[key] = e.totalOrigin[key];
-                        }
-                        e.el.attr(init);
-                        runAnimation(e.anim, e.el, e.anim.percents[0], null, e.totalOrigin, e.repeat - 1);
-                    }
-                    if (e.next && !e.stop) {
-                        runAnimation(e.anim, e.el, e.next, null, e.totalOrigin, e.repeat);
-                    }
-                }
-            }
-            R.svg && that && that.paper && that.paper.safari();
-            animationElements.length && requestAnimFrame(animation);
-        },
-        upto255 = function (color) {
-            return color > 255 ? 255 : color < 0 ? 0 : color;
-        };
-    
-    elproto.animateWith = function (element, anim, params, ms, easing, callback) {
-        var a = params ? R.animation(params, ms, easing, callback) : anim;
-            status = element.status(anim);
-        return this.animate(a).status(a, status * anim.ms / a.ms);
-    };
-    function CubicBezierAtTime(t, p1x, p1y, p2x, p2y, duration) {
-        var cx = 3 * p1x,
-            bx = 3 * (p2x - p1x) - cx,
-            ax = 1 - cx - bx,
-            cy = 3 * p1y,
-            by = 3 * (p2y - p1y) - cy,
-            ay = 1 - cy - by;
-        function sampleCurveX(t) {
-            return ((ax * t + bx) * t + cx) * t;
-        }
-        function solve(x, epsilon) {
-            var t = solveCurveX(x, epsilon);
-            return ((ay * t + by) * t + cy) * t;
-        }
-        function solveCurveX(x, epsilon) {
-            var t0, t1, t2, x2, d2, i;
-            for(t2 = x, i = 0; i < 8; i++) {
-                x2 = sampleCurveX(t2) - x;
-                if (abs(x2) < epsilon) {
-                    return t2;
-                }
-                d2 = (3 * ax * t2 + 2 * bx) * t2 + cx;
-                if (abs(d2) < 1e-6) {
-                    break;
-                }
-                t2 = t2 - x2 / d2;
-            }
-            t0 = 0;
-            t1 = 1;
-            t2 = x;
-            if (t2 < t0) {
-                return t0;
-            }
-            if (t2 > t1) {
-                return t1;
-            }
-            while (t0 < t1) {
-                x2 = sampleCurveX(t2);
-                if (abs(x2 - x) < epsilon) {
-                    return t2;
-                }
-                if (x > x2) {
-                    t0 = t2;
-                } else {
-                    t1 = t2;
-                }
-                t2 = (t1 - t0) / 2 + t0;
-            }
-            return t2;
-        }
-        return solve(t, 1 / (200 * duration));
-    }
-    elproto.onAnimation = function (f) {
-        f ? eve.on("anim.frame." + this.id, f) : eve.unbind("anim.frame." + this.id);
-        return this;
-    };
-    function Animation(anim, ms) {
-        var percents = [],
-            newAnim = {};
-        this.ms = ms;
-        this.times = 1;
-        if (anim) {
-            for (var attr in anim) if (anim[has](attr)) {
-                newAnim[toFloat(attr)] = anim[attr];
-                percents.push(toFloat(attr));
-            }
-            percents.sort(sortByNumber);
-        }
-        this.anim = newAnim;
-        this.top = percents[percents.length - 1];
-        this.percents = percents;
-    }
-    
-    Animation.prototype.delay = function (delay) {
-        var a = new Animation(this.anim, this.ms);
-        a.times = this.times;
-        a.del = +delay || 0;
-        return a;
-    };
-    
-    Animation.prototype.repeat = function (times) { 
-        var a = new Animation(this.anim, this.ms);
-        a.del = this.del;
-        a.times = math.floor(mmax(times, 0)) || 1;
-        return a;
-    };
-    function runAnimation(anim, element, percent, status, totalOrigin, times) {
-        percent = toFloat(percent);
-        var params,
-            isInAnim,
-            isInAnimSet,
-            percents = [],
-            next,
-            prev,
-            timestamp,
-            ms = anim.ms,
-            from = {},
-            to = {},
-            diff = {};
-        if (status) {
-            for (i = 0, ii = animationElements.length; i < ii; i++) {
-                var e = animationElements[i];
-                if (e.el.id == element.id && e.anim == anim) {
-                    if (e.percent != percent) {
-                        animationElements.splice(i, 1);
-                        isInAnimSet = 1;
-                    } else {
-                        isInAnim = e;
-                    }
-                    element.attr(e.totalOrigin);
-                    break;
-                }
-            }
-        } else {
-            status = +to; // NaN
-        }
-        for (var i = 0, ii = anim.percents.length; i < ii; i++) {
-            if (anim.percents[i] == percent || anim.percents[i] > status * anim.top) {
-                percent = anim.percents[i];
-                prev = anim.percents[i - 1] || 0;
-                ms = ms / anim.top * (percent - prev);
-                next = anim.percents[i + 1];
-                params = anim.anim[percent];
-                break;
-            } else if (status) {
-                element.attr(anim.anim[anim.percents[i]]);
-            }
-        }
-        if (!params) {
-            return;
-        }
-        if (!isInAnim) {
-            for (attr in params) if (params[has](attr)) {
-                if (availableAnimAttrs[has](attr) || element.paper.customAttributes[has](attr)) {
-                    from[attr] = element.attr(attr);
-                    (from[attr] == null) && (from[attr] = availableAttrs[attr]);
-                    to[attr] = params[attr];
-                    switch (availableAnimAttrs[attr]) {
-                        case nu:
-                            diff[attr] = (to[attr] - from[attr]) / ms;
-                            break;
-                        case "colour":
-                            from[attr] = R.getRGB(from[attr]);
-                            var toColour = R.getRGB(to[attr]);
-                            diff[attr] = {
-                                r: (toColour.r - from[attr].r) / ms,
-                                g: (toColour.g - from[attr].g) / ms,
-                                b: (toColour.b - from[attr].b) / ms
-                            };
-                            break;
-                        case "path":
-                            var pathes = path2curve(from[attr], to[attr]),
-                                toPath = pathes[1];
-                            from[attr] = pathes[0];
-                            diff[attr] = [];
-                            for (i = 0, ii = from[attr].length; i < ii; i++) {
-                                diff[attr][i] = [0];
-                                for (var j = 1, jj = from[attr][i].length; j < jj; j++) {
-                                    diff[attr][i][j] = (toPath[i][j] - from[attr][i][j]) / ms;
-                                }
-                            }
-                            break;
-                        case "transform":
-                            var _ = element._,
-                                eq = equaliseTransform(_[attr], to[attr]);
-                            if (eq) {
-                                from[attr] = eq.from;
-                                to[attr] = eq.to;
-                                diff[attr] = [];
-                                diff[attr].real = true;
-                                for (i = 0, ii = from[attr].length; i < ii; i++) {
-                                    diff[attr][i] = [from[attr][i][0]];
-                                    for (j = 1, jj = from[attr][i].length; j < jj; j++) {
-                                        diff[attr][i][j] = (to[attr][i][j] - from[attr][i][j]) / ms;
-                                    }
-                                }
-                            } else {
-                                var m = (element.matrix || new Matrix),
-                                    to2 = {
-                                        _: {transform: _.transform},
-                                        getBBox: function () {
-                                            return element.getBBox(1);
-                                        }
-                                    };
-                                from[attr] = [
-                                    m.a,
-                                    m.b,
-                                    m.c,
-                                    m.d,
-                                    m.e,
-                                    m.f
-                                ];
-                                extractTransform(to2, to[attr]);
-                                to[attr] = to2._.transform;
-                                diff[attr] = [
-                                    (to2.matrix.a - m.a) / ms,
-                                    (to2.matrix.b - m.b) / ms,
-                                    (to2.matrix.c - m.c) / ms,
-                                    (to2.matrix.d - m.d) / ms,
-                                    (to2.matrix.e - m.e) / ms,
-                                    (to2.matrix.e - m.f) / ms
-                                ];
-                                // from[attr] = [_.sx, _.sy, _.deg, _.dx, _.dy];
-                                // var to2 = {_:{}, getBBox: function () { return element.getBBox(); }};
-                                // extractTransform(to2, to[attr]);
-                                // diff[attr] = [
-                                //     (to2._.sx - _.sx) / ms,
-                                //     (to2._.sy - _.sy) / ms,
-                                //     (to2._.deg - _.deg) / ms,
-                                //     (to2._.dx - _.dx) / ms,
-                                //     (to2._.dy - _.dy) / ms
-                                // ];
-                            }
-                            break;
-                        case "csv":
-                            var values = Str(params[attr])[split](separator),
-                                from2 = Str(from[attr])[split](separator);
-                            if (attr == "clip-rect") {
-                                from[attr] = from2;
-                                diff[attr] = [];
-                                i = from2.length;
-                                while (i--) {
-                                    diff[attr][i] = (values[i] - from[attr][i]) / ms;
-                                }
-                            }
-                            to[attr] = values;
-                            break;
-                        default:
-                            values = [][concat](params[attr]);
-                            from2 = [][concat](from[attr]);
-                            diff[attr] = [];
-                            i = element.paper.customAttributes[attr].length;
-                            while (i--) {
-                                diff[attr][i] = ((values[i] || 0) - (from2[i] || 0)) / ms;
-                            }
-                            break;
-                    }
-                }
-            }
-            var easing = params.easing,
-                easyeasy = R.easing_formulas[easing];
-            if (!easyeasy) {
-                easyeasy = Str(easing).match(bezierrg);
-                if (easyeasy && easyeasy.length == 5) {
-                    var curve = easyeasy;
-                    easyeasy = function (t) {
-                        return CubicBezierAtTime(t, +curve[1], +curve[2], +curve[3], +curve[4], ms);
-                    };
-                } else {
-                    easyeasy = pipe;
-                }
-            }
-            timestamp = params.start || anim.start || +new Date;
-            e = {
-                anim: anim,
-                percent: percent,
-                timestamp: timestamp,
-                start: timestamp + (anim.del || 0),
-                status: 0,
-                initstatus: status || 0,
-                stop: false,
-                ms: ms,
-                easing: easyeasy,
-                from: from,
-                diff: diff,
-                to: to,
-                el: element,
-                callback: params.callback,
-                prev: prev,
-                next: next,
-                repeat: times || anim.times,
-                origin: element.attr(),
-                totalOrigin: totalOrigin
-            };
-            animationElements.push(e);
-            if (status && !isInAnim && !isInAnimSet) {
-                e.stop = true;
-                e.start = new Date - ms * status;
-                if (animationElements.length == 1) {
-                    return animation();
-                }
-            }
-            if (isInAnimSet) {
-                e.start = new Date - e.ms * status;
-            }
-            animationElements.length == 1 && requestAnimFrame(animation);
-        } else {
-            isInAnim.initstatus = status;
-            isInAnim.start = new Date - isInAnim.ms * status;
-        }
-        eve("anim.start." + element.id, element, anim);
-    }
-    
-    R.animation = function (params, ms, easing, callback) {
-        if (params instanceof Animation) {
-            return params;
-        }
-        if (R.is(easing, "function") || !easing) {
-            callback = callback || easing || null;
-            easing = null;
-        }
-        params = Object(params);
-        ms = +ms || 0;
-        var p = {},
-            json,
-            attr;
-        for (attr in params) if (params[has](attr) && toFloat(attr) != attr && toFloat(attr) + "%" != attr) {
-            json = true;
-            p[attr] = params[attr];
-        }
-        if (!json) {
-            return new Animation(params, ms);
-        } else {
-            easing && (p.easing = easing);
-            callback && (p.callback = callback);
-            return new Animation({100: p}, ms);
-        }
-    };
-    
-    elproto.animate = function (params, ms, easing, callback) {
-        var element = this;
-        if (element.removed) {
-            callback && callback.call(element);
-            return element;
-        }
-        var anim = params instanceof Animation ? params : R.animation(params, ms, easing, callback);
-        runAnimation(anim, element, anim.percents[0], null, element.attr());
-        return element;
-    };
-    
-    elproto.setTime = function (anim, value) {
-        if (anim && value != null) {
-            this.status(anim, mmin(value, anim.ms) / anim.ms);
-        }
-        return this;
-    };
-    
-    elproto.status = function (anim, value) {
-        var out = [],
-            i = 0,
-            len,
-            e;
-        if (value != null) {
-            runAnimation(anim, this, -1, mmin(value, 1));
-            return this;
-        } else {
-            len = animationElements.length;
-            for (; i < len; i++) {
-                e = animationElements[i];
-                if (e.el.id == this.id && (!anim || e.anim == anim)) {
-                    if (anim) {
-                        return e.status;
-                    }
-                    out.push({
-                        anim: e.anim,
-                        status: e.status
-                    });
-                }
-            }
-            if (anim) {
-                return 0;
-            }
-            return out;
-        }
-    };
-    
-    elproto.pause = function (anim) {
-        for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {
-            if (eve("anim.pause." + this.id, this, animationElements[i].anim) !== false) {
-                animationElements[i].paused = true;
-            }
-        }
-        return this;
-    };
-    
-    elproto.resume = function (anim) {
-        for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {
-            var e = animationElements[i];
-            if (eve("anim.resume." + this.id, this, e.anim) !== false) {
-                delete e.paused;
-                this.status(e.anim, e.status);
-            }
-        }
-        return this;
-    };
-    
-    elproto.stop = function (anim) {
-        for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {
-            if (eve("anim.stop." + this.id, this, animationElements[i].anim) !== false) {
-                animationElements.splice(i--, 1);
-            }
-        }
-        return this;
-    };
-    elproto.toString = function () {
-        return "Rapha\xebl\u2019s object";
-    };
-
-    // Set
-    var Set = function (items) {
-        this.items = [];
-        this.length = 0;
-        this.type = "set";
-        if (items) {
-            for (var i = 0, ii = items.length; i < ii; i++) {
-                if (items[i] && (items[i].constructor == elproto.constructor || items[i].constructor == Set)) {
-                    this[this.items.length] = this.items[this.items.length] = items[i];
-                    this.length++;
-                }
-            }
-        }
-    },
-    setproto = Set.prototype;
-    
-    setproto.push = function () {
-        var item,
-            len;
-        for (var i = 0, ii = arguments.length; i < ii; i++) {
-            item = arguments[i];
-            if (item && (item.constructor == elproto.constructor || item.constructor == Set)) {
-                len = this.items.length;
-                this[len] = this.items[len] = item;
-                this.length++;
-            }
-        }
-        return this;
-    };
-    
-    setproto.pop = function () {
-        this.length && delete this[this.length--];
-        return this.items.pop();
-    };
-    
-    setproto.forEach = function (callback, thisArg) {
-        for (var i = 0, ii = this.items.length; i < ii; i++) {
-            if (callback.call(thisArg, this.items[i], i) === false) {
-                return this;
-            }
-        }
-        return this;
-    };
-    for (var method in elproto) if (elproto[has](method)) {
-        setproto[method] = (function (methodname) {
-            return function () {
-                var arg = arguments;
-                return this.forEach(function (el) {
-                    el[methodname][apply](el, arg);
-                });
-            };
-        })(method);
-    }
-    setproto.attr = function (name, value) {
-        if (name && R.is(name, array) && R.is(name[0], "object")) {
-            for (var j = 0, jj = name.length; j < jj; j++) {
-                this.items[j].attr(name[j]);
-            }
-        } else {
-            for (var i = 0, ii = this.items.length; i < ii; i++) {
-                this.items[i].attr(name, value);
-            }
-        }
-        return this;
-    };
-    
-    setproto.clear = function () {
-        while (this.length) {
-            this.pop();
-        }
-    };
-    
-    setproto.splice = function (index, count, insertion) {
-        index = index < 0 ? mmax(this.length + index, 0) : index;
-        count = mmax(0, mmin(this.length - index, count));
-        var tail = [],
-            todel = [],
-            args = [],
-            i;
-        for (i = 2; i < arguments.length; i++) {
-            args.push(arguments[i]);
-        }
-        for (i = 0; i < count; i++) {
-            todel.push(this[index + i]);
-        }
-        for (; i < this.length - index; i++) {
-            tail.push(this[index + i]);
-        }
-        var arglen = args.length;
-        for (i = 0; i < arglen + tail.length; i++) {
-            this.items[index + i] = this[index + i] = i < arglen ? args[i] : tail[i - arglen];
-        }
-        i = this.items.length = this.length -= count - arglen;
-        while (this[i]) {
-            delete this[i++];
-        }
-        return new Set(todel);
-    };
-    
-    setproto.exclude = function (el) {
-        for (var i = 0, ii = this.length; i < ii; i++) if (this[i] == el) {
-            this.splice(i, 1);
-            return true;
-        }
-    };
-    setproto.animate = function (params, ms, easing, callback) {
-        (R.is(easing, "function") || !easing) && (callback = easing || null);
-        var len = this.items.length,
-            i = len,
-            item,
-            set = this,
-            collector;
-        if (!len) {
-            return this;
-        }
-        callback && (collector = function () {
-            !--len && callback.call(set);
-        });
-        easing = R.is(easing, string) ? easing : collector;
-        var anim = R.animation(params, ms, easing, collector);
-        item = this.items[--i].animate(anim);
-        while (i--) {
-            this.items[i] && !this.items[i].removed && this.items[i].animateWith(item, anim);
-        }
-        return this;
-    };
-    setproto.insertAfter = function (el) {
-        var i = this.items.length;
-        while (i--) {
-            this.items[i].insertAfter(el);
-        }
-        return this;
-    };
-    setproto.getBBox = function () {
-        var x = [],
-            y = [],
-            w = [],
-            h = [];
-        for (var i = this.items.length; i--;) if (!this.items[i].removed) {
-            var box = this.items[i].getBBox();
-            x.push(box.x);
-            y.push(box.y);
-            w.push(box.x + box.width);
-            h.push(box.y + box.height);
-        }
-        x = mmin[apply](0, x);
-        y = mmin[apply](0, y);
-        return {
-            x: x,
-            y: y,
-            width: mmax[apply](0, w) - x,
-            height: mmax[apply](0, h) - y
-        };
-    };
-    setproto.clone = function (s) {
-        s = new Set;
-        for (var i = 0, ii = this.items.length; i < ii; i++) {
-            s.push(this.items[i].clone());
-        }
-        return s;
-    };
-    setproto.toString = function () {
-        return "Rapha\xebl\u2018s set";
-    };
-
-    
-    R.registerFont = function (font) {
-        if (!font.face) {
-            return font;
-        }
-        this.fonts = this.fonts || {};
-        var fontcopy = {
-                w: font.w,
-                face: {},
-                glyphs: {}
-            },
-            family = font.face["font-family"];
-        for (var prop in font.face) if (font.face[has](prop)) {
-            fontcopy.face[prop] = font.face[prop];
-        }
-        if (this.fonts[family]) {
-            this.fonts[family].push(fontcopy);
-        } else {
-            this.fonts[family] = [fontcopy];
-        }
-        if (!font.svg) {
-            fontcopy.face["units-per-em"] = toInt(font.face["units-per-em"], 10);
-            for (var glyph in font.glyphs) if (font.glyphs[has](glyph)) {
-                var path = font.glyphs[glyph];
-                fontcopy.glyphs[glyph] = {
-                    w: path.w,
-                    k: {},
-                    d: path.d && "M" + path.d.replace(/[mlcxtrv]/g, function (command) {
-                            return {l: "L", c: "C", x: "z", t: "m", r: "l", v: "c"}[command] || "M";
-                        }) + "z"
-                };
-                if (path.k) {
-                    for (var k in path.k) if (path[has](k)) {
-                        fontcopy.glyphs[glyph].k[k] = path.k[k];
-                    }
-                }
-            }
-        }
-        return font;
-    };
-    
-    paperproto.getFont = function (family, weight, style, stretch) {
-        stretch = stretch || "normal";
-        style = style || "normal";
-        weight = +weight || {normal: 400, bold: 700, lighter: 300, bolder: 800}[weight] || 400;
-        if (!R.fonts) {
-            return;
-        }
-        var font = R.fonts[family];
-        if (!font) {
-            var name = new RegExp("(^|\\s)" + family.replace(/[^\w\d\s+!~.:_-]/g, E) + "(\\s|$)", "i");
-            for (var fontName in R.fonts) if (R.fonts[has](fontName)) {
-                if (name.test(fontName)) {
-                    font = R.fonts[fontName];
-                    break;
-                }
-            }
-        }
-        var thefont;
-        if (font) {
-            for (var i = 0, ii = font.length; i < ii; i++) {
-                thefont = font[i];
-                if (thefont.face["font-weight"] == weight && (thefont.face["font-style"] == style || !thefont.face["font-style"]) && thefont.face["font-stretch"] == stretch) {
-                    break;
-                }
-            }
-        }
-        return thefont;
-    };
-    
-    paperproto.print = function (x, y, string, font, size, origin, letter_spacing) {
-        origin = origin || "middle"; // baseline|middle
-        letter_spacing = mmax(mmin(letter_spacing || 0, 1), -1);
-        var out = this.set(),
-            letters = Str(string)[split](E),
-            shift = 0,
-            path = E,
-            scale;
-        R.is(font, string) && (font = this.getFont(font));
-        if (font) {
-            scale = (size || 16) / font.face["units-per-em"];
-            var bb = font.face.bbox[split](separator),
-                top = +bb[0],
-                height = +bb[1] + (origin == "baseline" ? bb[3] - bb[1] + (+font.face.descent) : (bb[3] - bb[1]) / 2);
-            for (var i = 0, ii = letters.length; i < ii; i++) {
-                var prev = i && font.glyphs[letters[i - 1]] || {},
-                    curr = font.glyphs[letters[i]];
-                shift += i ? (prev.w || font.w) + (prev.k && prev.k[letters[i]] || 0) + (font.w * letter_spacing) : 0;
-                curr && curr.d && out.push(this.path(curr.d).attr({
-                    fill: "#000",
-                    stroke: "none",
-                    transform: [["t", shift * scale, 0]]
-                }));
-            }
-            out.transform(["...s", scale, scale, top, height, "t", (x - top) / scale, (y - height) / scale]);
-        }
-        return out;
-    };
-
-    
-    R.format = function (token, params) {
-        var args = R.is(params, array) ? [0][concat](params) : arguments;
-        token && R.is(token, string) && args.length - 1 && (token = token.replace(formatrg, function (str, i) {
-            return args[++i] == null ? E : args[i];
-        }));
-        return token || E;
-    };
-    
-    R.fullfill = (function () {
-        var tokenRegex = /\{([^\}]+)\}/g,
-            objNotationRegex = /(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g, // matches .xxxxx or ["xxxxx"] to run over object properties
-            replacer = function (all, key, obj) {
-                var res = obj;
-                key.replace(objNotationRegex, function (all, name, quote, quotedName, isFunc) {
-                    name = name || quotedName;
-                    if (res) {
-                        if (name in res) {
-                            res = res[name];
-                        }
-                        typeof res == "function" && isFunc && (res = res());
-                    }
-                });
-                res = (res == null || res == obj ? all : res) + "";
-                return res;
-            };
-        return function (str, obj) {
-            return String(str).replace(tokenRegex, function (all, key) {
-                return replacer(all, key, obj);
-            });
-        };
-    })();
-    
-    R.ninja = function () {
-        oldRaphael.was ? (g.win.Raphael = oldRaphael.is) : delete Raphael;
-        return R;
-    };
-    
-    R.st = setproto;
-    // Firefox <3.6 fix: http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html
-    (function (doc, loaded, f) {
-        if (doc.readyState == null && doc.addEventListener){
-            doc.addEventListener(loaded, f = function () {
-                doc.removeEventListener(loaded, f, false);
-                doc.readyState = "complete";
-            }, false);
-            doc.readyState = "loading";
-        }
-        function isLoaded() {
-            (/in/).test(doc.readyState) ? setTimeout(isLoaded, 9) : R.eve("DOMload");
-        }
-        isLoaded();
-    })(document, "DOMContentLoaded");
-
-    oldRaphael.was ? (g.win.Raphael = R) : (Raphael = R);
-    
-    eve.on("DOMload", function () {
-        loaded = true;
-    });
-})();
-
-// ┌─────────────────────────────────────────────────────────────────────┐ \\
-// │ Raphaël 2 - JavaScript Vector Library                               │ \\
-// ├─────────────────────────────────────────────────────────────────────┤ \\
-// │ SVG Module                                                          │ \\
-// ├─────────────────────────────────────────────────────────────────────┤ \\
-// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\
-// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\
-// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\
-// └─────────────────────────────────────────────────────────────────────┘ \\
-window.Raphael.svg && function (R) {
-    var has = "hasOwnProperty",
-        Str = String,
-        toFloat = parseFloat,
-        toInt = parseInt,
-        math = Math,
-        mmax = math.max,
-        abs = math.abs,
-        pow = math.pow,
-        separator = /[, ]+/,
-        eve = R.eve,
-        E = "",
-        S = " ";
-    var xlink = "http://www.w3.org/1999/xlink",
-        markers = {
-            block: "M5,0 0,2.5 5,5z",
-            classic: "M5,0 0,2.5 5,5 3.5,3 3.5,2z",
-            diamond: "M2.5,0 5,2.5 2.5,5 0,2.5z",
-            open: "M6,1 1,3.5 6,6",
-            oval: "M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"
-        },
-        markerCounter = {};
-    R.toString = function () {
-        return  "Your browser supports SVG.\nYou are running Rapha\xebl " + this.version;
-    };
-    var $ = function (el, attr) {
-        if (attr) {
-            if (typeof el == "string") {
-                el = $(el);
-            }
-            for (var key in attr) if (attr[has](key)) {
-                if (key.substring(0, 6) == "xlink:") {
-                    el.setAttributeNS(xlink, key.substring(6), Str(attr[key]));
-                } else {
-                    el.setAttribute(key, Str(attr[key]));
-                }
-            }
-        } else {
-            el = R._g.doc.createElementNS("http://www.w3.org/2000/svg", el);
-            el.style && (el.style.webkitTapHighlightColor = "rgba(0,0,0,0)");
-        }
-        return el;
-    },
-    gradients = {},
-    rgGrad = /^url\(#(.*)\)$/,
-    removeGradientFill = function (node, paper) {
-        var oid = node.getAttribute("fill");
-        oid = oid && oid.match(rgGrad);
-        if (oid && !--gradients[oid[1]]) {
-            delete gradients[oid[1]];
-            paper.defs.removeChild(R._g.doc.getElementById(oid[1]));
-        }
-    },
-    addGradientFill = function (element, gradient) {
-        var type = "linear",
-            id = element.id + gradient,
-            fx = .5, fy = .5,
-            o = element.node,
-            SVG = element.paper,
-            s = o.style,
-            el = R._g.doc.getElementById(id);
-        if (!el) {
-            gradient = Str(gradient).replace(R._radial_gradient, function (all, _fx, _fy) {
-                type = "radial";
-                if (_fx && _fy) {
-                    fx = toFloat(_fx);
-                    fy = toFloat(_fy);
-                    var dir = ((fy > .5) * 2 - 1);
-                    pow(fx - .5, 2) + pow(fy - .5, 2) > .25 &&
-                        (fy = math.sqrt(.25 - pow(fx - .5, 2)) * dir + .5) &&
-                        fy != .5 &&
-                        (fy = fy.toFixed(5) - 1e-5 * dir);
-                }
-                return E;
-            });
-            gradient = gradient.split(/\s*\-\s*/);
-            if (type == "linear") {
-                var angle = gradient.shift();
-                angle = -toFloat(angle);
-                if (isNaN(angle)) {
-                    return null;
-                }
-                var vector = [0, 0, math.cos(R.rad(angle)), math.sin(R.rad(angle))],
-                    max = 1 / (mmax(abs(vector[2]), abs(vector[3])) || 1);
-                vector[2] *= max;
-                vector[3] *= max;
-                if (vector[2] < 0) {
-                    vector[0] = -vector[2];
-                    vector[2] = 0;
-                }
-                if (vector[3] < 0) {
-                    vector[1] = -vector[3];
-                    vector[3] = 0;
-                }
-            }
-            var dots = R._parseDots(gradient);
-            if (!dots) {
-                return null;
-            }
-            if (element.gradient) {
-                SVG.defs.removeChild(element.gradient);
-                delete element.gradient;
-            }
-
-            id = id.replace(/[\(\)\s,\xb0#]/g, "-");
-            el = $(type + "Gradient", {id: id});
-            element.gradient = el;
-            $(el, type == "radial" ? {
-                fx: fx,
-                fy: fy
-            } : {
-                x1: vector[0],
-                y1: vector[1],
-                x2: vector[2],
-                y2: vector[3],
-                gradientTransform: element.matrix.invert()
-            });
-            SVG.defs.appendChild(el);
-            for (var i = 0, ii = dots.length; i < ii; i++) {
-                el.appendChild($("stop", {
-                    offset: dots[i].offset ? dots[i].offset : i ? "100%" : "0%",
-                    "stop-color": dots[i].color || "#fff"
-                }));
-            }
-        }
-        $(o, {
-            fill: "url(#" + id + ")",
-            opacity: 1,
-            "fill-opacity": 1
-        });
-        s.fill = E;
-        s.opacity = 1;
-        s.fillOpacity = 1;
-        return 1;
-    },
-    updatePosition = function (o) {
-        var bbox = o.getBBox(1);
-        $(o.pattern, {patternTransform: o.matrix.invert() + " translate(" + bbox.x + "," + bbox.y + ")"});
-    },
-    addArrow = function (o, value, isEnd) {
-        if (o.type == "path") {
-            var values = Str(value).toLowerCase().split("-"),
-                p = o.paper,
-                se = isEnd ? "end" : "start",
-                node = o.node,
-                attrs = o.attrs,
-                stroke = attrs["stroke-width"],
-                i = values.length,
-                type = "classic",
-                from,
-                to,
-                dx,
-                refX,
-                attr,
-                w = 3,
-                h = 3,
-                t = 5;
-            while (i--) {
-                switch (values[i]) {
-                    case "block":
-                    case "classic":
-                    case "oval":
-                    case "diamond":
-                    case "open":
-                    case "none":
-                        type = values[i];
-                        break;
-                    case "wide": h = 5; break;
-                    case "narrow": h = 2; break;
-                    case "long": w = 5; break;
-                    case "short": w = 2; break;
-                }
-            }
-            if (type == "open") {
-                w += 2;
-                h += 2;
-                t += 2;
-                dx = 1;
-                refX = isEnd ? 4 : 1;
-                attr = {
-                    fill: "none",
-                    stroke: attrs.stroke
-                };
-            } else {
-                refX = dx = w / 2;
-                attr = {
-                    fill: attrs.stroke,
-                    stroke: "none"
-                };
-            }
-            if (o._.arrows) {
-                if (isEnd) {
-                    o._.arrows.endPath && markerCounter[o._.arrows.endPath]--;
-                    o._.arrows.endMarker && markerCounter[o._.arrows.endMarker]--;
-                } else {
-                    o._.arrows.startPath && markerCounter[o._.arrows.startPath]--;
-                    o._.arrows.startMarker && markerCounter[o._.arrows.startMarker]--;
-                }
-            } else {
-                o._.arrows = {};
-            }
-            if (type != "none") {
-                var pathId = "raphael-marker-" + type,
-                    markerId = "raphael-marker-" + se + type + w + h;
-                if (!R._g.doc.getElementById(pathId)) {
-                    p.defs.appendChild($($("path"), {
-                        "stroke-linecap": "round",
-                        d: markers[type],
-                        id: pathId
-                    }));
-                    markerCounter[pathId] = 1;
-                } else {
-                    markerCounter[pathId]++;
-                }
-                var marker = R._g.doc.getElementById(markerId),
-                    use;
-                if (!marker) {
-                    marker = $($("marker"), {
-                        id: markerId,
-                        markerHeight: h,
-                        markerWidth: w,
-                        orient: "auto",
-                        refX: refX,
-                        refY: h / 2
-                    });
-                    use = $($("use"), {
-                        "xlink:href": "#" + pathId,
-                        transform: (isEnd ? " rotate(180 " + w / 2 + " " + h / 2 + ") " : S) + "scale(" + w / t + "," + h / t + ")",
-                        "stroke-width": 1 / ((w / t + h / t) / 2)
-                    });
-                    marker.appendChild(use);
-                    p.defs.appendChild(marker);
-                    markerCounter[markerId] = 1;
-                } else {
-                    markerCounter[markerId]++;
-                    use = marker.getElementsByTagName("use")[0];
-                }
-                $(use, attr);
-                var delta = dx * (type != "diamond" && type != "oval");
-                if (isEnd) {
-                    from = o._.arrows.startdx * stroke || 0;
-                    to = R.getTotalLength(attrs.path) - delta * stroke;
-                } else {
-                    from = delta * stroke;
-                    to = R.getTotalLength(attrs.path) - (o._.arrows.enddx * stroke || 0);
-                }
-                attr = {};
-                attr["marker-" + se] = "url(#" + markerId + ")";
-                if (to || from) {
-                    attr.d = Raphael.getSubpath(attrs.path, from, to);
-                }
-                $(node, attr);
-                o._.arrows[se + "Path"] = pathId;
-                o._.arrows[se + "Marker"] = markerId;
-                o._.arrows[se + "dx"] = delta;
-                o._.arrows[se + "Type"] = type;
-                o._.arrows[se + "String"] = value;
-            } else {
-                if (isEnd) {
-                    from = o._.arrows.startdx * stroke || 0;
-                    to = R.getTotalLength(attrs.path) - from;
-                } else {
-                    from = 0;
-                    to = R.getTotalLength(attrs.path) - (o._.arrows.enddx * stroke || 0);
-                }
-                o._.arrows[se + "Path"] && $(node, {d: Raphael.getSubpath(attrs.path, from, to)});
-                delete o._.arrows[se + "Path"];
-                delete o._.arrows[se + "Marker"];
-                delete o._.arrows[se + "dx"];
-                delete o._.arrows[se + "Type"];
-                delete o._.arrows[se + "String"];
-            }
-            for (attr in markerCounter) if (markerCounter[has](attr) && !markerCounter[attr]) {
-                var item = R._g.doc.getElementById(attr);
-                item && item.parentNode.removeChild(item);
-            }
-        }
-    },
-    dasharray = {
-        "": [0],
-        "none": [0],
-        "-": [3, 1],
-        ".": [1, 1],
-        "-.": [3, 1, 1, 1],
-        "-..": [3, 1, 1, 1, 1, 1],
-        ". ": [1, 3],
-        "- ": [4, 3],
-        "--": [8, 3],
-        "- .": [4, 3, 1, 3],
-        "--.": [8, 3, 1, 3],
-        "--..": [8, 3, 1, 3, 1, 3]
-    },
-    addDashes = function (o, value, params) {
-        value = dasharray[Str(value).toLowerCase()];
-        if (value) {
-            var width = o.attrs["stroke-width"] || "1",
-                butt = {round: width, square: width, butt: 0}[o.attrs["stroke-linecap"] || params["stroke-linecap"]] || 0,
-                dashes = [],
-                i = value.length;
-            while (i--) {
-                dashes[i] = value[i] * width + ((i % 2) ? 1 : -1) * butt;
-            }
-            $(o.node, {"stroke-dasharray": dashes.join(",")});
-        }
-    },
-    setFillAndStroke = function (o, params) {
-        var node = o.node,
-            attrs = o.attrs,
-            vis = node.style.visibility;
-        node.style.visibility = "hidden";
-        for (var att in params) {
-            if (params[has](att)) {
-                if (!R._availableAttrs[has](att)) {
-                    continue;
-                }
-                var value = params[att];
-                attrs[att] = value;
-                switch (att) {
-                    case "blur":
-                        o.blur(value);
-                        break;
-                    case "href":
-                    case "title":
-                    case "target":
-                        var pn = node.parentNode;
-                        if (pn.tagName.toLowerCase() != "a") {
-                            var hl = $("a");
-                            pn.insertBefore(hl, node);
-                            hl.appendChild(node);
-                            pn = hl;
-                        }
-                        if (att == "target" && value == "blank") {
-                            pn.setAttributeNS(xlink, "show", "new");
-                        } else {
-                            pn.setAttributeNS(xlink, att, value);
-                        }
-                        break;
-                    case "cursor":
-                        node.style.cursor = value;
-                        break;
-                    case "transform":
-                        o.transform(value);
-                        break;
-                    case "arrow-start":
-                        addArrow(o, value);
-                        break;
-                    case "arrow-end":
-                        addArrow(o, value, 1);
-                        break;
-                    case "clip-rect":
-                        var rect = Str(value).split(separator);
-                        if (rect.length == 4) {
-                            o.clip && o.clip.parentNode.parentNode.removeChild(o.clip.parentNode);
-                            var el = $("clipPath"),
-                                rc = $("rect");
-                            el.id = R.createUUID();
-                            $(rc, {
-                                x: rect[0],
-                                y: rect[1],
-                                width: rect[2],
-                                height: rect[3]
-                            });
-                            el.appendChild(rc);
-                            o.paper.defs.appendChild(el);
-                            $(node, {"clip-path": "url(#" + el.id + ")"});
-                            o.clip = rc;
-                        }
-                        if (!value) {
-                            var clip = R._g.doc.getElementById(node.getAttribute("clip-path").replace(/(^url\(#|\)$)/g, E));
-                            clip && clip.parentNode.removeChild(clip);
-                            $(node, {"clip-path": E});
-                            delete o.clip;
-                        }
-                    break;
-                    case "path":
-                        if (o.type == "path") {
-                            $(node, {d: value ? attrs.path = R._pathToAbsolute(value) : "M0,0"});
-                            o._.dirty = 1;
-                            if (o._.arrows) {
-                                "startString" in o._.arrows && addArrow(o, o._.arrows.startString);
-                                "endString" in o._.arrows && addArrow(o, o._.arrows.endString, 1);
-                            }
-                        }
-                        break;
-                    case "width":
-                        node.setAttribute(att, value);
-                        o._.dirty = 1;
-                        if (attrs.fx) {
-                            att = "x";
-                            value = attrs.x;
-                        } else {
-                            break;
-                        }
-                    case "x":
-                        if (attrs.fx) {
-                            value = -attrs.x - (attrs.width || 0);
-                        }
-                    case "rx":
-                        if (att == "rx" && o.type == "rect") {
-                            break;
-                        }
-                    case "cx":
-                        node.setAttribute(att, value);
-                        o.pattern && updatePosition(o);
-                        o._.dirty = 1;
-                        break;
-                    case "height":
-                        node.setAttribute(att, value);
-                        o._.dirty = 1;
-                        if (attrs.fy) {
-                            att = "y";
-                            value = attrs.y;
-                        } else {
-                            break;
-                        }
-                    case "y":
-                        if (attrs.fy) {
-                            value = -attrs.y - (attrs.height || 0);
-                        }
-                    case "ry":
-                        if (att == "ry" && o.type == "rect") {
-                            break;
-                        }
-                    case "cy":
-                        node.setAttribute(att, value);
-                        o.pattern && updatePosition(o);
-                        o._.dirty = 1;
-                        break;
-                    case "r":
-                        if (o.type == "rect") {
-                            $(node, {rx: value, ry: value});
-                        } else {
-                            node.setAttribute(att, value);
-                        }
-                        o._.dirty = 1;
-                        break;
-                    case "src":
-                        if (o.type == "image") {
-                            node.setAttributeNS(xlink, "href", value);
-                        }
-                        break;
-                    case "stroke-width":
-                        if (o._.sx != 1 || o._.sy != 1) {
-                            value /= mmax(abs(o._.sx), abs(o._.sy)) || 1;
-                        }
-                        if (o.paper._vbSize) {
-                            value *= o.paper._vbSize;
-                        }
-                        node.setAttribute(att, value);
-                        if (attrs["stroke-dasharray"]) {
-                            addDashes(o, attrs["stroke-dasharray"], params);
-                        }
-                        if (o._.arrows) {
-                            "startString" in o._.arrows && addArrow(o, o._.arrows.startString);
-                            "endString" in o._.arrows && addArrow(o, o._.arrows.endString, 1);
-                        }
-                        break;
-                    case "stroke-dasharray":
-                        addDashes(o, value, params);
-                        break;
-                    case "fill":
-                        var isURL = Str(value).match(R._ISURL);
-                        if (isURL) {
-                            el = $("pattern");
-                            var ig = $("image");
-                            el.id = R.createUUID();
-                            $(el, {x: 0, y: 0, patternUnits: "userSpaceOnUse", height: 1, width: 1});
-                            $(ig, {x: 0, y: 0, "xlink:href": isURL[1]});
-                            el.appendChild(ig);
-
-                            (function (el) {
-                                R._preload(isURL[1], function () {
-                                    var w = this.offsetWidth,
-                                        h = this.offsetHeight;
-                                    $(el, {width: w, height: h});
-                                    $(ig, {width: w, height: h});
-                                    o.paper.safari();
-                                });
-                            })(el);
-                            o.paper.defs.appendChild(el);
-                            node.style.fill = "url(#" + el.id + ")";
-                            $(node, {fill: "url(#" + el.id + ")"});
-                            o.pattern = el;
-                            o.pattern && updatePosition(o);
-                            break;
-                        }
-                        var clr = R.getRGB(value);
-                        if (!clr.error) {
-                            delete params.gradient;
-                            delete attrs.gradient;
-                            !R.is(attrs.opacity, "undefined") &&
-                                R.is(params.opacity, "undefined") &&
-                                $(node, {opacity: attrs.opacity});
-                            !R.is(attrs["fill-opacity"], "undefined") &&
-                                R.is(params["fill-opacity"], "undefined") &&
-                                $(node, {"fill-opacity": attrs["fill-opacity"]});
-                        } else if ((o.type == "circle" || o.type == "ellipse" || Str(value).charAt() != "r") && addGradientFill(o, value)) {
-                            if ("opacity" in attrs || "fill-opacity" in attrs) {
-                                var gradient = R._g.doc.getElementById(node.getAttribute("fill").replace(/^url\(#|\)$/g, E));
-                                if (gradient) {
-                                    var stops = gradient.getElementsByTagName("stop");
-                                    $(stops[stops.length - 1], {"stop-opacity": ("opacity" in attrs ? attrs.opacity : 1) * ("fill-opacity" in attrs ? attrs["fill-opacity"] : 1)});
-                                }
-                            }
-                            attrs.gradient = value;
-                            attrs.fill = "none";
-                            break;
-                        }
-                        clr[has]("opacity") && $(node, {"fill-opacity": clr.opacity > 1 ? clr.opacity / 100 : clr.opacity});
-                    case "stroke":
-                        clr = R.getRGB(value);
-                        node.setAttribute(att, clr.hex);
-                        att == "stroke" && clr[has]("opacity") && $(node, {"stroke-opacity": clr.opacity > 1 ? clr.opacity / 100 : clr.opacity});
-                        if (att == "stroke" && o._.arrows) {
-                            "startString" in o._.arrows && addArrow(o, o._.arrows.startString);
-                            "endString" in o._.arrows && addArrow(o, o._.arrows.endString, 1);
-                        }
-                        break;
-                    case "gradient":
-                        (o.type == "circle" || o.type == "ellipse" || Str(value).charAt() != "r") && addGradientFill(o, value);
-                        break;
-                    case "opacity":
-                        if (attrs.gradient && !attrs[has]("stroke-opacity")) {
-                            $(node, {"stroke-opacity": value > 1 ? value / 100 : value});
-                        }
-                        // fall
-                    case "fill-opacity":
-                        if (attrs.gradient) {
-                            gradient = R._g.doc.getElementById(node.getAttribute("fill").replace(/^url\(#|\)$/g, E));
-                            if (gradient) {
-                                stops = gradient.getElementsByTagName("stop");
-                                $(stops[stops.length - 1], {"stop-opacity": value});
-                            }
-                            break;
-                        }
-                    default:
-                        att == "font-size" && (value = toInt(value, 10) + "px");
-                        var cssrule = att.replace(/(\-.)/g, function (w) {
-                            return w.substring(1).toUpperCase();
-                        });
-                        node.style[cssrule] = value;
-                        o._.dirty = 1;
-                        node.setAttribute(att, value);
-                        break;
-                }
-            }
-        }
-
-        tuneText(o, params);
-        node.style.visibility = vis;
-    },
-    leading = 1.2,
-    tuneText = function (el, params) {
-        if (el.type != "text" || !(params[has]("text") || params[has]("font") || params[has]("font-size") || params[has]("x") || params[has]("y"))) {
-            return;
-        }
-        var a = el.attrs,
-            node = el.node,
-            fontSize = node.firstChild ? toInt(R._g.doc.defaultView.getComputedStyle(node.firstChild, E).getPropertyValue("font-size"), 10) : 10;
-
-        if (params[has]("text")) {
-            a.text = params.text;
-            while (node.firstChild) {
-                node.removeChild(node.firstChild);
-            }
-            var texts = Str(params.text).split("\n"),
-                tspans = [],
-                tspan;
-            for (var i = 0, ii = texts.length; i < ii; i++) {
-                tspan = $("tspan");
-                i && $(tspan, {dy: fontSize * leading, x: a.x});
-                tspan.appendChild(R._g.doc.createTextNode(texts[i]));
-                node.appendChild(tspan);
-                tspans[i] = tspan;
-            }
-        } else {
-            tspans = node.getElementsByTagName("tspan");
-            for (i = 0, ii = tspans.length; i < ii; i++) if (i) {
-                $(tspans[i], {dy: fontSize * leading, x: a.x});
-            } else {
-                $(tspans[0], {dy: 0});
-            }
-        }
-        $(node, {x: a.x, y: a.y});
-        el._.dirty = 1;
-        var bb = el._getBBox(),
-            dif = a.y - (bb.y + bb.height / 2);
-        dif && R.is(dif, "finite") && $(tspans[0], {dy: dif});
-    },
-    Element = function (node, svg) {
-        var X = 0,
-            Y = 0;
-        
-        this[0] = this.node = node;
-        
-        node.raphael = true;
-        
-        this.id = R._oid++;
-        node.raphaelid = this.id;
-        this.matrix = R.matrix();
-        this.realPath = null;
-        
-        this.paper = svg;
-        this.attrs = this.attrs || {};
-        this._ = {
-            transform: [],
-            sx: 1,
-            sy: 1,
-            deg: 0,
-            dx: 0,
-            dy: 0,
-            dirty: 1
-        };
-        !svg.bottom && (svg.bottom = this);
-        
-        this.prev = svg.top;
-        svg.top && (svg.top.next = this);
-        svg.top = this;
-        
-        this.next = null;
-    },
-    elproto = R.el;
-
-    Element.prototype = elproto;
-    elproto.constructor = Element;
-
-    R._engine.path = function (pathString, SVG) {
-        var el = $("path");
-        SVG.canvas && SVG.canvas.appendChild(el);
-        var p = new Element(el, SVG);
-        p.type = "path";
-        setFillAndStroke(p, {
-            fill: "none",
-            stroke: "#000",
-            path: pathString
-        });
-        return p;
-    };
-    
-    elproto.rotate = function (deg, cx, cy) {
-        if (this.removed) {
-            return this;
-        }
-        deg = Str(deg).split(separator);
-        if (deg.length - 1) {
-            cx = toFloat(deg[1]);
-            cy = toFloat(deg[2]);
-        }
-        deg = toFloat(deg[0]);
-        (cy == null) && (cx = cy);
-        if (cx == null || cy == null) {
-            var bbox = this.getBBox(1);
-            cx = bbox.x + bbox.width / 2;
-            cy = bbox.y + bbox.height / 2;
-        }
-        this.transform(this._.transform.concat([["r", deg, cx, cy]]));
-        return this;
-    };
-    
-    elproto.scale = function (sx, sy, cx, cy) {
-        if (this.removed) {
-            return this;
-        }
-        sx = Str(sx).split(separator);
-        if (sx.length - 1) {
-            sy = toFloat(sx[1]);
-            cx = toFloat(sx[2]);
-            cy = toFloat(sx[3]);
-        }
-        sx = toFloat(sx[0]);
-        (sy == null) && (sy = sx);
-        (cy == null) && (cx = cy);
-        if (cx == null || cy == null) {
-            var bbox = this.getBBox(1);
-        }
-        cx = cx == null ? bbox.x + bbox.width / 2 : cx;
-        cy = cy == null ? bbox.y + bbox.height / 2 : cy;
-        this.transform(this._.transform.concat([["s", sx, sy, cx, cy]]));
-        return this;
-    };
-    
-    elproto.translate = function (dx, dy) {
-        if (this.removed) {
-            return this;
-        }
-        dx = Str(dx).split(separator);
-        if (dx.length - 1) {
-            dy = toFloat(dx[1]);
-        }
-        dx = toFloat(dx[0]) || 0;
-        dy = +dy || 0;
-        this.transform(this._.transform.concat([["t", dx, dy]]));
-        return this;
-    };
-    
-    elproto.transform = function (tstr) {
-        var _ = this._;
-        if (tstr == null) {
-            return _.transform;
-        }
-        R._extractTransform(this, tstr);
-
-        this.clip && $(this.clip, {transform: this.matrix.invert()});
-        this.pattern && updatePosition(this);
-        this.node && $(this.node, {transform: this.matrix});
-    
-        if (_.sx != 1 || _.sy != 1) {
-            var sw = this.attrs[has]("stroke-width") ? this.attrs["stroke-width"] : 1;
-            this.attr({"stroke-width": sw});
-        }
-
-        return this;
-    };
-    
-    elproto.hide = function () {
-        !this.removed && this.paper.safari(this.node.style.display = "none");
-        return this;
-    };
-    
-    elproto.show = function () {
-        !this.removed && this.paper.safari(this.node.style.display = "");
-        return this;
-    };
-    
-    elproto.remove = function () {
-        if (this.removed) {
-            return;
-        }
-        this.paper.__set__ && this.paper.__set__.exclude(this);
-        eve.unbind("*.*." + this.id);
-        R._tear(this, this.paper);
-        this.node.parentNode.removeChild(this.node);
-        for (var i in this) {
-            delete this[i];
-        }
-        this.removed = true;
-    };
-    elproto._getBBox = function () {
-        if (this.node.style.display == "none") {
-            this.show();
-            var hide = true;
-        }
-        var bbox = {};
-        try {
-            bbox = this.node.getBBox();
-        } catch(e) {
-            // Firefox 3.0.x plays badly here
-        } finally {
-            bbox = bbox || {};
-        }
-        hide && this.hide();
-        return bbox;
-    };
-    
-    elproto.attr = function (name, value) {
-        if (this.removed) {
-            return this;
-        }
-        if (name == null) {
-            var res = {};
-            for (var a in this.attrs) if (this.attrs[has](a)) {
-                res[a] = this.attrs[a];
-            }
-            res.gradient && res.fill == "none" && (res.fill = res.gradient) && delete res.gradient;
-            res.transform = this._.transform;
-            return res;
-        }
-        if (value == null && R.is(name, "string")) {
-            if (name == "fill" && this.attrs.fill == "none" && this.attrs.gradient) {
-                return this.attrs.gradient;
-            }
-            if (name == "transform") {
-                return this._.transform;
-            }
-            var names = name.split(separator),
-                out = {};
-            for (var i = 0, ii = names.length; i < ii; i++) {
-                name = names[i];
-                if (name in this.attrs) {
-                    out[name] = this.attrs[name];
-                } else if (R.is(this.paper.customAttributes[name], "function")) {
-                    out[name] = this.paper.customAttributes[name].def;
-                } else {
-                    out[name] = R._availableAttrs[name];
-                }
-            }
-            return ii - 1 ? out : out[names[0]];
-        }
-        if (value == null && R.is(name, "array")) {
-            out = {};
-            for (i = 0, ii = name.length; i < ii; i++) {
-                out[name[i]] = this.attr(name[i]);
-            }
-            return out;
-        }
-        if (value != null) {
-            var params = {};
-            params[name] = value;
-        } else if (name != null && R.is(name, "object")) {
-            params = name;
-        }
-        for (var key in params) {
-            eve("attr." + key + "." + this.id, this, params[key]);
-        }
-        for (key in this.paper.customAttributes) if (this.paper.customAttributes[has](key) && params[has](key) && R.is(this.paper.customAttributes[key], "function")) {
-            var par = this.paper.customAttributes[key].apply(this, [].concat(params[key]));
-            this.attrs[key] = params[key];
-            for (var subkey in par) if (par[has](subkey)) {
-                params[subkey] = par[subkey];
-            }
-        }
-        setFillAndStroke(this, params);
-        return this;
-    };
-    
-    elproto.toFront = function () {
-        if (this.removed) {
-            return this;
-        }
-        this.node.parentNode.appendChild(this.node);
-        var svg = this.paper;
-        svg.top != this && R._tofront(this, svg);
-        return this;
-    };
-    
-    elproto.toBack = function () {
-        if (this.removed) {
-            return this;
-        }
-        if (this.node.parentNode.firstChild != this.node) {
-            this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild);
-            R._toback(this, this.paper);
-            var svg = this.paper;
-        }
-        return this;
-    };
-    
-    elproto.insertAfter = function (element) {
-        if (this.removed) {
-            return this;
-        }
-        var node = element.node || element[element.length - 1].node;
-        if (node.nextSibling) {
-            node.parentNode.insertBefore(this.node, node.nextSibling);
-        } else {
-            node.parentNode.appendChild(this.node);
-        }
-        R._insertafter(this, element, this.paper);
-        return this;
-    };
-    
-    elproto.insertBefore = function (element) {
-        if (this.removed) {
-            return this;
-        }
-        var node = element.node || element[0].node;
-        node.parentNode.insertBefore(this.node, node);
-        R._insertbefore(this, element, this.paper);
-        return this;
-    };
-    elproto.blur = function (size) {
-        // Experimental. No Safari support. Use it on your own risk.
-        var t = this;
-        if (+size !== 0) {
-            var fltr = $("filter"),
-                blur = $("feGaussianBlur");
-            t.attrs.blur = size;
-            fltr.id = R.createUUID();
-            $(blur, {stdDeviation: +size || 1.5});
-            fltr.appendChild(blur);
-            t.paper.defs.appendChild(fltr);
-            t._blur = fltr;
-            $(t.node, {filter: "url(#" + fltr.id + ")"});
-        } else {
-            if (t._blur) {
-                t._blur.parentNode.removeChild(t._blur);
-                delete t._blur;
-                delete t.attrs.blur;
-            }
-            t.node.removeAttribute("filter");
-        }
-    };
-    R._engine.circle = function (svg, x, y, r) {
-        var el = $("circle");
-        svg.canvas && svg.canvas.appendChild(el);
-        var res = new Element(el, svg);
-        res.attrs = {cx: x, cy: y, r: r, fill: "none", stroke: "#000"};
-        res.type = "circle";
-        $(el, res.attrs);
-        return res;
-    };
-    R._engine.rect = function (svg, x, y, w, h, r) {
-        var el = $("rect");
-        svg.canvas && svg.canvas.appendChild(el);
-        var res = new Element(el, svg);
-        res.attrs = {x: x, y: y, width: w, height: h, r: r || 0, rx: r || 0, ry: r || 0, fill: "none", stroke: "#000"};
-        res.type = "rect";
-        $(el, res.attrs);
-        return res;
-    };
-    R._engine.ellipse = function (svg, x, y, rx, ry) {
-        var el = $("ellipse");
-        svg.canvas && svg.canvas.appendChild(el);
-        var res = new Element(el, svg);
-        res.attrs = {cx: x, cy: y, rx: rx, ry: ry, fill: "none", stroke: "#000"};
-        res.type = "ellipse";
-        $(el, res.attrs);
-        return res;
-    };
-    R._engine.image = function (svg, src, x, y, w, h) {
-        var el = $("image");
-        $(el, {x: x, y: y, width: w, height: h, preserveAspectRatio: "none"});
-        el.setAttributeNS(xlink, "href", src);
-        svg.canvas && svg.canvas.appendChild(el);
-        var res = new Element(el, svg);
-        res.attrs = {x: x, y: y, width: w, height: h, src: src};
-        res.type = "image";
-        return res;
-    };
-    R._engine.text = function (svg, x, y, text) {
-        var el = $("text");
-        // $(el, {x: x, y: y, "text-anchor": "middle"});
-        svg.canvas && svg.canvas.appendChild(el);
-        var res = new Element(el, svg);
-        res.attrs = {
-            x: x,
-            y: y,
-            "text-anchor": "middle",
-            text: text,
-            font: R._availableAttrs.font,
-            stroke: "none",
-            fill: "#000"
-        };
-        res.type = "text";
-        setFillAndStroke(res, res.attrs);
-        return res;
-    };
-    R._engine.setSize = function (width, height) {
-        this.width = width || this.width;
-        this.height = height || this.height;
-        this.canvas.setAttribute("width", this.width);
-        this.canvas.setAttribute("height", this.height);
-        if (this._viewBox) {
-            this.setViewBox.apply(this, this._viewBox);
-        }
-        return this;
-    };
-    R._engine.create = function () {
-        var con = R._getContainer.apply(0, arguments),
-            container = con && con.container,
-            x = con.x,
-            y = con.y,
-            width = con.width,
-            height = con.height;
-        if (!container) {
-            throw new Error("SVG container not found.");
-        }
-        var cnvs = $("svg"),
-            css = "overflow:hidden;",
-            isFloating;
-        x = x || 0;
-        y = y || 0;
-        width = width || 512;
-        height = height || 342;
-        $(cnvs, {
-            height: height,
-            version: 1.1,
-            width: width,
-            xmlns: "http://www.w3.org/2000/svg"
-        });
-        if (container == 1) {
-            cnvs.style.cssText = css + "position:absolute;left:" + x + "px;top:" + y + "px";
-            R._g.doc.body.appendChild(cnvs);
-            isFloating = 1;
-        } else {
-            cnvs.style.cssText = css + "position:relative";
-            if (container.firstChild) {
-                container.insertBefore(cnvs, container.firstChild);
-            } else {
-                container.appendChild(cnvs);
-            }
-        }
-        container = new R._Paper;
-        container.width = width;
-        container.height = height;
-        container.canvas = cnvs;
-        // plugins.call(container, container, R.fn);
-        container.clear();
-        container._left = container._top = 0;
-        isFloating && (container.renderfix = function () {});
-        container.renderfix();
-        return container;
-    };
-    R._engine.setViewBox = function (x, y, w, h, fit) {
-        eve("setViewBox", this, this._viewBox, [x, y, w, h, fit]);
-        var size = mmax(w / this.width, h / this.height),
-            top = this.top,
-            aspectRatio = fit ? "meet" : "xMinYMin",
-            vb,
-            sw;
-        if (x == null) {
-            if (this._vbSize) {
-                size = 1;
-            }
-            delete this._vbSize;
-            vb = "0 0 " + this.width + S + this.height;
-        } else {
-            this._vbSize = size;
-            vb = x + S + y + S + w + S + h;
-        }
-        $(this.canvas, {
-            viewBox: vb,
-            preserveAspectRatio: aspectRatio
-        });
-        while (size && top) {
-            sw = "stroke-width" in top.attrs ? top.attrs["stroke-width"] : 1;
-            top.attr({"stroke-width": sw});
-            top._.dirty = 1;
-            top._.dirtyT = 1;
-            top = top.prev;
-        }
-        this._viewBox = [x, y, w, h, !!fit];
-        return this;
-    };
-    
-    R.prototype.renderfix = function () {
-        var cnvs = this.canvas,
-            s = cnvs.style,
-            pos = cnvs.getScreenCTM() || cnvs.createSVGMatrix(),
-            left = -pos.e % 1,
-            top = -pos.f % 1;
-        if (left || top) {
-            if (left) {
-                this._left = (this._left + left) % 1;
-                s.left = this._left + "px";
-            }
-            if (top) {
-                this._top = (this._top + top) % 1;
-                s.top = this._top + "px";
-            }
-        }
-    };
-    
-    R.prototype.clear = function () {
-        R.eve("clear", this);
-        var c = this.canvas;
-        while (c.firstChild) {
-            c.removeChild(c.firstChild);
-        }
-        this.bottom = this.top = null;
-        (this.desc = $("desc")).appendChild(R._g.doc.createTextNode("Created with Rapha\xebl " + R.version));
-        c.appendChild(this.desc);
-        c.appendChild(this.defs = $("defs"));
-    };
-    
-    R.prototype.remove = function () {
-        eve("remove", this);
-        this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas);
-        for (var i in this) {
-            this[i] = removed(i);
-        }
-    };
-    var setproto = R.st;
-    for (var method in elproto) if (elproto[has](method) && !setproto[has](method)) {
-        setproto[method] = (function (methodname) {
-            return function () {
-                var arg = arguments;
-                return this.forEach(function (el) {
-                    el[methodname].apply(el, arg);
-                });
-            };
-        })(method);
-    }
-}(window.Raphael);
-
-// ┌─────────────────────────────────────────────────────────────────────┐ \\
-// │ Raphaël 2 - JavaScript Vector Library                               │ \\
-// ├─────────────────────────────────────────────────────────────────────┤ \\
-// │ VML Module                                                          │ \\
-// ├─────────────────────────────────────────────────────────────────────┤ \\
-// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\
-// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\
-// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\
-// └─────────────────────────────────────────────────────────────────────┘ \\
-window.Raphael.vml && function (R) {
-    var has = "hasOwnProperty",
-        Str = String,
-        toFloat = parseFloat,
-        math = Math,
-        round = math.round,
-        mmax = math.max,
-        mmin = math.min,
-        abs = math.abs,
-        fillString = "fill",
-        separator = /[, ]+/,
-        eve = R.eve,
-        ms = " progid:DXImageTransform.Microsoft",
-        S = " ",
-        E = "",
-        map = {M: "m", L: "l", C: "c", Z: "x", m: "t", l: "r", c: "v", z: "x"},
-        bites = /([clmz]),?([^clmz]*)/gi,
-        blurregexp = / progid:\S+Blur\([^\)]+\)/g,
-        val = /-?[^,\s-]+/g,
-        cssDot = "position:absolute;left:0;top:0;width:1px;height:1px",
-        zoom = 21600,
-        pathTypes = {path: 1, rect: 1, image: 1},
-        ovalTypes = {circle: 1, ellipse: 1},
-        path2vml = function (path) {
-            var total =  /[ahqstv]/ig,
-                command = R._pathToAbsolute;
-            Str(path).match(total) && (command = R._path2curve);
-            total = /[clmz]/g;
-            if (command == R._pathToAbsolute && !Str(path).match(total)) {
-                var res = Str(path).replace(bites, function (all, command, args) {
-                    var vals = [],
-                        isMove = command.toLowerCase() == "m",
-                        res = map[command];
-                    args.replace(val, function (value) {
-                        if (isMove && vals.length == 2) {
-                            res += vals + map[command == "m" ? "l" : "L"];
-                            vals = [];
-                        }
-                        vals.push(round(value * zoom));
-                    });
-                    return res + vals;
-                });
-                return res;
-            }
-            var pa = command(path), p, r;
-            res = [];
-            for (var i = 0, ii = pa.length; i < ii; i++) {
-                p = pa[i];
-                r = pa[i][0].toLowerCase();
-                r == "z" && (r = "x");
-                for (var j = 1, jj = p.length; j < jj; j++) {
-                    r += round(p[j] * zoom) + (j != jj - 1 ? "," : E);
-                }
-                res.push(r);
-            }
-            return res.join(S);
-        },
-        compensation = function (deg, dx, dy) {
-            var m = R.matrix();
-            m.rotate(-deg, .5, .5);
-            return {
-                dx: m.x(dx, dy),
-                dy: m.y(dx, dy)
-            };
-        },
-        setCoords = function (p, sx, sy, dx, dy, deg) {
-            var _ = p._,
-                m = p.matrix,
-                fillpos = _.fillpos,
-                o = p.node,
-                s = o.style,
-                y = 1,
-                flip = "",
-                dxdy,
-                kx = zoom / sx,
-                ky = zoom / sy;
-            s.visibility = "hidden";
-            if (!sx || !sy) {
-                return;
-            }
-            o.coordsize = abs(kx) + S + abs(ky);
-            s.rotation = deg * (sx * sy < 0 ? -1 : 1);
-            if (deg) {
-                var c = compensation(deg, dx, dy);
-                dx = c.dx;
-                dy = c.dy;
-            }
-            sx < 0 && (flip += "x");
-            sy < 0 && (flip += " y") && (y = -1);
-            s.flip = flip;
-            o.coordorigin = (dx * -kx) + S + (dy * -ky);
-            if (fillpos || _.fillsize) {
-                var fill = o.getElementsByTagName(fillString);
-                fill = fill && fill[0];
-                o.removeChild(fill);
-                if (fillpos) {
-                    c = compensation(deg, m.x(fillpos[0], fillpos[1]), m.y(fillpos[0], fillpos[1]));
-                    fill.position = c.dx * y + S + c.dy * y;
-                }
-                if (_.fillsize) {
-                    fill.size = _.fillsize[0] * abs(sx) + S + _.fillsize[1] * abs(sy);
-                }
-                o.appendChild(fill);
-            }
-            s.visibility = "visible";
-        };
-    R.toString = function () {
-        return  "Your browser doesn\u2019t support SVG. Falling down to VML.\nYou are running Rapha\xebl " + this.version;
-    };
-    addArrow = function (o, value, isEnd) {
-        var values = Str(value).toLowerCase().split("-"),
-            se = isEnd ? "end" : "start",
-            i = values.length,
-            type = "classic",
-            w = "medium",
-            h = "medium";
-        while (i--) {
-            switch (values[i]) {
-                case "block":
-                case "classic":
-                case "oval":
-                case "diamond":
-                case "open":
-                case "none":
-                    type = values[i];
-                    break;
-                case "wide":
-                case "narrow": h = values[i]; break;
-                case "long":
-                case "short": w = values[i]; break;
-            }
-        }
-        var stroke = o.node.getElementsByTagName("stroke")[0];
-        stroke[se + "arrow"] = type;
-        stroke[se + "arrowlength"] = w;
-        stroke[se + "arrowwidth"] = h;
-    };
-    setFillAndStroke = function (o, params) {
-        // o.paper.canvas.style.display = "none";
-        o.attrs = o.attrs || {};
-        var node = o.node,
-            a = o.attrs,
-            s = node.style,
-            xy,
-            newpath = pathTypes[o.type] && (params.x != a.x || params.y != a.y || params.width != a.width || params.height != a.height || params.cx != a.cx || params.cy != a.cy || params.rx != a.rx || params.ry != a.ry || params.r != a.r),
-            isOval = ovalTypes[o.type] && (a.cx != params.cx || a.cy != params.cy || a.r != params.r || a.rx != params.rx || a.ry != params.ry),
-            res = o;
-
-
-        for (var par in params) if (params[has](par)) {
-            a[par] = params[par];
-        }
-        if (newpath) {
-            a.path = R._getPath[o.type](o);
-            o._.dirty = 1;
-        }
-        params.href && (node.href = params.href);
-        params.title && (node.title = params.title);
-        params.target && (node.target = params.target);
-        params.cursor && (s.cursor = params.cursor);
-        "blur" in params && o.blur(params.blur);
-        if (params.path && o.type == "path" || newpath) {
-            node.path = path2vml(~Str(a.path).toLowerCase().indexOf("r") ? R._pathToAbsolute(a.path) : a.path);
-            if (o.type == "image") {
-                o._.fillpos = [a.x, a.y];
-                o._.fillsize = [a.width, a.height];
-                setCoords(o, 1, 1, 0, 0, 0);
-            }
-        }
-        "transform" in params && o.transform(params.transform);
-        if (isOval) {
-            var cx = +a.cx,
-                cy = +a.cy,
-                rx = +a.rx || +a.r || 0,
-                ry = +a.ry || +a.r || 0;
-            node.path = R.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x", round((cx - rx) * zoom), round((cy - ry) * zoom), round((cx + rx) * zoom), round((cy + ry) * zoom), round(cx * zoom));
-        }
-        if ("clip-rect" in params) {
-            var rect = Str(params["clip-rect"]).split(separator);
-            if (rect.length == 4) {
-                rect[2] = +rect[2] + (+rect[0]);
-                rect[3] = +rect[3] + (+rect[1]);
-                var div = node.clipRect || R._g.doc.createElement("div"),
-                    dstyle = div.style;
-                dstyle.clip = R.format("rect({1}px {2}px {3}px {0}px)", rect);
-                if (!node.clipRect) {
-                    dstyle.position = "absolute";
-                    dstyle.top = 0;
-                    dstyle.left = 0;
-                    dstyle.width = o.paper.width + "px";
-                    dstyle.height = o.paper.height + "px";
-                    node.parentNode.insertBefore(div, node);
-                    div.appendChild(node);
-                    node.clipRect = div;
-                }
-            }
-            if (!params["clip-rect"]) {
-                node.clipRect && (node.clipRect.style.clip = E);
-            }
-        }
-        if (o.textpath) {
-            var textpathStyle = o.textpath.style;
-            params.font && (textpathStyle.font = params.font);
-            params["font-family"] && (textpathStyle.fontFamily = '"' + params["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g, E) + '"');
-            params["font-size"] && (textpathStyle.fontSize = params["font-size"]);
-            params["font-weight"] && (textpathStyle.fontWeight = params["font-weight"]);
-            params["font-style"] && (textpathStyle.fontStyle = params["font-style"]);
-        }
-        if ("arrow-start" in params) {
-            addArrow(res, params["arrow-start"]);
-        }
-        if ("arrow-end" in params) {
-            addArrow(res, params["arrow-end"], 1);
-        }
-        if (params.opacity != null || 
-            params["stroke-width"] != null ||
-            params.fill != null ||
-            params.src != null ||
-            params.stroke != null ||
-            params["stroke-width"] != null ||
-            params["stroke-opacity"] != null ||
-            params["fill-opacity"] != null ||
-            params["stroke-dasharray"] != null ||
-            params["stroke-miterlimit"] != null ||
-            params["stroke-linejoin"] != null ||
-            params["stroke-linecap"] != null) {
-            var fill = node.getElementsByTagName(fillString),
-                newfill = false;
-            fill = fill && fill[0];
-            !fill && (newfill = fill = createNode(fillString));
-            if (o.type == "image" && params.src) {
-                fill.src = params.src;
-            }
-            params.fill && (fill.on = true);
-            if (fill.on == null || params.fill == "none" || params.fill === null) {
-                fill.on = false;
-            }
-            if (fill.on && params.fill) {
-                var isURL = Str(params.fill).match(R._ISURL);
-                if (isURL) {
-                    fill.parentNode == node && node.removeChild(fill);
-                    fill.rotate = true;
-                    fill.src = isURL[1];
-                    fill.type = "tile";
-                    var bbox = o.getBBox(1);
-                    fill.position = bbox.x + S + bbox.y;
-                    o._.fillpos = [bbox.x, bbox.y];
-
-                    R._preload(isURL[1], function () {
-                        o._.fillsize = [this.offsetWidth, this.offsetHeight];
-                    });
-                } else {
-                    fill.color = R.getRGB(params.fill).hex;
-                    fill.src = E;
-                    fill.type = "solid";
-                    if (R.getRGB(params.fill).error && (res.type in {circle: 1, ellipse: 1} || Str(params.fill).charAt() != "r") && addGradientFill(res, params.fill, fill)) {
-                        a.fill = "none";
-                        a.gradient = params.fill;
-                        fill.rotate = false;
-                    }
-                }
-            }
-            if ("fill-opacity" in params || "opacity" in params) {
-                var opacity = ((+a["fill-opacity"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1) * ((+R.getRGB(params.fill).o + 1 || 2) - 1);
-                opacity = mmin(mmax(opacity, 0), 1);
-                fill.opacity = opacity;
-                if (fill.src) {
-                    fill.color = "none";
-                }
-            }
-            node.appendChild(fill);
-            var stroke = (node.getElementsByTagName("stroke") && node.getElementsByTagName("stroke")[0]),
-            newstroke = false;
-            !stroke && (newstroke = stroke = createNode("stroke"));
-            if ((params.stroke && params.stroke != "none") ||
-                params["stroke-width"] ||
-                params["stroke-opacity"] != null ||
-                params["stroke-dasharray"] ||
-                params["stroke-miterlimit"] ||
-                params["stroke-linejoin"] ||
-                params["stroke-linecap"]) {
-                stroke.on = true;
-            }
-            (params.stroke == "none" || params.stroke === null || stroke.on == null || params.stroke == 0 || params["stroke-width"] == 0) && (stroke.on = false);
-            var strokeColor = R.getRGB(params.stroke);
-            stroke.on && params.stroke && (stroke.color = strokeColor.hex);
-            opacity = ((+a["stroke-opacity"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1) * ((+strokeColor.o + 1 || 2) - 1);
-            var width = (toFloat(params["stroke-width"]) || 1) * .75;
-            opacity = mmin(mmax(opacity, 0), 1);
-            params["stroke-width"] == null && (width = a["stroke-width"]);
-            params["stroke-width"] && (stroke.weight = width);
-            width && width < 1 && (opacity *= width) && (stroke.weight = 1);
-            stroke.opacity = opacity;
-        
-            params["stroke-linejoin"] && (stroke.joinstyle = params["stroke-linejoin"] || "miter");
-            stroke.miterlimit = params["stroke-miterlimit"] || 8;
-            params["stroke-linecap"] && (stroke.endcap = params["stroke-linecap"] == "butt" ? "flat" : params["stroke-linecap"] == "square" ? "square" : "round");
-            if (params["stroke-dasharray"]) {
-                var dasharray = {
-                    "-": "shortdash",
-                    ".": "shortdot",
-                    "-.": "shortdashdot",
-                    "-..": "shortdashdotdot",
-                    ". ": "dot",
-                    "- ": "dash",
-                    "--": "longdash",
-                    "- .": "dashdot",
-                    "--.": "longdashdot",
-                    "--..": "longdashdotdot"
-                };
-                stroke.dashstyle = dasharray[has](params["stroke-dasharray"]) ? dasharray[params["stroke-dasharray"]] : E;
-            }
-            newstroke && node.appendChild(stroke);
-        }
-        if (res.type == "text") {
-            res.paper.canvas.style.display = E;
-            var span = res.paper.span,
-                m = 100,
-                fontSize = a.font && a.font.match(/\d+(?:\.\d*)?(?=px)/);
-            s = span.style;
-            a.font && (s.font = a.font);
-            a["font-family"] && (s.fontFamily = a["font-family"]);
-            a["font-weight"] && (s.fontWeight = a["font-weight"]);
-            a["font-style"] && (s.fontStyle = a["font-style"]);
-            fontSize = toFloat(fontSize ? fontSize[0] : a["font-size"]);
-            s.fontSize = fontSize * m + "px";
-            res.textpath.string && (span.innerHTML = Str(res.textpath.string).replace(/</g, "&#60;").replace(/&/g, "&#38;").replace(/\n/g, "<br>"));
-            var brect = span.getBoundingClientRect();
-            res.W = a.w = (brect.right - brect.left) / m;
-            res.H = a.h = (brect.bottom - brect.top) / m;
-            // res.paper.canvas.style.display = "none";
-            res.X = a.x;
-            res.Y = a.y + res.H / 2;
-
-            ("x" in params || "y" in params) && (res.path.v = R.format("m{0},{1}l{2},{1}", round(a.x * zoom), round(a.y * zoom), round(a.x * zoom) + 1));
-            var dirtyattrs = ["x", "y", "text", "font", "font-family", "font-weight", "font-style", "font-size"];
-            for (var d = 0, dd = dirtyattrs.length; d < dd; d++) if (dirtyattrs[d] in params) {
-                res._.dirty = 1;
-                break;
-            }
-        
-            // text-anchor emulation
-            switch (a["text-anchor"]) {
-                case "start":
-                    res.textpath.style["v-text-align"] = "left";
-                    res.bbx = res.W / 2;
-                break;
-                case "end":
-                    res.textpath.style["v-text-align"] = "right";
-                    res.bbx = -res.W / 2;
-                break;
-                default:
-                    res.textpath.style["v-text-align"] = "center";
-                    res.bbx = 0;
-                break;
-            }
-            res.textpath.style["v-text-kern"] = true;
-        }
-        // res.paper.canvas.style.display = E;
-    };
-    addGradientFill = function (o, gradient, fill) {
-        o.attrs = o.attrs || {};
-        var attrs = o.attrs,
-            pow = Math.pow,
-            opacity,
-            oindex,
-            type = "linear",
-            fxfy = ".5 .5";
-        o.attrs.gradient = gradient;
-        gradient = Str(gradient).replace(R._radial_gradient, function (all, fx, fy) {
-            type = "radial";
-            if (fx && fy) {
-                fx = toFloat(fx);
-                fy = toFloat(fy);
-                pow(fx - .5, 2) + pow(fy - .5, 2) > .25 && (fy = math.sqrt(.25 - pow(fx - .5, 2)) * ((fy > .5) * 2 - 1) + .5);
-                fxfy = fx + S + fy;
-            }
-            return E;
-        });
-        gradient = gradient.split(/\s*\-\s*/);
-        if (type == "linear") {
-            var angle = gradient.shift();
-            angle = -toFloat(angle);
-            if (isNaN(angle)) {
-                return null;
-            }
-        }
-        var dots = R._parseDots(gradient);
-        if (!dots) {
-            return null;
-        }
-        o = o.shape || o.node;
-        if (dots.length) {
-            o.removeChild(fill);
-            fill.on = true;
-            fill.method = "none";
-            fill.color = dots[0].color;
-            fill.color2 = dots[dots.length - 1].color;
-            var clrs = [];
-            for (var i = 0, ii = dots.length; i < ii; i++) {
-                dots[i].offset && clrs.push(dots[i].offset + S + dots[i].color);
-            }
-            fill.colors = clrs.length ? clrs.join() : "0% " + fill.color;
-            if (type == "radial") {
-                fill.type = "gradientTitle";
-                fill.focus = "100%";
-                fill.focussize = "0 0";
-                fill.focusposition = fxfy;
-                fill.angle = 0;
-            } else {
-                // fill.rotate= true;
-                fill.type = "gradient";
-                fill.angle = (270 - angle) % 360;
-            }
-            o.appendChild(fill);
-        }
-        return 1;
-    };
-    Element = function (node, vml) {
-        this[0] = this.node = node;
-        node.raphael = true;
-        this.id = R._oid++;
-        node.raphaelid = this.id;
-        this.X = 0;
-        this.Y = 0;
-        this.attrs = {};
-        this.paper = vml;
-        this.matrix = R.matrix();
-        this._ = {
-            transform: [],
-            sx: 1,
-            sy: 1,
-            dx: 0,
-            dy: 0,
-            deg: 0,
-            dirty: 1,
-            dirtyT: 1
-        };
-        !vml.bottom && (vml.bottom = this);
-        this.prev = vml.top;
-        vml.top && (vml.top.next = this);
-        vml.top = this;
-        this.next = null;
-    };
-    var elproto = R.el;
-
-    Element.prototype = elproto;
-    elproto.constructor = Element;
-    elproto.transform = function (tstr) {
-        if (tstr == null) {
-            return this._.transform;
-        }
-        var vbs = this.paper._viewBoxShift,
-            vbt = vbs ? "s" + [vbs.scale, vbs.scale] + "-1-1t" + [vbs.dx, vbs.dy] : E,
-            oldt;
-        if (vbs) {
-            oldt = tstr = Str(tstr).replace(/\.{3}|\u2026/g, this._.transform || E);
-        }
-        R._extractTransform(this, vbt + tstr);
-        var matrix = this.matrix.clone(),
-            skew = this.skew,
-            o = this.node,
-            split,
-            isGrad = ~Str(this.attrs.fill).indexOf("-"),
-            isPatt = !Str(this.attrs.fill).indexOf("url(");
-        matrix.translate(-.5, -.5);
-        if (isPatt || isGrad || this.type == "image") {
-            skew.matrix = "1 0 0 1";
-            skew.offset = "0 0";
-            split = matrix.split();
-            if ((isGrad && split.noRotation) || !split.isSimple) {
-                o.style.filter = matrix.toFilter();
-                var bb = this.getBBox(),
-                    bbt = this.getBBox(1),
-                    dx = bb.x - bbt.x,
-                    dy = bb.y - bbt.y;
-                o.coordorigin = (dx * -zoom) + S + (dy * -zoom);
-                setCoords(this, 1, 1, dx, dy, 0);
-            } else {
-                o.style.filter = E;
-                setCoords(this, split.scalex, split.scaley, split.dx, split.dy, split.rotate);
-            }
-        } else {
-            o.style.filter = E;
-            skew.matrix = Str(matrix);
-            skew.offset = matrix.offset();
-        }
-        oldt && (this._.transform = oldt);
-        return this;
-    };
-    elproto.rotate = function (deg, cx, cy) {
-        if (this.removed) {
-            return this;
-        }
-        if (deg == null) {
-            return;
-        }
-        deg = Str(deg).split(separator);
-        if (deg.length - 1) {
-            cx = toFloat(deg[1]);
-            cy = toFloat(deg[2]);
-        }
-        deg = toFloat(deg[0]);
-        (cy == null) && (cx = cy);
-        if (cx == null || cy == null) {
-            var bbox = this.getBBox(1);
-            cx = bbox.x + bbox.width / 2;
-            cy = bbox.y + bbox.height / 2;
-        }
-        this._.dirtyT = 1;
-        this.transform(this._.transform.concat([["r", deg, cx, cy]]));
-        return this;
-    };
-    elproto.translate = function (dx, dy) {
-        if (this.removed) {
-            return this;
-        }
-        dx = Str(dx).split(separator);
-        if (dx.length - 1) {
-            dy = toFloat(dx[1]);
-        }
-        dx = toFloat(dx[0]) || 0;
-        dy = +dy || 0;
-        if (this._.bbox) {
-            this._.bbox.x += dx;
-            this._.bbox.y += dy;
-        }
-        this.transform(this._.transform.concat([["t", dx, dy]]));
-        return this;
-    };
-    elproto.scale = function (sx, sy, cx, cy) {
-        if (this.removed) {
-            return this;
-        }
-        sx = Str(sx).split(separator);
-        if (sx.length - 1) {
-            sy = toFloat(sx[1]);
-            cx = toFloat(sx[2]);
-            cy = toFloat(sx[3]);
-            isNaN(cx) && (cx = null);
-            isNaN(cy) && (cy = null);
-        }
-        sx = toFloat(sx[0]);
-        (sy == null) && (sy = sx);
-        (cy == null) && (cx = cy);
-        if (cx == null || cy == null) {
-            var bbox = this.getBBox(1);
-        }
-        cx = cx == null ? bbox.x + bbox.width / 2 : cx;
-        cy = cy == null ? bbox.y + bbox.height / 2 : cy;
-    
-        this.transform(this._.transform.concat([["s", sx, sy, cx, cy]]));
-        this._.dirtyT = 1;
-        return this;
-    };
-    elproto.hide = function () {
-        !this.removed && (this.node.style.display = "none");
-        return this;
-    };
-    elproto.show = function () {
-        !this.removed && (this.node.style.display = E);
-        return this;
-    };
-    elproto._getBBox = function () {
-        if (this.removed) {
-            return {};
-        }
-        if (this.type == "text") {
-            return {
-                x: this.X + (this.bbx || 0) - this.W / 2,
-                y: this.Y - this.H,
-                width: this.W,
-                height: this.H
-            };
-        } else {
-            return pathDimensions(this.attrs.path);
-        }
-    };
-    elproto.remove = function () {
-        if (this.removed) {
-            return;
-        }
-        this.paper.__set__ && this.paper.__set__.exclude(this);
-        R.eve.unbind("*.*." + this.id);
-        R._tear(this, this.paper);
-        this.node.parentNode.removeChild(this.node);
-        this.shape && this.shape.parentNode.removeChild(this.shape);
-        for (var i in this) {
-            delete this[i];
-        }
-        this.removed = true;
-    };
-    elproto.attr = function (name, value) {
-        if (this.removed) {
-            return this;
-        }
-        if (name == null) {
-            var res = {};
-            for (var a in this.attrs) if (this.attrs[has](a)) {
-                res[a] = this.attrs[a];
-            }
-            res.gradient && res.fill == "none" && (res.fill = res.gradient) && delete res.gradient;
-            res.transform = this._.transform;
-            return res;
-        }
-        if (value == null && R.is(name, "string")) {
-            if (name == fillString && this.attrs.fill == "none" && this.attrs.gradient) {
-                return this.attrs.gradient;
-            }
-            var names = name.split(separator),
-                out = {};
-            for (var i = 0, ii = names.length; i < ii; i++) {
-                name = names[i];
-                if (name in this.attrs) {
-                    out[name] = this.attrs[name];
-                } else if (R.is(this.paper.customAttributes[name], "function")) {
-                    out[name] = this.paper.customAttributes[name].def;
-                } else {
-                    out[name] = R._availableAttrs[name];
-                }
-            }
-            return ii - 1 ? out : out[names[0]];
-        }
-        if (this.attrs && value == null && R.is(name, "array")) {
-            out = {};
-            for (i = 0, ii = name.length; i < ii; i++) {
-                out[name[i]] = this.attr(name[i]);
-            }
-            return out;
-        }
-        var params;
-        if (value != null) {
-            params = {};
-            params[name] = value;
-        }
-        value == null && R.is(name, "object") && (params = name);
-        for (var key in params) {
-            eve("attr." + key + "." + this.id, this, params[key]);
-        }
-        if (params) {
-            for (key in this.paper.customAttributes) if (this.paper.customAttributes[has](key) && params[has](key) && R.is(this.paper.customAttributes[key], "function")) {
-                var par = this.paper.customAttributes[key].apply(this, [].concat(params[key]));
-                this.attrs[key] = params[key];
-                for (var subkey in par) if (par[has](subkey)) {
-                    params[subkey] = par[subkey];
-                }
-            }
-            // this.paper.canvas.style.display = "none";
-            if (params.text && this.type == "text") {
-                this.textpath.string = params.text;
-            }
-            setFillAndStroke(this, params);
-            // this.paper.canvas.style.display = E;
-        }
-        return this;
-    };
-    elproto.toFront = function () {
-        !this.removed && this.node.parentNode.appendChild(this.node);
-        this.paper && this.paper.top != this && R._tofront(this, this.paper);
-        return this;
-    };
-    elproto.toBack = function () {
-        if (this.removed) {
-            return this;
-        }
-        if (this.node.parentNode.firstChild != this.node) {
-            this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild);
-            R._toback(this, this.paper);
-        }
-        return this;
-    };
-    elproto.insertAfter = function (element) {
-        if (this.removed) {
-            return this;
-        }
-        if (element.constructor == R.st.constructor) {
-            element = element[element.length - 1];
-        }
-        if (element.node.nextSibling) {
-            element.node.parentNode.insertBefore(this.node, element.node.nextSibling);
-        } else {
-            element.node.parentNode.appendChild(this.node);
-        }
-        R._insertafter(this, element, this.paper);
-        return this;
-    };
-    elproto.insertBefore = function (element) {
-        if (this.removed) {
-            return this;
-        }
-        if (element.constructor == R.st.constructor) {
-            element = element[0];
-        }
-        element.node.parentNode.insertBefore(this.node, element.node);
-        R._insertbefore(this, element, this.paper);
-        return this;
-    };
-    elproto.blur = function (size) {
-        var s = this.node.runtimeStyle,
-            f = s.filter;
-        f = f.replace(blurregexp, E);
-        if (+size !== 0) {
-            this.attrs.blur = size;
-            s.filter = f + S + ms + ".Blur(pixelradius=" + (+size || 1.5) + ")";
-            s.margin = R.format("-{0}px 0 0 -{0}px", round(+size || 1.5));
-        } else {
-            s.filter = f;
-            s.margin = 0;
-            delete this.attrs.blur;
-        }
-    };
-
-    R._engine.path = function (pathString, vml) {
-        var el = createNode("shape");
-        el.style.cssText = cssDot;
-        el.coordsize = zoom + S + zoom;
-        el.coordorigin = vml.coordorigin;
-        var p = new Element(el, vml),
-            attr = {fill: "none", stroke: "#000"};
-        pathString && (attr.path = pathString);
-        p.type = "path";
-        p.path = [];
-        p.Path = E;
-        setFillAndStroke(p, attr);
-        vml.canvas.appendChild(el);
-        var skew = createNode("skew");
-        skew.on = true;
-        el.appendChild(skew);
-        p.skew = skew;
-        p.transform(E);
-        return p;
-    };
-    R._engine.rect = function (vml, x, y, w, h, r) {
-        var path = R._rectPath(x, y, w, h, r),
-            res = vml.path(path),
-            a = res.attrs;
-        res.X = a.x = x;
-        res.Y = a.y = y;
-        res.W = a.width = w;
-        res.H = a.height = h;
-        a.r = r;
-        a.path = path;
-        res.type = "rect";
-        return res;
-    };
-    R._engine.ellipse = function (vml, x, y, rx, ry) {
-        var res = vml.path(),
-            a = res.attrs;
-        res.X = x - rx;
-        res.Y = y - ry;
-        res.W = rx * 2;
-        res.H = ry * 2;
-        res.type = "ellipse";
-        setFillAndStroke(res, {
-            cx: x,
-            cy: y,
-            rx: rx,
-            ry: ry
-        });
-        return res;
-    };
-    R._engine.circle = function (vml, x, y, r) {
-        var res = vml.path(),
-            a = res.attrs;
-        res.X = x - r;
-        res.Y = y - r;
-        res.W = res.H = r * 2;
-        res.type = "circle";
-        setFillAndStroke(res, {
-            cx: x,
-            cy: y,
-            r: r
-        });
-        return res;
-    };
-    R._engine.image = function (vml, src, x, y, w, h) {
-        var path = R._rectPath(x, y, w, h),
-            res = vml.path(path).attr({stroke: "none"}),
-            a = res.attrs,
-            node = res.node,
-            fill = node.getElementsByTagName(fillString)[0];
-        a.src = src;
-        res.X = a.x = x;
-        res.Y = a.y = y;
-        res.W = a.width = w;
-        res.H = a.height = h;
-        a.path = path;
-        res.type = "image";
-        fill.parentNode == node && node.removeChild(fill);
-        fill.rotate = true;
-        fill.src = src;
-        fill.type = "tile";
-        res._.fillpos = [x, y];
-        res._.fillsize = [w, h];
-        node.appendChild(fill);
-        setCoords(res, 1, 1, 0, 0, 0);
-        return res;
-    };
-    R._engine.text = function (vml, x, y, text) {
-        var el = createNode("shape"),
-            path = createNode("path"),
-            o = createNode("textpath");
-        x = x || 0;
-        y = y || 0;
-        text = text || "";
-        path.v = R.format("m{0},{1}l{2},{1}", round(x * zoom), round(y * zoom), round(x * zoom) + 1);
-        path.textpathok = true;
-        o.string = Str(text);
-        o.on = true;
-        el.style.cssText = cssDot;
-        el.coordsize = zoom + S + zoom;
-        el.coordorigin = "0 0";
-        var p = new Element(el, vml),
-            attr = {
-                fill: "#000",
-                stroke: "none",
-                font: R._availableAttrs.font,
-                text: text
-            };
-        p.shape = el;
-        p.path = path;
-        p.textpath = o;
-        p.type = "text";
-        p.attrs.text = Str(text);
-        p.attrs.x = x;
-        p.attrs.y = y;
-        p.attrs.w = 1;
-        p.attrs.h = 1;
-        setFillAndStroke(p, attr);
-        el.appendChild(o);
-        el.appendChild(path);
-        vml.canvas.appendChild(el);
-        var skew = createNode("skew");
-        skew.on = true;
-        el.appendChild(skew);
-        p.skew = skew;
-        p.transform(E);
-        return p;
-    };
-    R._engine.setSize = function (width, height) {
-        var cs = this.canvas.style;
-        this.width = width;
-        this.height = height;
-        width == +width && (width += "px");
-        height == +height && (height += "px");
-        cs.width = width;
-        cs.height = height;
-        cs.clip = "rect(0 " + width + " " + height + " 0)";
-        if (this._viewBox) {
-            setViewBox.apply(this, this._viewBox);
-        }
-        return this;
-    };
-    R._engine.setViewBox = function (x, y, w, h, fit) {
-        R.eve("setViewBox", this, this._viewBox, [x, y, w, h, fit]);
-        var width = this.width,
-            height = this.height,
-            size = 1 / mmax(w / width, h / height),
-            H, W;
-        if (fit) {
-            H = height / h;
-            W = width / w;
-            if (w * H < width) {
-                x -= (width - w * H) / 2 / H;
-            }
-            if (h * W < height) {
-                y -= (height - h * W) / 2 / W;
-            }
-        }
-        this._viewBox = [x, y, w, h, !!fit];
-        this._viewBoxShift = {
-            dx: -x,
-            dy: -y,
-            scale: size
-        };
-        this.forEach(function (el) {
-            el.transform("...");
-        });
-        return this;
-    };
-    var createNode,
-        initWin = function (win) {
-            var doc = win.document;
-            doc.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)");
-            try {
-                !doc.namespaces.rvml && doc.namespaces.add("rvml", "urn:schemas-microsoft-com:vml");
-                createNode = function (tagName) {
-                    return doc.createElement('<rvml:' + tagName + ' class="rvml">');
-                };
-            } catch (e) {
-                createNode = function (tagName) {
-                    return doc.createElement('<' + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');
-                };
-            }
-        };
-    initWin(R._g.win);
-    R._engine.create = function () {
-        var con = R._getContainer.apply(0, arguments),
-            container = con.container,
-            height = con.height,
-            s,
-            width = con.width,
-            x = con.x,
-            y = con.y;
-        if (!container) {
-            throw new Error("VML container not found.");
-        }
-        var res = new R._Paper,
-            c = res.canvas = R._g.doc.createElement("div"),
-            cs = c.style;
-        x = x || 0;
-        y = y || 0;
-        width = width || 512;
-        height = height || 342;
-        res.width = width;
-        res.height = height;
-        width == +width && (width += "px");
-        height == +height && (height += "px");
-        res.coordsize = zoom * 1e3 + S + zoom * 1e3;
-        res.coordorigin = "0 0";
-        res.span = R._g.doc.createElement("span");
-        res.span.style.cssText = "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;";
-        c.appendChild(res.span);
-        cs.cssText = R.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden", width, height);
-        if (container == 1) {
-            R._g.doc.body.appendChild(c);
-            cs.left = x + "px";
-            cs.top = y + "px";
-            cs.position = "absolute";
-        } else {
-            if (container.firstChild) {
-                container.insertBefore(c, container.firstChild);
-            } else {
-                container.appendChild(c);
-            }
-        }
-        // plugins.call(res, res, R.fn);
-        res.renderfix = function () {};
-        return res;
-    };
-    R.prototype.clear = function () {
-        R.eve("clear", this);
-        this.canvas.innerHTML = E;
-        this.span = R._g.doc.createElement("span");
-        this.span.style.cssText = "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";
-        this.canvas.appendChild(this.span);
-        this.bottom = this.top = null;
-    };
-    R.prototype.remove = function () {
-        R.eve("remove", this);
-        this.canvas.parentNode.removeChild(this.canvas);
-        for (var i in this) {
-            this[i] = removed(i);
-        }
-        return true;
-    };
-
-    var setproto = R.st;
-    for (var method in elproto) if (elproto[has](method) && !setproto[has](method)) {
-        setproto[method] = (function (methodname) {
-            return function () {
-                var arg = arguments;
-                return this.forEach(function (el) {
-                    el[methodname].apply(el, arg);
-                });
-            };
-        })(method);
-    }
-}(window.Raphael);
\ No newline at end of file
--- a/src/js/libs/tracemanager.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/js/libs/tracemanager.js	Thu May 03 17:52:52 2012 +0200
@@ -1,512 +1,540 @@
-/*
- * Modelled Trace API
- */
-IriSP.TraceManager = function($) {
-     // If there are more than MAX_FAILURE_COUNT synchronisation
-     // failures, then disable synchronisation
-     MAX_FAILURE_COUNT = 20;
-
-     // If there are more than MAX_BUFFER_SIZE obsels in the buffer,
-     // then "compress" them as a single "ktbsFullBuffer"
-     MAX_BUFFER_SIZE = 500;
-
-     var BufferedService_prototype = {
-         /*
-          *  Buffered service for traces
-          */
-         // url: "",
-         // buffer: [],
-         // isReady: false,
-         // timer: null,
-         // failureCount: 0,
-
-         /* Flush buffer */
-         flush: function() {
-             // FIXME: add mutex on this.buffer
-             if (! this.isReady)
-             {
-                 if (window.console) window.console.log("Sync service not ready");
-             } else if (this.failureCount > MAX_FAILURE_COUNT)
-             {
-                 // Disable synchronisation
-                 this.set_sync_mode('none');
-             } else if (this.buffer.length) {
-                 var temp = this.buffer;
-                 this.buffer = [];
-
-                 if (this.mode == 'GET')
-                 {
-                     // GET mode: do some data mangline. We mark the
-                     // "compressed" nature of the generated JSON by
-                     // prefixing it with c
-                     var data = 'c' + JSON.stringify(temp.map(function (o) { return o.toCompactJSON(); }));
-                     // Swap " (very frequent, which will be
-                     // serialized into %22) and ; (rather rare), this
-                     // saves some bytes
-                     data = data.replace(/[;"]/g, function(s){ return s == ';' ? '"' : ';'; }).replace(/#/g, '%23');
-                     // FIXME: check data length (< 2K is safe)
-                     var request=$('<img />').error( function() { this.failureCount += 1; })
-                         .load( function() { this.failureCount = 0; })
-                         .attr('src', this.url + 'trace/?data=' + data);
-                 }
-                 else
-                 {
-                     $.ajax({ url: this.url + 'trace/',
-                              type: 'POST',
-                              contentType: 'application/json',
-                              data: JSON.stringify(temp.map(function (o) { return o.toJSON(); })),
-                              processData: false,
-                              // Type of the returned data.
-                              dataType: "html",
-                              error: function(jqXHR, textStatus, errorThrown) {
-                                  if (window.console) window.console.log("Error when sending buffer:", textStatus);
-                                  this.failureCount += 1;
-                              },
-                              success: function(data, textStatus, jqXHR) {
-                                  // Reset failureCount to 0 as soon as there is 1 valid answer
-                                  this.failureCount = 0;
-                              }
-                            });
-                 }
-             }
-         },
-
-         /* Sync mode: delayed, sync (immediate sync), none (no
-          * synchronisation with server, the trace has to be explicitly saved
-          * if needed */
-         set_sync_mode: function(mode) {
-             this.sync_mode = mode;
-             if (! this.isReady && mode !== "none")
-                 this.init();
-             if (mode == 'delayed') {
-                 this.start_timer();
-             } else {
-                 this.stop_timer();
-             }
-         },
-
-         /* Enqueue an obsel */
-         enqueue: function(obsel) {
-             if (this.buffer.length > MAX_BUFFER_SIZE)
-             {
-                 obsel = new Obsel('ktbsFullBuffer', this.buffer[0].begin,
-                                   this.buffer[this.buffer.length - 1].end, this.buffer[0].subject);
-                 obsel.trace = this.buffer[0].trace;
-                 this.buffer = [];
-             }
-             this.buffer.push(obsel);
-             if (this.sync_mode === 'sync') {
-                 // Immediate sync of the obsel.
-                 this.flush();
-             }
-         },
-
-         start_timer: function() {
-             var self = this;
-             if (this.timer === null) {
-                 this.timer = window.setInterval(function() {
-                                                     self.flush();
-                                                 }, this.timeOut);
-             }
-         },
-
-         stop_timer: function() {
-             if (this.timer !== null) {
-                 window.clearInterval(this.timer);
-                 this.timer = null;
-             }
-         },
-
-         /*
-          * Initialize the sync service
-          */
-         init: function() {
-             var self = this;
-             if (this.isReady)
-                 /* Already initialized */
-                 return;
-             if (this.mode == 'GET')
-             {
-                 var request=$('<img/>').attr('src', this.url + 'login?userinfo={"name":"ktbs4js"}');
-                 // Do not wait for the return, assume it is
-                 // initialized. This assumption will not work anymore
-                 // if login returns some necessary information
-                 this.isReady = true;
-             }
-             else
-             {
-                 $.ajax({ url: this.url + 'login',
-                          type: 'POST',
-                          data: 'userinfo={"name":"ktbs4js"}',
-                          success: function(data, textStatus, jqXHR) {
-                              self.isReady = true;
-                              if (self.buffer.length) {
-                                  self.flush();
-                              }
-                          }
-                        });
-             }
-         }
-     };
-     var BufferedService = function(url, mode) {
-         this.url = url;
-         this.buffer = [];
-         this.isReady = false;
-         this.timer = null;
-         this.failureCount = 0;
-         // sync_mode is either "none", "sync" or "buffered"
-         this.sync_mode = "none";
-         /* mode can be either POST or GET */
-         if (mode == 'POST' || mode == 'GET')
-             this.mode = mode;
-         else
-             this.mode = 'POST';
-         /* Flush buffer every timeOut ms if the sync_mode is delayed */
-         this.timeOut = 2000;
-     };
-     BufferedService.prototype = BufferedService_prototype;
-
-     var Trace_prototype = {
-         /* FIXME: We could/should use a sorted list such as
-          http://closure-library.googlecode.com/svn/docs/class_goog_structs_AvlTree.html
-          to speed up queries based on time */
-         obsels: [],
-         /* Trace URI */
-         uri: "",
-         default_subject: "",
-         /* baseuri is used as the base URI to resolve relative
-          * attribute-type names in obsels. Strictly speaking, this
-          * should rather be expressed as a reference to model, or
-          * more generically, as a qname/URI dict */
-         baseuri: "",
-         /* Mapping of obsel type or property name to a compact
-          * representation (shorthands).
-          */
-         shorthands: null,
-         syncservice: null,
-
-         /* Define the trace URI */
-         set_uri: function(uri) {
-             this.uri = uri;
-         },
-
-         /* Sync mode: delayed, sync (immediate sync), none (no
-          * synchronisation with server, the trace has to be explicitly saved
-          * if needed */
-         set_sync_mode: function(mode) {
-             if (this.syncservice !== null) {
-                 this.syncservice.set_sync_mode(mode);
-             }
-         },
-
-         /*
-          * Return a list of the obsels of this trace matching the parameters
-          */
-         list_obsels: function(_begin, _end, _reverse) {
-             var res;
-             if (typeof _begin !== 'undefined' || typeof _end !== 'undefined') {
-                 /*
-                  * Not optimized yet.
-                  */
-                 res = [];
-                 var l = this.obsels.length;
-                 for (var i = 0; i < l; i++) {
-                     var o = this.obsels[i];
-                     if ((typeof _begin !== 'undefined' && o.begin > _begin) && (typeof _end !== 'undefined' && o.end < _end)) {
-                         res.push(o);
-                     }
-                 }
-             }
-
-             if (typeof _reverse !== 'undefined') {
-                 if (res !== undefined) {
-                     /* Should reverse the whole list. Make a copy. */
-                     res = this.obsels.slice(0);
-                 }
-                 res.sort(function(a, b) { return b.begin - a.begin; });
-                 return res;
-             }
-
-             if (res === undefined) {
-                 res = this.obsels;
-             }
-             return res;
-
-         },
-
-         /*
-          * Return the obsel of this trace identified by the URI, or undefined
-          */
-         get_obsel: function(id) {
-             for (var i = 0; i < this.obsels.length; i++) {
-                 /* FIXME: should check against variations of id/uri, take this.baseuri into account */
-                 if (this.obsels[i].uri === id) {
-                     return this.obsels[i];
-                 }
-             }
-             return undefined;
-         },
-
-         set_default_subject: function(subject) {
-             this.default_subject = subject;
-         },
-
-         get_default_subject: function() {
-             return this.default_subject;
-         },
-
-         /* (type:ObselType, begin:int, end:int?, subject:str?, attributes:[AttributeType=>any]?) */
-         /* Create a new obsel and add it to the trace */
-         create_obsel: function(type, begin, end, subject, _attributes) {
-             var o = new Obsel(type, begin, end, subject);
-             if (typeof _attributes !== 'undefined') {
-                 o.attributes = _attributes;
-             }
-             o.trace = this;
-             this.obsels.push(o);
-             if (this.syncservice !== null)
-                 this.syncservice.enqueue(o);
-         },
-
-         /* Helper methods */
-
-         /* Create a new obsel with the given attributes */
-         trace: function(type, _attributes, _begin, _end, _subject) {
-             var t = (new Date()).getTime();
-             if (typeof begin === 'undefined') {
-                 _begin = t;
-             }
-             if (typeof end === 'undefined') {
-                 _end = _begin;
-             }
-             if (typeof subject === 'undefined') {
-                 _subject = this.default_subject;
-             }
-             if (typeof _attributes === 'undefined') {
-                 _attributes = {};
-             }
-             return this.create_obsel(type, _begin, _end, _subject, _attributes);
-         }
-     };
-
-     var Trace = function(uri, requestmode) {
-         /* FIXME: We could/should use a sorted list such as
-          http://closure-library.googlecode.com/svn/docs/class_goog_structs_AvlTree.html
-          to speed up queries based on time */
-         this.obsels = [];
-         /* Trace URI */
-         if (uri === undefined)
-             uri = "";
-         this.uri = uri;
-         this.sync_mode = "none";
-         this.default_subject = "";
-         this.shorthands = {};
-         /* baseuri is used a the base URI to resolve relative attribute names in obsels */
-         this.baseuri = "";
-
-         this.syncservice = new BufferedService(uri, requestmode);
-         $(window).unload( function () {
-                               if (this.syncservice && this.sync_mode !== 'none') {
-                                   this.syncservice.flush();
-                                   this.syncservice.stop_timer();
-                               }
-                           });
-     };
-     Trace.prototype = Trace_prototype;
-
-     var Obsel_prototype = {
-         /* The following attributes are here for documentation
-          * purposes. They MUST be defined in the constructor
-          * function. */
-         trace: undefined,
-         type: undefined,
-         begin: undefined,
-         end: undefined,
-         subject: undefined,
-         /* Dictionary indexed by ObselType URIs */
-         attributes: {},
-
-         /* Method definitions */
-         get_trace: function() {
-             return this.trace;
-         },
-
-         get_obsel_type: function() {
-             return this.type;
-         },
-         get_begin: function() {
-             return this.begin;
-         },
-         get_end: function() {
-             return this.end;
-         },
-         get_subject: function() {
-             return this.subject;
-         },
-
-         list_attribute_types: function() {
-             var result = [];
-             for (var prop in this.attributes) {
-                 if (this.hasOwnProperty(prop))
-                     result.push(prop);
-             }
-             /* FIXME: we return URIs here instead of AttributeType elements */
-             return result;
-         },
-
-         list_relation_types: function() {
-             /* FIXME: not implemented yet */
-         },
-
-         list_related_obsels: function (rt) {
-             /* FIXME: not implemented yet */
-         },
-         list_inverse_relation_types: function () {
-             /* FIXME: not implemented yet */
-         },
-         list_relating_obsels: function (rt) {
-             /* FIXME: not implemented yet */
-         },
-         /*
-          * Return the value of the given attribute type for this obsel
-          */
-         get_attribute_value: function(at) {
-             if (typeof at === "string")
-                 /* It is a URI */
-                 return this.attributes[at];
-             else
-                 /* FIXME: check that at is instance of AttributeType */
-                 return this.attributes[at.uri];
-         },
-
-
-         /* obsel modification (trace amendment) */
-
-         set_attribute_value: function(at, value) {
-             if (typeof at === "string")
-                 /* It is a URI */
-                 this.attributes[at] = value;
-             /* FIXME: check that at is instance of AttributeType */
-             else
-                 this.attributes[at.uri] = value;
-         },
-
-         del_attribute_value: function(at) {
-             if (typeof at === "string")
-                 /* It is a URI */
-                 delete this.attributes[at];
-             /* FIXME: check that at is instance of AttributeType */
-             else
-                 delete this.attributes[at.uri];
-         },
-
-         add_related_obsel: function(rt, value) {
-             /* FIXME: not implemented yet */
-         },
-
-         del_related_obsel: function(rt, value) {
-             /* FIXME: not implemented yet */
-         },
-
-         /*
-          * Return a JSON representation of the obsel
-          */
-         toJSON: function() {
-             var r = {
-                 "@id": this.id,
-                 "@type": this.type,
-                 "begin": this.begin,
-                 "end": this.end,
-                 "subject": this.subject
-             };
-             for (var prop in this.attributes) {
-                 if (this.hasOwnProperty(prop))
-                     r[prop] = this.attributes[prop];
-             }
-             return r;
-         },
-
-         /*
-          * Return a compact JSON representation of the obsel.
-          * Use predefined + custom shorthands for types/properties
-          */
-         toCompactJSON: function() {
-             var r = {
-                 "@i": this.id,
-                 "@t": (this.trace.shorthands.hasOwnProperty(this.type) ? this.trace.shorthands[this.type] : this.type),
-                 "@b": this.begin,
-                 "@s": this.subject
-             };
-             // Store duration (to save some bytes) and only if it is non-null
-             if (this.begin !== this.end)
-                 r["@d"] = this.end - this.begin;
-
-             for (var prop in this.attributes) {
-                 if (this.hasOwnProperty(prop))
-                 {
-                     var v = this.attributes[prop];
-                     r[prop] = this.trace.shorthands.hasOwnProperty(v) ? this.trace.shorthands[v] : v;
-                 }
-             }
-             return r;
-         },
-
-         toJSONstring: function() {
-             return JSON.stringify(this.toJSON());
-         }
-     };
-
-     var Obsel = function(type, begin, end, subject, attributes) {
-         this.trace = undefined;
-         this.uri = "";
-         this.id = "";
-         this.type = type;
-         this.begin = begin;
-         this.end = end;
-         this.subject = subject;
-         /* Is the obsel synched with the server ? */
-         this.sync_status = false;
-         /* Dictionary indexed by ObselType URIs */
-         this.attributes = {};
-     };
-     Obsel.prototype = Obsel_prototype;
-
-     var TraceManager_prototype = {
-         traces: [],
-         /*
-          * Return the trace with id name
-          * If it was not registered, return undefined.
-          */
-         get_trace: function(name) {
-             return this.traces[name];
-         },
-
-         /*
-          * Explicitly create and initialize a new trace with the given name.
-          * The optional uri parameter allows to initialize the trace URI.
-          *
-          * If another existed with the same name before, then it is replaced by a new one.
-          */
-         init_trace: function(name, params)
-         {
-             if (window.console) window.console.log("init_trace", params);
-             url = params.url ? params.url : "";
-             requestmode = params.requestmode ? params.requestmode : "POST";
-             syncmode = params.syncmode ? params.syncmode : "none";
-             default_subject = params.default_subject ? params.default_subject : "default";
-             var t = new Trace(url, requestmode);
-             t.set_sync_mode(syncmode);
-             t.set_default_subject(default_subject);
-             this.traces[name] = t;
-             return t;
-         }
-     };
-
-     var TraceManager = function() {
-         this.traces = {};
-     };
-     TraceManager.prototype = TraceManager_prototype;
-
-     var tracemanager  = new TraceManager();
-     return tracemanager;
- };
+/*
+ * Modelled Trace API
+ *
+ * This file is part of ktbs4js.
+ *
+ * ktbs4js is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * ktbs4js is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with ktbs4js.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+/* FIXME: properly use require.js feature. This will do for debugging in the meantime */
+window.tracemanager = (function($) {
+     // If there are more than MAX_FAILURE_COUNT synchronisation
+     // failures, then disable synchronisation
+     MAX_FAILURE_COUNT = 20;
+
+     // If there are more than MAX_BUFFER_SIZE obsels in the buffer,
+     // then "compress" them as a single "ktbsFullBuffer"
+     MAX_BUFFER_SIZE = 500;
+
+     var BufferedService_prototype = {
+         /*
+          *  Buffered service for traces
+          */
+         // url: "",
+         // buffer: [],
+         // isReady: false,
+         // timer: null,
+         // failureCount: 0,
+
+         /* Flush buffer */
+         flush: function() {
+             // FIXME: add mutex on this.buffer
+             if (! this.isReady)
+             {
+                 if (window.console) window.console.log("Sync service not ready");
+             } else if (this.failureCount > MAX_FAILURE_COUNT)
+             {
+                 // Disable synchronisation
+                 this.set_sync_mode('none');
+             } else if (this.buffer.length) {
+                 var temp = this.buffer;
+                 this.buffer = [];
+
+                 if (this.mode == 'GET')
+                 {
+                     // GET mode: do some data mangline. We mark the
+                     // "compressed" nature of the generated JSON by
+                     // prefixing it with c
+                     var data = 'c' + JSON.stringify(temp.map(function (o) { return o.toCompactJSON(); }));
+                     // Swap " (very frequent, which will be
+                     // serialized into %22) and ; (rather rare), this
+                     // saves some bytes
+                     data = data.replace(/[;"#]/g, function(s){ return s == ';' ? '"' : ( s == '"' ? ';' : '%23'); });
+                     // FIXME: check data length (< 2K is safe)
+                     var request=$('<img />').error( function() { this.failureCount += 1; })
+                         .load( function() { this.failureCount = 0; })
+                         .attr('src', this.url + 'trace/?data=' + data);
+                 }
+                 else
+                 {
+                     $.ajax({ url: this.url + 'trace/',
+                              type: 'POST',
+                              contentType: 'application/json',
+                              data: JSON.stringify(temp.map(function (o) { return o.toJSON(); })),
+                              processData: false,
+                              // Type of the returned data.
+                              dataType: "html",
+                              error: function(jqXHR, textStatus, errorThrown) {
+                                  if (window.console) window.console.log("Error when sending buffer:", textStatus);
+                                  this.failureCount += 1;
+                              },
+                              success: function(data, textStatus, jqXHR) {
+                                  // Reset failureCount to 0 as soon as there is 1 valid answer
+                                  this.failureCount = 0;
+                              }
+                            });
+                 }
+             }
+         },
+
+         /* Sync mode: delayed, sync (immediate sync), none (no
+          * synchronisation with server, the trace has to be explicitly saved
+          * if needed */
+         set_sync_mode: function(mode, default_subject) {
+             this.sync_mode = mode;
+             if (! this.isReady && mode !== "none")
+                 this.init(default_subject);
+             if (mode == 'delayed') {
+                 this.start_timer();
+             } else {
+                 this.stop_timer();
+             }
+         },
+
+         /* Enqueue an obsel */
+         enqueue: function(obsel) {
+             if (this.buffer.length > MAX_BUFFER_SIZE)
+             {
+                 obsel = new Obsel('ktbsFullBuffer', this.buffer[0].begin,
+                                   this.buffer[this.buffer.length - 1].end, this.buffer[0].subject);
+                 obsel.trace = this.buffer[0].trace;
+                 this.buffer = [];
+             }
+             this.buffer.push(obsel);
+             if (this.sync_mode === 'sync') {
+                 // Immediate sync of the obsel.
+                 this.flush();
+             }
+         },
+
+         start_timer: function() {
+             var self = this;
+             if (this.timer === null) {
+                 this.timer = window.setInterval(function() {
+                                                     self.flush();
+                                                 }, this.timeOut);
+             }
+         },
+
+         stop_timer: function() {
+             if (this.timer !== null) {
+                 window.clearInterval(this.timer);
+                 this.timer = null;
+             }
+         },
+
+         /*
+          * Initialize the sync service
+          */
+         init: function(default_subject) {
+             var self = this;
+             if (this.isReady)
+                 /* Already initialized */
+                 return;
+             if (typeof default_subject === 'undefined')
+                 default_subject = 'anonymous';
+             if (this.mode == 'GET')
+             {
+                 var request=$('<img/>').attr('src', this.url + 'login?userinfo={"default_subject": "' + default_subject + '"}');
+                 // Do not wait for the return, assume it is
+                 // initialized. This assumption will not work anymore
+                 // if login returns some necessary information
+                 this.isReady = true;
+             }
+             else
+             {
+                 $.ajax({ url: this.url + 'login',
+                          type: 'POST',
+                          data: 'userinfo={"default_subject":"' + default_subject + '"}',
+                          success: function(data, textStatus, jqXHR) {
+                              self.isReady = true;
+                              if (self.buffer.length) {
+                                  self.flush();
+                              }
+                          }
+                        });
+             }
+         }
+     };
+     var BufferedService = function(url, mode) {
+         this.url = url;
+         this.buffer = [];
+         this.isReady = false;
+         this.timer = null;
+         this.failureCount = 0;
+         // sync_mode is either "none", "sync" or "buffered"
+         this.sync_mode = "none";
+         /* mode can be either POST or GET */
+         if (mode == 'POST' || mode == 'GET')
+             this.mode = mode;
+         else
+             this.mode = 'POST';
+         /* Flush buffer every timeOut ms if the sync_mode is delayed */
+         this.timeOut = 2000;
+     };
+     BufferedService.prototype = BufferedService_prototype;
+
+     var Trace_prototype = {
+         /* FIXME: We could/should use a sorted list such as
+          http://closure-library.googlecode.com/svn/docs/class_goog_structs_AvlTree.html
+          to speed up queries based on time */
+         obsels: [],
+         /* Trace URI */
+         uri: "",
+         default_subject: "",
+         /* baseuri is used as the base URI to resolve relative
+          * attribute-type names in obsels. Strictly speaking, this
+          * should rather be expressed as a reference to model, or
+          * more generically, as a qname/URI dict */
+         baseuri: "",
+         /* Mapping of obsel type or property name to a compact
+          * representation (shorthands).
+          */
+         shorthands: null,
+         syncservice: null,
+
+         /* Define the trace URI */
+         set_uri: function(uri) {
+             this.uri = uri;
+         },
+
+         /* Sync mode: delayed, sync (immediate sync), none (no
+          * synchronisation with server, the trace has to be explicitly saved
+          * if needed */
+         set_sync_mode: function(mode) {
+             if (this.syncservice !== null) {
+                 this.syncservice.set_sync_mode(mode, this.default_subject);
+             }
+         },
+
+         /*
+          * Return a list of the obsels of this trace matching the parameters
+          */
+         list_obsels: function(_begin, _end, _reverse) {
+             var res;
+             if (typeof _begin !== 'undefined' || typeof _end !== 'undefined') {
+                 /*
+                  * Not optimized yet.
+                  */
+                 res = [];
+                 var l = this.obsels.length;
+                 for (var i = 0; i < l; i++) {
+                     var o = this.obsels[i];
+                     if ((typeof _begin !== 'undefined' && o.begin > _begin) && (typeof _end !== 'undefined' && o.end < _end)) {
+                         res.push(o);
+                     }
+                 }
+             }
+
+             if (typeof _reverse !== 'undefined') {
+                 if (res !== undefined) {
+                     /* Should reverse the whole list. Make a copy. */
+                     res = this.obsels.slice(0);
+                 }
+                 res.sort(function(a, b) { return b.begin - a.begin; });
+                 return res;
+             }
+
+             if (res === undefined) {
+                 res = this.obsels;
+             }
+             return res;
+
+         },
+
+         /*
+          * Return the obsel of this trace identified by the URI, or undefined
+          */
+         get_obsel: function(id) {
+             for (var i = 0; i < this.obsels.length; i++) {
+                 /* FIXME: should check against variations of id/uri, take this.baseuri into account */
+                 if (this.obsels[i].uri === id) {
+                     return this.obsels[i];
+                 }
+             }
+             return undefined;
+         },
+
+         set_default_subject: function(subject) {
+             // FIXME: if we call this method after the sync_service
+             // init method, then the default_subject will not be
+             // consistent anymore. Maybe we should then call init() again?
+             this.default_subject = subject;
+         },
+
+         get_default_subject: function() {
+             return this.default_subject;
+         },
+
+         /* (type:ObselType, begin:int, end:int?, subject:str?, attributes:[AttributeType=>any]?) */
+         /* Create a new obsel and add it to the trace */
+         create_obsel: function(type, begin, end, subject, _attributes) {
+             var o = new Obsel(type, begin, end, subject);
+             if (typeof _attributes !== 'undefined') {
+                 o.attributes = _attributes;
+             }
+             o.trace = this;
+             this.obsels.push(o);
+             if (this.syncservice !== null)
+                 this.syncservice.enqueue(o);
+         },
+
+         /* Helper methods */
+
+         /* Create a new obsel with the given attributes */
+         trace: function(type, _attributes, _begin, _end, _subject) {
+             var t = (new Date()).getTime();
+             if (typeof begin === 'undefined') {
+                 _begin = t;
+             }
+             if (typeof end === 'undefined') {
+                 _end = _begin;
+             }
+             if (typeof subject === 'undefined') {
+                 _subject = this.default_subject;
+             }
+             if (typeof _attributes === 'undefined') {
+                 _attributes = {};
+             }
+             return this.create_obsel(type, _begin, _end, _subject, _attributes);
+         }
+     };
+
+     var Trace = function(uri, requestmode) {
+         /* FIXME: We could/should use a sorted list such as
+          http://closure-library.googlecode.com/svn/docs/class_goog_structs_AvlTree.html
+          to speed up queries based on time */
+         this.obsels = [];
+         /* Trace URI */
+         if (uri === undefined)
+             uri = "";
+         this.uri = uri;
+         this.sync_mode = "none";
+         this.default_subject = "";
+         this.shorthands = {};
+         /* baseuri is used a the base URI to resolve relative attribute names in obsels */
+         this.baseuri = "";
+
+         this.syncservice = new BufferedService(uri, requestmode);
+         $(window).unload( function () {
+                               if (this.syncservice && this.sync_mode !== 'none') {
+                                   this.syncservice.flush();
+                                   this.syncservice.stop_timer();
+                               }
+                           });
+     };
+     Trace.prototype = Trace_prototype;
+
+     var Obsel_prototype = {
+         /* The following attributes are here for documentation
+          * purposes. They MUST be defined in the constructor
+          * function. */
+         trace: undefined,
+         type: undefined,
+         begin: undefined,
+         end: undefined,
+         subject: undefined,
+         /* Dictionary indexed by ObselType URIs */
+         attributes: {},
+
+         /* Method definitions */
+         get_trace: function() {
+             return this.trace;
+         },
+
+         get_obsel_type: function() {
+             return this.type;
+         },
+         get_begin: function() {
+             return this.begin;
+         },
+         get_end: function() {
+             return this.end;
+         },
+         get_subject: function() {
+             return this.subject;
+         },
+
+         list_attribute_types: function() {
+             var result = [];
+             for (var prop in this.attributes) {
+                 if (this.attributes.hasOwnProperty(prop))
+                     result.push(prop);
+             }
+             /* FIXME: we return URIs here instead of AttributeType elements */
+             return result;
+         },
+
+         list_relation_types: function() {
+             /* FIXME: not implemented yet */
+         },
+
+         list_related_obsels: function (rt) {
+             /* FIXME: not implemented yet */
+         },
+         list_inverse_relation_types: function () {
+             /* FIXME: not implemented yet */
+         },
+         list_relating_obsels: function (rt) {
+             /* FIXME: not implemented yet */
+         },
+         /*
+          * Return the value of the given attribute type for this obsel
+          */
+         get_attribute_value: function(at) {
+             if (typeof at === "string")
+                 /* It is a URI */
+                 return this.attributes[at];
+             else
+                 /* FIXME: check that at is instance of AttributeType */
+                 return this.attributes[at.uri];
+         },
+
+
+         /* obsel modification (trace amendment) */
+
+         set_attribute_value: function(at, value) {
+             if (typeof at === "string")
+                 /* It is a URI */
+                 this.attributes[at] = value;
+             /* FIXME: check that at is instance of AttributeType */
+             else
+                 this.attributes[at.uri] = value;
+         },
+
+         del_attribute_value: function(at) {
+             if (typeof at === "string")
+                 /* It is a URI */
+                 delete this.attributes[at];
+             /* FIXME: check that at is instance of AttributeType */
+             else
+                 delete this.attributes[at.uri];
+         },
+
+         add_related_obsel: function(rt, value) {
+             /* FIXME: not implemented yet */
+         },
+
+         del_related_obsel: function(rt, value) {
+             /* FIXME: not implemented yet */
+         },
+
+         /*
+          * Return a JSON representation of the obsel
+          */
+         toJSON: function() {
+             var r = {
+                 "@id": this.id,
+                 "@type": this.type,
+                 "begin": this.begin,
+                 "end": this.end,
+                 "subject": this.subject
+             };
+             for (var prop in this.attributes) {
+                 if (this.attributes.hasOwnProperty(prop))
+                     r[prop] = this.attributes[prop];
+             }
+             return r;
+         },
+
+         /*
+          * Return a compact JSON representation of the obsel.
+          * Use predefined + custom shorthands for types/properties
+          */
+         toCompactJSON: function() {
+             var r = {
+                 "@t": (this.trace.shorthands.hasOwnProperty(this.type) ? this.trace.shorthands[this.type] : this.type),
+                 "@b": this.begin,
+             };
+             // Transmit subject only if different from default_subject
+             if (this.subject !== this.trace.default_subject)
+                 r["@s"] = this.subject;
+
+             // Store duration (to save some bytes) and only if it is non-null
+             if (this.begin !== this.end)
+                 r["@d"] = this.end - this.begin;
+
+             // Store id only if != ""
+             if (this.id !== "")
+                 r["@i"] = this.id;
+
+             for (var prop in this.attributes) {
+                 if (this.attributes.hasOwnProperty(prop))
+                 {
+                     var v = this.attributes[prop];
+                     r[prop] = this.trace.shorthands.hasOwnProperty(v) ? this.trace.shorthands[v] : v;
+                 }
+             }
+             return r;
+         },
+
+         toJSONstring: function() {
+             return JSON.stringify(this.toJSON());
+         }
+     };
+
+     var Obsel = function(type, begin, end, subject, attributes) {
+         this.trace = undefined;
+         this.uri = "";
+         this.id = "";
+         this.type = type;
+         this.begin = begin;
+         this.end = end;
+         this.subject = subject;
+         /* Is the obsel synched with the server ? */
+         this.sync_status = false;
+         /* Dictionary indexed by ObselType URIs */
+         this.attributes = {};
+     };
+     Obsel.prototype = Obsel_prototype;
+
+     var TraceManager_prototype = {
+         traces: [],
+         /*
+          * Return the trace with id name
+          * If it was not registered, return undefined.
+          */
+         get_trace: function(name) {
+             return this.traces[name];
+         },
+
+         /*
+          * Explicitly create and initialize a new trace with the given name.
+          * The optional uri parameter allows to initialize the trace URI.
+          *
+          * If another existed with the same name before, then it is replaced by a new one.
+          */
+         init_trace: function(name, params)
+         {
+             if (window.console) window.console.log("init_trace", params);
+             url = params.url ? params.url : "";
+             requestmode = params.requestmode ? params.requestmode : "POST";
+             syncmode = params.syncmode ? params.syncmode : "none";
+             default_subject = params.default_subject ? params.default_subject : "default";
+             var t = new Trace(url, requestmode);
+             t.set_default_subject(default_subject);
+             t.set_sync_mode(syncmode);
+             this.traces[name] = t;
+             return t;
+         }
+     };
+
+     var TraceManager = function() {
+         this.traces = {};
+     };
+     TraceManager.prototype = TraceManager_prototype;
+
+     var tracemanager  = new TraceManager();
+     return tracemanager;
+ })(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/js/libs/underscore-min.js	Thu May 03 17:52:52 2012 +0200
@@ -0,0 +1,30 @@
+// Underscore.js 1.2.3
+// (c) 2009-2011 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore is freely distributable under the MIT license.
+// Portions of Underscore are inspired or borrowed from Prototype,
+// Oliver Steele's Functional, and John Resig's Micro-Templating.
+// For all details and documentation:
+// http://documentcloud.github.com/underscore
+(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==
+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,
+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"&&
+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,
+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,
+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,
+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,
+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,
+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=
+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-
+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},
+[]);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,
+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};
+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,
+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:
+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=
+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,
+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===
+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)==
+"[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,
+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,
+"'")+",'"}).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,
+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);
--- a/src/js/libs/underscore.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-// Underscore.js 1.2.3
-// (c) 2009-2011 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the MIT license.
-// Portions of Underscore are inspired or borrowed from Prototype,
-// Oliver Steele's Functional, and John Resig's Micro-Templating.
-// For all details and documentation:
-// http://documentcloud.github.com/underscore
-(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==
-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,
-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"&&
-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,
-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,
-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,
-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,
-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,
-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=
-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-
-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},
-[]);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,
-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};
-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,
-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:
-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=
-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,
-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===
-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)==
-"[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,
-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,
-"'")+",'"}).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,
-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);
--- a/src/js/main.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-/* main file */
-// Why is it called main ? It only loads the libs !
-
-if(window.IriSP === undefined && window.__IriSP === undefined) {
-    /**
-     @class
-     the object under which everything goes.
-     */
-    IriSP = {};
-
-    /** Alias to IriSP for backward compatibility */
-    __IriSP = IriSP;
-}
-
--- a/src/js/modules.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-/* modules are non-graphical entities, similar to widgets */
-
-// TODO: Unify widgets and modules
-
-IriSP.Module = function(Popcorn, config, Serializer) {
-
-  if (config === undefined || config === null) {
-    config = {}
-  }
-  
-  this._Popcorn = Popcorn;
-  this._config = config;  
-  this._serializer = Serializer;
-};
--- a/src/js/modules/embed.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-/* embed module - listens and relay hash changes to a parent window. */
-
-IriSP.EmbedModule = function(Popcorn, config, Serializer) {
-  IriSP.Module.call(this, Popcorn, config, Serializer);
-
-  window.addEventListener('message', IriSP.wrap(this, this.handleMessages), false);
-  this._Popcorn.listen("IriSP.Mediafragment.hashchange", IriSP.wrap(this, this.relayChanges));
-};
-
-IriSP.EmbedModule.prototype = new IriSP.Module();
-
-IriSP.EmbedModule.prototype.handleMessages = function(e) {
-  if (e.data.type === "hashchange") {
-    window.location.hash = e.data.value;    
-  }  
-};
-
-IriSP.EmbedModule.prototype.relayChanges = function(newHash) {
-  window.parent.postMessage({type: "hashchange", value: newHash}, "*"); 
-  return;
-};
\ No newline at end of file
--- a/src/js/serializers/CinecastSerializer.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/js/serializers/CinecastSerializer.js	Thu May 03 17:52:52 2012 +0200
@@ -153,7 +153,7 @@
         IriSP.jQuery.getJSON(_url, _callback)
     },
     deSerialize : function(_data, _source) {
-        if (typeof _data !== "object" && _data === null) {
+        if (typeof _data !== "object" || _data === null) {
             return;
         }
         if (typeof _data.imports !== "undefined") {
@@ -163,7 +163,7 @@
         }
         IriSP._(this.types).forEach(function(_type, _typename) {
             var _listdata = _data[_type.serialized_name];
-            if (typeof _listdata !== "undefined") {
+            if (typeof _listdata !== "undefined" && _listdata !== null) {
                 var _list = new IriSP.Model.List(_source.directory);
                 if (_listdata.hasOwnProperty("length")) {
                     var _l = _listdata.length;
--- a/src/js/serializers/PlatformSerializer.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/js/serializers/PlatformSerializer.js	Thu May 03 17:52:52 2012 +0200
@@ -141,12 +141,12 @@
         IriSP.jQuery.getJSON(_url, _callback)
     },
     deSerialize : function(_data, _source) {
-        if (typeof _data !== "object" && _data === null) {
+        if (typeof _data !== "object" || _data === null) {
             return;
         }
         IriSP._(this.types).forEach(function(_type, _typename) {
             var _listdata = _data[_type.serialized_name];
-            if (typeof _listdata !== "undefined") {
+            if (typeof _listdata !== "undefined" && _listdata !== null) {
                 var _list = new IriSP.Model.List(_source.directory);
                 if (_listdata.hasOwnProperty("length")) {
                     var _l = _listdata.length;
--- a/src/js/utils.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/js/utils.js	Thu May 03 17:52:52 2012 +0200
@@ -1,5 +1,9 @@
 /* utils.js - various utils that don't belong anywhere else */
 
+IriSP.jqEscape = function(_text) {
+    return text.replace(/(:|\.)/g,'\\$1');
+}
+
 IriSP.getLib = function(lib) {
     if (IriSP.libFiles.useCdn && typeof IriSP.libFiles.cdn[lib] == "string") {
         return IriSP.libFiles.cdn[lib];
@@ -8,7 +12,7 @@
         return IriSP.libFiles.locations[lib];
     }
     if (typeof IriSP.libFiles.inDefaultDir[lib] == "string") {
-        return IriSP.libFiles.defaultDir + IriSP.libFiles.inDefaultDir[lib];
+        return IriSP.libFiles.defaultDir + '/' + IriSP.libFiles.inDefaultDir[lib];
     }
 }
 
@@ -18,136 +22,4 @@
         type : "text/css",
         href : _cssFile
     }).appendTo('head');
-}
-
-/*
-IriSP.padWithZeros = function(num) {
-  if (Math.abs(num) < 10) {
-    return "0" + num.toString();
-  } else {
-    return num.toString();
-  }
-};
-
-/* convert a number of milliseconds to a tuple of the form 
-   [hours, minutes, seconds]
-
-IriSP.msToTime = function(ms) {
-  return IriSP.secondsToTime(ms / 1000);
-}
-
-/* format a tweet - replaces @name by a link to the profile, #hashtag, etc. */
-IriSP.formatTweet = function(tweet) {
-  /*
-    an array of arrays which hold a regexp and its replacement.
-  */
-  var regExps = [
-    /* copied from http://codegolf.stackexchange.com/questions/464/shortest-url-regex-match-in-javascript/480#480 */
-    [/((https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi, "<a href='$1'>$1</a>"],
-    [/@(\w+)/gi, "<a href='http://twitter.com/$1'>@$1</a>"], // matches a @handle
-    [/#(\w+)/gi, "<a href='http://twitter.com/search?q=%23$1'>#$1</a>"],// matches a hashtag
-    [/(\+\+)/gi, "<span class='Ldt-PolemicPlusPlus'>$1</span>"],
-    [/(--)/gi, "<span class='Ldt-PolemicMinusMinus'>$1</span>"],
-    [/(==)/gi, "<span class='Ldt-PolemicEqualEqual'>$1</span>"],
-    [/(\?\?)/gi, "<span class='Ldt-PolemicQuestion'>$1</span>"]
-  ]; 
-
-  var i = 0;
-  for(i = 0; i < regExps.length; i++) {
-     tweet = tweet.replace(regExps[i][0], regExps[i][1]);
-  }
-  
-  return tweet;
-};
-/*
-IriSP.countProperties = function(obj) {
-    var count = 0;
-
-    for(var prop in obj) {
-        if(obj.hasOwnProperty(prop))
-                ++count;
-    }
-
-    return count;
-};
-
-// conversion de couleur Decimal vers HexaDecimal || 000 si fff
-IriSP.DEC_HEXA_COLOR = function (dec) {
-  var val = +dec;
-  var str = val.toString(16);
-  var zeroes = "";
-  if (str.length < 6) {
-    for (var i = 0; i < 6 - str.length; i++)
-      zeroes += "0";
-  }
-  return zeroes + str;
-};
-
-/* shortcut to have global variables in templates
-IriSP.templToHTML = function(template, values) {
-  var params = IriSP._.extend(
-      {
-          "l10n" : IriSP.i18n.getMessages()
-      },
-      values);
-  return Mustache.to_html(template, params);
-};
-
-/* we need to be stricter than encodeURIComponent,
-   because of twitter
-*/  
-IriSP.encodeURI = function(str) {
-  return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').  
-                                 replace(/\)/g, '%29').replace(/\*/g, '%2A');  
-}
-
-IriSP.jqEscape = function(text) {
-   return text.replace(/(:|\.)/g,'\\$1')
-}
-
-IriSP.jqId = function (text) { 
-   return IriSP.jQuery('#' + IriSP.jqEscape(text));
- }  
-
-/** returns an url to share on facebook */
-IriSP.mkFbUrl = function(url, text) {
-  if (typeof(text) === "undefined")
-    text = "I'm watching ";
-  
-  return "http://www.facebook.com/share.php?u=" + IriSP.encodeURI(text) + IriSP.shorten_url(url);
-};
-
-/** returns an url to share on twitter */
-IriSP.mkTweetUrl = function(url, text) {
-  if (typeof(text) === "undefined")
-    text = "I'm watching ";
-  
-  return "http://twitter.com/home?status=" + IriSP.encodeURI(text) + IriSP.shorten_url(url);
-};
-
-/** returns an url to share on google + */
-IriSP.mkGplusUrl = function(url, text) {
-  return "https://plusone.google.com/_/+1/confirm?hl=en&url=" + IriSP.shorten_url(url);
-};
-
-/** get a property that can have multiple names **/
-
-/** issue a call to an url shortener and return the shortened url */
-IriSP.shorten_url = function(url) {
-  return encodeURIComponent(url);
-};
-
-
-/* for ie compatibility
-if (Object.prototype.__defineGetter__&&!Object.defineProperty) {
-   Object.defineProperty=function(obj,prop,desc) {
-      if ("get" in desc) obj.__defineGetter__(prop,desc.get);
-      if ("set" in desc) obj.__defineSetter__(prop,desc.set);
-   }
-}
-*/
-
-/* Creates regexps from text */
-IriSP.regexpFromText = function(_text) {
-    return new RegExp('(' + _text.replace(/(\W)/gim,'\\$1') + ')','gim');
-}
+}
\ No newline at end of file
--- a/src/js/widgets/stackGraphWidget.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-IriSP.StackGraphWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-}
-
-IriSP.StackGraphWidget.prototype = new IriSP.Widget();
-
-IriSP.StackGraphWidget.prototype.draw = function() {
-    var _ = IriSP._;
-    this.height =  this._config.height || 50;
-    this.width = this.selector.width();
-    this.slices = this._config.slices || ~~(this.width/(this.streamgraph ? 20 : 5));
-    _(this.tags).each(function(_a) {
-        _a.regexp = new RegExp(_(_a.keywords).map(function(_k) {
-            return _k.replace(/([\W])/gm,'\\$1');
-        }).join("|"),"im")
-    });
-    this.paper = new Raphael(this.selector[0], this.width, this.height);
-    this.groups = [];
-    this.duration = this.getDuration();
-    
-    var _annotationType = this._serializer.getTweets(),
-        _sliceDuration = ~~ ( this.duration / this.slices),
-        _annotations = this._serializer._data.annotations,
-        _groupedAnnotations = _(_.range(this.slices)).map(function(_i) {
-            return _(_annotations).filter(function(_a){
-                return (_a.begin <= (1 + _i) * _sliceDuration) && (_a.end >= _i * _sliceDuration)
-            });
-        }),
-        _max = IriSP._(_groupedAnnotations).max(function(_g) {
-            return _g.length
-        }).length,
-        _scale = this.height / _max,
-        _width = this.width / this.slices,
-        _showTitle = !this._config.excludeTitle,
-        _showDescription = !this._config.excludeDescription;
-    
-    
-    var _paths = _(this.tags).map(function() {
-        return [];
-    });
-    _paths.push([]);
-    
-    for (var i = 0; i < this.slices; i++) {
-        var _group = _groupedAnnotations[i];
-        if (_group) {
-            var _vol = _(this.tags).map(function() {
-                return 0;
-            });
-            for (var j = 0; j < _group.length; j++){
-           var _txt = (_showTitle ? _group[j].content.title : '') + ' ' + (_showDescription ? _group[j].content.description : '')
-                var _tags = _(this.tags).map(function(_tag) {
-                        return (_txt.search(_tag.regexp) == -1 ? 0 : 1)
-                    }),
-                    _nbtags = _(_tags).reduce(function(_a,_b) {
-                        return _a + _b;
-                    }, 0);
-                if (_nbtags) {
-                    IriSP._(_tags).each(function(_v, _k) {
-                        _vol[_k] += (_v / _nbtags);
-                    });
-                }
-            }
-            var _nbtags = _(_vol).reduce(function(_a,_b) {
-                    return _a + _b;
-                }, 0),
-                _nbneutre = _group.length - _nbtags,
-                _h = _nbneutre * _scale,
-                _base = this.height - _h;
-            if (!this.streamgraph) {
-                this.paper.rect(i * _width, _base, _width - 1, _h ).attr({
-                    "stroke" : "none",
-                    "fill" : this.defaultcolor
-                });
-            }
-           _paths[0].push(_base);
-            for (var j = 0; j < this.tags.length; j++) {
-                _h = _vol[j] * _scale;
-                _base = _base - _h;
-                if (!this.streamgraph) {
-                    this.paper.rect(i * _width, _base, _width - 1, _h ).attr({
-                        "stroke" : "none",
-                        "fill" : this.tags[j].color
-                    });
-                }
-                _paths[j+1].push(_base);
-            }
-            this.groups.push(_(_vol).map(function(_v) {
-                return _v / _group.length;
-            }))
-        } else {
-            for (var j = 0; j < _paths.length; j++) {
-                _paths[j].push(this.height);
-            }
-            this.groups.push(_(this.tags).map(function() {
-                return 0;
-            }));
-        }
-    }
-    
-    if (this.streamgraph) {
-        for (var j = _paths.length - 1; j >= 0; j--) {
-            var _d = _(_paths[j]).reduce(function(_memo, _v, _k) {
-               return _memo + ( _k
-                   ? 'C' + (_k * _width) + ' ' + _paths[j][_k - 1] + ' ' + (_k * _width) + ' ' + _v + ' ' + ((_k + .5) * _width) + ' ' + _v
-                   : 'M0 ' + _v + 'L' + (.5*_width) + ' ' + _v )
-            },'') + 'L' + this.width + ' ' + _paths[j][_paths[j].length - 1] + 'L' + this.width + ' ' + this.height + 'L0 ' + this.height;
-            this.paper.path(_d).attr({
-                "stroke" : "none",
-                "fill" : (j ? this.tags[j-1].color : this.defaultcolor)
-            });
-        }
-    }
-    this.rectangleFocus = this.paper.rect(0,0,_width,this.height)
-        .attr({
-            "stroke" : "none",
-            "fill" : "#ff00ff",
-            "opacity" : 0
-        })
-    this.rectangleProgress = this.paper.rect(0,0,0,this.height)
-        .attr({
-            "stroke" : "none",
-            "fill" : "#808080",
-            "opacity" : .3
-        });
-    this.ligneProgress = this.paper.path("M0 0L0 "+this.height).attr({"stroke":"#ff00ff", "line-width" : 2})
-    
-    this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.timeUpdateHandler));
-    var _this = this;
-    this.selector
-        .click(IriSP.wrap(this, this.clickHandler))
-        .mousemove(function(_e) {
-            _this.updateTooltip(_e);
-            // Trace
-            var relX = _e.pageX - _this.selector.offset().left;
-            var _duration = _this.getDuration();
-            var _time = parseInt((relX / _this.width) * _duration);
-            _this._Popcorn.trigger("IriSP.TraceWidget.MouseEvents", {
-                "widget" : "StackGraphWidget",
-                "type": "mousemove",
-                "x": _e.pageX,
-                "y": _e.pageY,
-                "time": _time
-            });
-
-        })
-        .mouseout(function() {
-            _this.TooltipWidget.hide();
-            _this.rectangleFocus.attr({
-                "opacity" : 0
-            })
-        })
-}
-
-IriSP.StackGraphWidget.prototype.timeUpdateHandler = function() {
-    var _currentTime = this._Popcorn.currentTime(),
-        _x = (1000 * _currentTime / this.duration) * this.width;
-    this.rectangleProgress.attr({
-        "width" : _x
-    });
-    this.ligneProgress.attr({
-        "path" : "M" + _x + " 0L" + _x + " " + this.height
-    })
-}
-
-IriSP.StackGraphWidget.prototype.clickHandler = function(event) {
-  /* Ctrl-C Ctrl-V'ed from another widget
-  */
-
-  var relX = event.pageX - this.selector.offset().left;
-  var newTime = ((relX / this.width) * this.duration/1000).toFixed(2);
-  this._Popcorn.trigger("IriSP.StackGraphWidget.clicked", newTime);
-  this._Popcorn.currentTime(newTime);                                 
-};
-
-IriSP.StackGraphWidget.prototype.updateTooltip = function(event) {
-    var _segment = Math.max(0,Math.min(this.groups.length - 1, Math.floor(this.slices * (event.pageX - this.selector.offset().left)/this.width))),
-        _valeurs = this.groups[_segment],
-        _width = this.width / this.slices,
-        _html = '<ul style="list-style: none; margin: 0; padding: 0;">' + IriSP._(this.tags).map(function(_tag, _i) {
-            return '<li style="clear: both;"><span style="float: left; width: 10px; height: 10px; margin: 2px; background: '
-                + _tag.color
-                + ';"></span>'
-                + ~~(100 * _valeurs[_i])
-                + '% de '
-                + _tag.description
-                + '</li>';
-        }).join('') + '</ul>';
-    this.TooltipWidget._shown = false; // Vraiment, on ne peut pas ouvrir le widget s'il n'est pas encore ouvert ?
-    this.TooltipWidget.show('','',(_segment + .5)* this.width / this.slices, 0);
-    this.TooltipWidget.selector.find(".tip").html(_html);
-    this.rectangleFocus.attr({
-        "x" : _segment * _width,
-        "opacity" : .4
-    })
-}
-
--- a/src/js/widgets/traceWidget.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-IriSP.TraceWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-  this.lastEvent = "";
-  var _this = this,
-    _listeners = {
-        "IriSP.createAnnotationWidget.addedAnnotation" : 0,
-        "IriSP.search.open" : 0,
-        "IriSP.search.closed" : 0,
-        "IriSP.search" : 0,
-        "IriSP.search.cleared" : 0,
-        "IriSP.search.matchFound" : 0,
-        "IriSP.search.noMatchFound" : 0,
-        "IriSP.search.triggeredSearch" : 0,
-        "IriSP.TraceWidget.MouseEvents" : 0,
-        "play" : 0,
-        "pause" : 0,
-        "volumechange" : 0,
-        "seeked" : 0,
-        "play" : 0,
-        "pause" : 0,
-        "timeupdate" : 2000
-    };
-    IriSP._(_listeners).each(function(_ms, _listener) {
-        var _f = function(_arg) {
-            _this.eventHandler(_listener, _arg);
-        }
-        if (_ms) {
-            _f = IriSP.underscore.throttle(_f, _ms);
-        }
-        _this._Popcorn.listen(_listener, _f);
-    });
-    this._Popcorn.listen("timeupdate", IriSP.underscore.throttle(function(_arg) {
-        _this.eventHandler(_listener, _arg);
-    }));
-    
-    this.tracer = IriSP.TraceManager(IriSP.jQuery).init_trace("test", this._config);
-    this.tracer.set_default_subject("default_subject");
-    this.tracer.trace("StartTracing", { "hello": "world" });
-    
-}
-
-IriSP.TraceWidget.prototype = new IriSP.Widget();
-
-IriSP.TraceWidget.prototype.draw = function() {
-    this.mouseLocation = '';
-    var _this = this;
-    IriSP.jQuery(".Ldt-Widget").bind("click mouseover mouseout dragstart dragstop", function(_e) {
-        var _widget = IriSP.jQuery(this).attr("widget-type"),
-            _class = _e.target.className;
-        var _data = {
-            "type": _e.type,
-            "x": _e.clientX,
-            "y": _e.clientY,
-            "widget": _widget
-        }
-        if (typeof _class == "string" && _class.indexOf('Ldt-TraceMe') != -1) {
-            var _name = _e.target.localName,
-                _id = _e.target.id,
-                _text = _e.target.textContent.trim(),
-                _title = _e.target.title,
-                _value = _e.target.value;
-            _data.target = _name + (_id.length ? '#' + IriSP.jqEscape(_id) : '') + (_class.length ? ('.' + IriSP.jqEscape(_class).replace(/\s/g,'.')).replace(/\.Ldt-(Widget|TraceMe)/g,'') : '');
-            if (typeof _title == "string" && _title.length && _title.length < 140) {
-                _data.title = _title;
-            }
-            if (typeof _text == "string" && _text.length && _text.length < 140) {
-                _data.text = _text;
-            }
-            if (typeof _value == "string" && _value.length) {
-                _data.value = _value;
-            }
-            _this._Popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
-        } else {
-            //console.log(_e.type+','+_this.mouseLocation+','+_widget);
-            if (_e.type == "mouseover") {
-                if (_this.mouseLocation != _widget) {
-                    _this._Popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
-                } else {
-                    if (typeof _this.moTimeout != "undefined") {
-                        clearTimeout(_this.moTimeout);
-                        delete _this.moTimeout;
-                    }
-                }
-            }
-            if (_e.type == "click") {
-                _this._Popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
-            }
-            if (_e.type == "mouseout") {
-                if (typeof _this.moTimeout != "undefined") {
-                    clearTimeout(_this.moTimeout);
-                }
-                _this.moTimeout = setTimeout(function() {
-                   if (_data.widget != _this.mouseLocation) {
-                       _this._Popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
-                   }
-                },100);
-            }
-        }
-        _this.mouseLocation = _widget;
-    });
-}
-
-IriSP.TraceWidget.prototype.eventHandler = function(_listener, _arg) {
-    var _traceName = 'Mdp_';
-    if (typeof _arg == "string" || typeof _arg == "number") {
-        _arg = { "value" : _arg }
-    }
-    if (typeof _arg == "undefined") {
-        _arg = {}
-    }
-    switch(_listener) {
-        case 'IriSP.TraceWidget.MouseEvents':
-            _traceName += _arg.widget + '_' + _arg.type;
-            delete _arg.widget;
-            delete _arg.type;
-        break;
-        case 'timeupdate':
-        case 'play':
-        case 'pause':
-            _arg.time = this._Popcorn.currentTime() * 1000;
-        case 'seeked':
-        case 'volumechange':
-            _traceName += 'Popcorn_' + _listener;
-        break;
-        default:
-            _traceName += _listener.replace('IriSP.','').replace('.','_');
-    }
-    this.lastEvent = _traceName;
-    this.tracer.trace(_traceName, _arg);
-    if (this._config.js_console) {
-        console.log("tracer.trace('" + _traceName + "', " + JSON.stringify(_arg) + ");");
-    }
-}
--- a/src/templates/arrowWidget.html	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<div class='Ldt-arrowWidget Ldt-arrowLeftEdge'>
-</div>
--- a/src/templates/loading.html	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-<div class='Ldt-loader' style='width: {{width}}px;'>{{l10n.loading_wait}}</div>
--- a/src/templates/share.html	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-{{! social network sharing template }}
-<a onclick='__IriSP.MyApiPlayer.share(\'delicious\');' title='{{l10n.share_on}} delicious'><span class='share shareDelicious'>&nbsp;</span></a>		
-<a onclick='__IriSP.MyApiPlayer.share(\'facebook\');' title='{{l10n.share_on}} facebook'> <span class='share shareFacebook'>&nbsp;</span></a>
-<a onclick='__IriSP.MyApiPlayer.share(\'twitter\');' title='{{l10n.share_on}} twitter'>  <span class='share shareTwitter'>&nbsp;</span></a>
-<a onclick='__IriSP.MyApiPlayer.share(\'myspace\');' title='{{l10n.share_on}} Myspace'>  <span class='share shareMySpace'>&nbsp;</span></a>
\ No newline at end of file
--- a/src/templates/tooltip.html	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-{{! 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>
--- a/src/templates/tweetWidget.html	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-{{! template for the tweet widget }}
-<div class='Ldt-tweetWidget'>
-  <div class='Ldt-tweet-DoubleBorder'>
-
-      <div class='Ldt-tweetWidgetKeepOpen Ldt-TraceMe' title='dont minimize automatically'></div>
-      <div class='Ldt-tweetWidgetMinimize Ldt-TraceMe' title='minimize window'></div>
-      <div class='Ldt-tweetAvatar'></div>
-      <div class='Ldt-tweetAvatar-profileArrow'></div>
-      <div class='Ldt-tweetContents'></div>
-      <a href='' target='_blank' class='Ldt-Retweet Ldt-TraceMe'><div class='Ldt-RetweetIcon'></div> - Retweet </a>
-      <a href='' target='_blank' class='Ldt-TweetReply Ldt-TraceMe'><div class='Ldt-TweetReplyIcon'></div> - Reply</a>
-
-  </div>
-</div>
--- a/src/widgets/Annotation.css	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/Annotation.css	Thu May 03 17:52:52 2012 +0200
@@ -4,7 +4,6 @@
     border-color: #b7b7b7;
     padding: 0 1px 1px;
     margin: 0;
-    font-family: Helvetica, Arial, sans-serif;
 }
 
 .Ldt-Annotation-Widget.Ldt-Annotation-ShowTop {
--- a/src/widgets/AnnotationsList.css	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/AnnotationsList.css	Thu May 03 17:52:52 2012 +0200
@@ -1,7 +1,6 @@
 /* AnnotationsListWidget */
 
 .Ldt-AnnotationsListWidget {
-    font-family: "Open Sans", Helvetica, Arial, sans-serif;
     border: 1px solid #b6b8b8;
     overflow: auto;
     max-height: 480px;
@@ -22,7 +21,7 @@
     min-height: 60px;
 }
 .Ldt-AnnotationsList-li:hover {
-    background-color: #e9e9e9;
+    background: url(img/pinstripe-grey.png);
 }
 .Ldt-AnnotationsList-highlight {
     background: #F7268E;
@@ -54,7 +53,7 @@
     margin: 2px 2px 0 82px;
     font-weight: bold;
 }
-.Ldt-AnnotationsList-Title a {
+h3.Ldt-AnnotationsList-Title a {
     color: #0068c4;
 }
 p.Ldt-AnnotationsList-Description {
--- a/src/widgets/Arrow.css	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-/*
- * 
- */
-.Ldt-Arrow {
-    margin-top: 1px;
-}
--- a/src/widgets/Arrow.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/Arrow.js	Thu May 03 17:52:52 2012 +0200
@@ -20,7 +20,10 @@
 
 IriSP.Widgets.Arrow.prototype.draw = function() {
     this.height = this.arrow_height + this.base_height;
-    this.$.addClass("Ldt-Arrow").css("height", this.height + "px");
+    this.$.addClass("Ldt-Arrow").css({
+        height: this.height + "px",
+        "margin-top": "1px"
+    });
     this.paper = new Raphael(this.container, this.width, this.height );
     window.myArrow = this;
     this.svgArrow = this.paper.path('M0,' + this.height + 'L' + this.width + ',' + this.height);
--- a/src/widgets/Controller.css	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/Controller.css	Thu May 03 17:52:52 2012 +0200
@@ -2,7 +2,6 @@
 
 .Ldt-Ctrl {
   font-size: 10px;
-  font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
   background:url('img/player_gradient.png') repeat-x transparent ;
   height: 25px;
   border: 1px solid #b6b8b8;
--- a/src/widgets/Controller.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/Controller.js	Thu May 03 17:52:52 2012 +0200
@@ -8,7 +8,10 @@
 
 IriSP.Widgets.Controller.prototype = new IriSP.Widgets.Widget();
 
-IriSP.Widgets.Controller.prototype.defaults = {}
+IriSP.Widgets.Controller.prototype.defaults = {
+    disable_annotate_btn: false,
+    disable_search_btn: false
+}
 
 IriSP.Widgets.Controller.prototype.template =
     '<div class="Ldt-Ctrl">'
@@ -43,33 +46,33 @@
     + '</div>';
 
 IriSP.Widgets.Controller.prototype.messages = {
-    "en": {
-        "play_pause": "Play/Pause",
-        "mute_unmute": "Mute/Unmute",
-        "play": "Play",
-        "pause": "Pause",
-        "mute": "Mute",
-        "unmute": "Unmute",
-        "annotate": "Annotate",
-        "search": "Search",
-        "elapsed_time": "Elapsed time",
-        "total_time": "Total time",
-        "volume": "Volume",
-        "volume_control": "Volume control"
+    en: {
+        play_pause: "Play/Pause",
+        mute_unmute: "Mute/Unmute",
+        play: "Play",
+        pause: "Pause",
+        mute: "Mute",
+        unmute: "Unmute",
+        annotate: "Annotate",
+        search: "Search",
+        elapsed_time: "Elapsed time",
+        total_time: "Total time",
+        volume: "Volume",
+        volume_control: "Volume control"
     },
-    "fr": {
-        "play_pause": "Lecture/Pause",
-        "mute_unmute": "Couper/Activer le son",
-        "play": "Lecture",
-        "pause": "Pause",
-        "mute": "Couper le son",
-        "unmute": "Activer le son",
-        "annotate": "Annoter",
-        "search": "Rechercher",
-        "elapsed_time": "Durée écoulée",
-        "total_time": "Durée totale",
-        "volume": "Niveau sonore",
-        "volume_control": "Réglage du niveau sonore"
+    fr: {
+        play_pause: "Lecture/Pause",
+        mute_unmute: "Couper/Activer le son",
+        play: "Lecture",
+        pause: "Pause",
+        mute: "Couper le son",
+        unmute: "Activer le son",
+        annotate: "Annoter",
+        search: "Rechercher",
+        elapsed_time: "Durée écoulée",
+        total_time: "Durée totale",
+        volume: "Niveau sonore",
+        volume_control: "Réglage du niveau sonore"
     }
 };
 
--- a/src/widgets/CreateAnnotation.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/CreateAnnotation.js	Thu May 03 17:52:52 2012 +0200
@@ -9,48 +9,88 @@
     single_time_mode : false,
     show_title_field : true,
     user_avatar : "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png"
+/*
+        tags : [
+            {
+                id: "digitalstudies",
+                meta: {
+                    description: "#digital-studies"
+                }
+            },
+            {
+                id: "amateur",
+                meta: {
+                    description: "#amateur"
+                },
+            }
+        ],
+        remote_tags : false,
+        random_tags : false,
+        show_from_field : false,
+        disable_share : false,
+        polemic_mode : true, // enable polemics
+        polemics : [{
+            className: "positive",
+            keyword: "++"
+        }, {
+            className: "negative",
+            keyword: "--"
+        }, {
+            className: "reference",
+            keyword: "=="
+        }, {
+            className: "question",
+            keyword: "??"
+        }],
+        cinecast_version : false, // put to false to enable the platform version, true for the festival cinecast one.
+
+        // where does the widget PUT the annotations - this is a mustache template. id refers to the id of the media and is filled by the widget.
+         
+        api_endpoint_template : "", // platform_url + "/ldtplatform/api/ldt/annotations/{{id}}.json",
+        api_method : "PUT"
+ */
 }
 
 IriSP.Widgets.CreateAnnotation.prototype.messages = {
-    "en": {
-        "from_time" : "from",
-        "to_time" : "to",
-        "at_time" : "at",
-        "submit": "Submit",
-        "add_keywords": "Add keywords",
-        "add_polemic_keywords": "Add polemic keywords",
-        "your_name": "Your name",
-        "no_title" : "Annotate this video",
-        "type_title": "Annotation title",
-        "type_description": "Type the full description of your annotation here.",
-        "wait_while_processing": "Please wait while your request is being processed...",
-        "error_while_contacting": "An error happened while contacting the server. Your annotation has not been saved.",
-        "empty_annotation": "Your annotation is empty. Please write something before submitting.",
-        "annotation_saved": "Thank you, your annotation has been saved.",
-        "share_annotation": "Would you like to share it on social networks ?",
-        "share_on": "Share on",
-        "more_tags": "More tags",
-        "cancel": "Cancel"
+    en: {
+        from_time: "from",
+        to_time: "to",
+        at_time: "at",
+        submit: "Submit",
+        add_keywords: "Add keywords",
+        add_polemic_keywords: "Add polemic keywords",
+        your_name: "Your name",
+        no_title: "Annotate this video",
+        type_title: "Annotation title",
+        type_description: "Type the full description of your annotation here.",
+        wait_while_processing: "Please wait while your request is being processed...",
+        error_while_contacting: "An error happened while contacting the server. Your annotation has not been saved.",
+        empty_annotation: "Your annotation is empty. Please write something before submitting.",
+        annotation_saved: "Thank you, your annotation has been saved.",
+        share_annotation: "Would you like to share it on social networks ?",
+        share_on: "Share on",
+        more_tags: "More tags",
+        cancel: "Cancel"
     },
-    "fr": {
-        "from_time" : "from",
-        "to_time" : "à",
-        "at_time" : "à",
-        "submit": "Envoyer",
-        "add_keywords": "Ajouter des mots-clés",
-        "add_polemic_keywords": "Ajouter des mots-clés polémiques",
-        "your_name": "Votre nom",
-        "no_title" : "Annoter cette vidéo",
-        "type_title": "Titre de l'annotation",
-        "type_description": "Rédigez le contenu de votre annotation ici.",
-        "wait_while_processing": "Veuillez patienter pendant le traitement de votre requête...",
-        "error_while_contacting": "Une erreur s'est produite en contactant le serveur. Votre annotation n'a pas été enregistrée",
-        "empty_annotation": "Votre annotation est vide. Merci de rédiger un texte avant de l'envoyer.",
-        "annotation_saved": "Merci, votre annotation a été enregistrée.",
-        "share_annotation": "Souhaitez-vous la partager sur les réseaux sociaux ?",
-        "share_on": "Partager sur",
-        "more_tags": "Plus de mots-clés",
-        "cancel": "Cancel"
+    fr: {
+        from_time: "from",
+        to_time: "à",
+        at_time: "à",
+        submit: "Envoyer",
+        add_keywords: "Ajouter des mots-clés",
+        add_polemic_keywords: "Ajouter des mots-clés polémiques",
+        your_name: "Votre nom",
+        no_title: "Annoter cette vidéo",
+        type_title: "Titre de l'annotation",
+        type_description: "Rédigez le contenu de votre annotation ici.",
+        wait_while_processing: "Veuillez patienter pendant le traitement de votre requête...",
+        error_while_contacting: "Une erreur s'est produite en contactant le serveur. Votre annotation n'a pas été enregistrée",
+        empty_annotation: "Votre annotation est vide. Merci de rédiger un texte avant de l'envoyer.",
+        annotation_saved: "Merci, votre annotation a été enregistrée.",
+        share_annotation: "Souhaitez-vous la partager sur les réseaux sociaux ?",
+        share_on: "Partager sur",
+        more_tags: "Plus de mots-clés",
+        cancel: "Cancel"
     }
 }
 
--- a/src/widgets/HelloWorld.css	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/HelloWorld.css	Thu May 03 17:52:52 2012 +0200
@@ -1,3 +1,3 @@
 .Ldt-HelloWorld p {
-    text-align: center; font-size: 12px; margin: 2px 0; font-family: Helvetica, Arial, sans-serif;
+    text-align: center; font-size: 12px; margin: 2px 0;
 }
--- a/src/widgets/Mediafragment.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/Mediafragment.js	Thu May 03 17:52:52 2012 +0200
@@ -2,6 +2,13 @@
     IriSP.Widgets.Widget.call(this, player, config);
     this.last_hash = "";
     window.onhashchange = this.functionWrapper("goToHash");
+    if (typeof window.addEventListener !== "undefined") {
+        window.addEventListener('message', function(_msg) {
+            if (_msg.data.type === "hashchange") {
+                document.location.hash = _msg.data.hash;
+            }
+        })
+    };
     this.bindPopcorn("pause","setHashToTime");
     this.bindPopcorn("seeked","setHashToTime");
     this.bindPopcorn("IriSP.Mediafragment.setHashToAnnotation","setHashToAnnotation");
@@ -43,6 +50,12 @@
     if (!this.blocked && this.last_hash !== _hash) {
         this.last_hash = _hash;
         document.location.hash = _hash;
+        if (window.parent !== window) {
+            window.parent.postMessage({
+                type: "hashchange",
+                hash: _hash
+            })
+        }
         this.block();
     }
 }
--- a/src/widgets/Polemic.css	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/Polemic.css	Thu May 03 17:52:52 2012 +0200
@@ -1,3 +1,11 @@
+/*
+ * Polemic Widget CSS
+ */
+
+.Ldt-Polemic {
+    border-style: solid none; border-color: #cccccc; border-width: 1px;
+}
+
 .Ldt-Polemic-Position {
     background: #fc00ff;
     position: absolute;
--- a/src/widgets/Polemic.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/Polemic.js	Thu May 03 17:52:52 2012 +0200
@@ -4,9 +4,22 @@
 
 IriSP.Widgets.Polemic.prototype = new IriSP.Widgets.Widget();
 
+IriSP.Widgets.Polemic.prototype.messages = {
+    fr: {
+        from_: "de ",
+        _to_: " à ",
+        _annotations: " annotation(s)"
+    },
+    en: {
+        from_: "from ",
+        _to_: " to ",
+        _annotations: " annotation(s)"
+    }
+}
 IriSP.Widgets.Polemic.prototype.defaults = {
     element_width : 5,
     element_height : 5,
+    max_elements : 15,
     annotation_type : "tweet",
     defaultcolor : "#585858",
     foundcolor : "#fc00ff",
@@ -77,24 +90,37 @@
 
 IriSP.Widgets.Polemic.prototype.draw = function() {
     
-    this.bindPopcorn("IriSP.search", "onSearch");
-    this.bindPopcorn("IriSP.search.closed", "onSearch");
-    this.bindPopcorn("IriSP.search.cleared", "onSearch");
     this.bindPopcorn("timeupdate", "onTimeupdate");
     this.$zone = IriSP.jQuery('<div>');
+    this.$zone.addClass("Ldt-Polemic");
     this.$.append(this.$zone);
     
+    this.$elapsed = IriSP.jQuery('<div>')
+        .css({
+            background: '#cccccc',
+            position: "absolute",
+            top: 0,
+            left: 0,
+            width: 0,
+            height: "100%"
+        });
+        
+    this.$zone.append(this.$elapsed);
+    
     var _slices = [],
         _slice_count = Math.floor( this.width / this.element_width ),
         _duration = this.source.getDuration(),
         _max = 0,
-        _list = this.getWidgetAnnotations();
+        _list = this.getWidgetAnnotations(),
+        _this = this;
     
     for (var _i = 0; _i < _slice_count; _i++) {
         var _begin = new IriSP.Model.Time( _i * _duration / _slice_count ),
             _end = new IriSP.Model.Time( ( _i + 1 ) * _duration / _slice_count ),
             _count = 0,
             _res = {
+                begin : _begin.toString(),
+                end : _end.toString(),
                 annotations : _list.filter(function(_annotation) {
                     return _annotation.begin >= _begin && _annotation.end < _end;
                 }),
@@ -113,83 +139,154 @@
         _max = Math.max(_max, _count);
         _slices.push(_res);
     }
-    this.height = (_max ? (_max + 2) * this.element_height : 0);
-    this.$zone.css({
-        width: this.width + "px",
-        height: this.height + "px",
-        position: "relative"
-    });
-    
-    this.$elapsed = IriSP.jQuery('<div>')
-        .css({
-            background: '#cccccc',
-            position: "absolute",
-            top: 0,
-            left: 0,
-            width: 0,
-            height: "100%"
+    if (_max < this.max_elements) {
+        this.is_stackgraph = false;
+        if (_max) {
+                    
+            this.height = (2 + _max) * this.element_height;
+            this.$zone.css({
+                width: this.width + "px",
+                height: this.height + "px",
+                position: "relative"
+            });
+            
+            var _x = 0,
+                _html = '';
+            
+            function displayElement(_x, _y, _color, _id, _title) {
+                _html += Mustache.to_html(
+                    '<div class="Ldt-Polemic-TweetDiv" annotation-id="{{id}}" tweet-title="{{title}}" pos-x="{{posx}}" pos-y="{{top}}" polemic-color="{{color}}"'
+                    + ' style="width: {{width}}px; height: {{height}}px; top: {{top}}px; left: {{left}}px; background: {{color}}"></div>',
+                {
+                    id: _id,
+                    title: _title,
+                    posx: Math.floor(_x + (_this.element_width - 1) / 2),
+                    left: _x,
+                    top: _y,
+                    color: _color,
+                    width: (_this.element_width-1),
+                    height: _this.element_height
+                });
+            }
+            
+            IriSP._(_slices).forEach(function(_slice) {
+                var _y = _this.height;
+                _slice.annotations.forEach(function(_annotation) {
+                    _y -= _this.element_height;
+                    displayElement(_x, _y, _this.defaultcolor, _annotation.id, _annotation.title);
+                });
+                IriSP._(_slice.polemicStacks).forEach(function(_annotations, _j) {
+                    var _color = _this.polemics[_j].color;
+                    _annotations.forEach(function(_annotation) {
+                        _y -= _this.element_height;
+                        displayElement(_x, _y, _color, _annotation.id, _annotation.title);
+                    });
+                });
+                _x += _this.element_width;
+            });
+            
+            this.$zone.append(_html);
+            
+            this.$tweets = this.$.find(".Ldt-Polemic-TweetDiv");
+            
+            this.$tweets
+                .mouseover(function() {
+                    var _el = IriSP.jQuery(this);
+                    _this.tooltip.show(_el.attr("pos-x"), _el.attr("pos-y"), _el.attr("tweet-title"), _el.attr("polemic-color"));
+                })
+                .mouseout(function() {
+                    _this.tooltip.hide();
+                })
+                .click(function() {
+                    var _id = IriSP.jQuery(this).attr("annotation-id");
+                    _this.player.popcorn.trigger("IriSP.Mediafragment.setHashToAnnotation", _id);
+                    _this.player.popcorn.trigger("IriSP.Tweet.show", _id);
+                });
+            
+            this.bindPopcorn("IriSP.search", "onSearch");
+            this.bindPopcorn("IriSP.search.closed", "onSearch");
+            this.bindPopcorn("IriSP.search.cleared", "onSearch");
+            
+        } else {
+            this.$zone.hide();
+        }
+    } else {
+        this.is_stackgraph = true;
+        
+        this.height = (2 + this.max_elements) * this.element_height;
+        this.$zone.css({
+            width: this.width + "px",
+            height: this.height + "px",
+            position: "relative"
         });
         
-    this.$zone.append(this.$elapsed);
-    
-    var _x = 0,
-        _this = this,
-        _html = '';
-    
-    function displayElement(_x, _y, _color, _id, _title) {
-        _html += Mustache.to_html(
-            '<div class="Ldt-Polemic-TweetDiv" annotation-id="{{id}}" tweet-title="{{title}}" pos-x="{{posx}}" pos-y="{{top}}" polemic-color="{{color}}"'
-            + ' style="width: {{width}}px; height: {{height}}px; top: {{top}}px; left: {{left}}px; background: {{color}}"></div>',
-        {
-            id: _id,
-            title: _title,
-            posx: Math.floor(_x + (_this.element_width - 1) / 2),
-            left: _x,
-            top: _y,
-            color: _color,
-            width: (_this.element_width-1),
-            height: _this.element_height
+        var _x = 0,
+            _html = '',
+            _scale = this.max_elements * this.element_height / _max;
+            
+        function displayElement(_x, _y, _h, _color, _nums, _begin, _end) {
+            _html += Mustache.to_html(
+                '<div class="Ldt-Polemic-TweetDiv" pos-x="{{posx}}" pos-y="{{top}}" annotation-counts="{{nums}}" begin-time="{{begin}}" end-time="{{end}}"'
+                + ' style="width: {{width}}px; height: {{height}}px; top: {{top}}px; left: {{left}}px; background: {{color}}"></div>',
+            {
+                nums: _nums,
+                posx: Math.floor(_x + (_this.element_width - 1) / 2),
+                left: _x,
+                top: _y,
+                color: _color,
+                width: (_this.element_width-1),
+                height: _h,
+                begin: _begin,
+                end: _end
+            });
+        }
+        
+        IriSP._(_slices).forEach(function(_slice) {
+            var _y = _this.height,
+                _nums = _slice.annotations.length + "," + IriSP._(_slice.polemicStacks).map(function(_annotations) {
+                    return _annotations.length
+                }).join(",");
+            if (_slice.annotations.length) {
+                var _h = Math.ceil(_scale * _slice.annotations.length);
+                _y -= _h;
+                displayElement(_x, _y, _h, _this.defaultcolor, _nums, _slice.begin, _slice.end);
+            }
+            IriSP._(_slice.polemicStacks).forEach(function(_annotations, _j) {
+                if (_annotations.length) {
+                    var _color = _this.polemics[_j].color,
+                        _h = Math.ceil(_scale * _annotations.length);
+                    _y -= _h;
+                    displayElement(_x, _y, _h, _color, _nums, _slice.begin, _slice.end);
+                }
+            });
+            _x += _this.element_width;
         });
+        
+        this.$zone.append(_html);
+        
+        this.$tweets = this.$.find(".Ldt-Polemic-TweetDiv");
+        
+        this.$tweets
+            .mouseover(function() {
+                var _el = IriSP.jQuery(this),
+                    _nums = _el.attr("annotation-counts").split(","),
+                    _html = '<p>' + _this.l10n.from_ + _el.attr("begin-time") + _this.l10n._to_ + _el.attr("end-time") + '</p>';
+                for (var _i = 0; _i <= _this.polemics.length; _i++) {
+                    var _color = _i ? _this.polemics[_i - 1].color : _this.defaultcolor;
+                    _html += '<div class="Ldt-Tooltip-Color" style="background: ' + _color + '"></div><p>' + _nums[_i] + _this.l10n._annotations + '</p>'
+                }
+                _this.tooltip.show(_el.attr("pos-x"), _el.attr("pos-y"), _html);
+            })
+            .mouseout(function() {
+                _this.tooltip.hide();
+            })
+            
     }
     
-    IriSP._(_slices).forEach(function(_slice) {
-        var _y = _this.height;
-        _slice.annotations.forEach(function(_annotation) {
-            _y -= _this.element_height;
-            displayElement(_x, _y, _this.defaultcolor, _annotation.id, _annotation.title);
-        });
-        IriSP._(_slice.polemicStacks).forEach(function(_annotations, _j) {
-            var _color = _this.polemics[_j].color;
-            _annotations.forEach(function(_annotation) {
-                _y -= _this.element_height;
-                displayElement(_x, _y, _color, _annotation.id, _annotation.title);
-            });
-        });
-        _x += _this.element_width;
-    });
-    
-    this.$zone.append(_html);
-    
-    this.$tweets = this.$.find(".Ldt-Polemic-TweetDiv");
-    
     this.$position = IriSP.jQuery('<div>').addClass("Ldt-Polemic-Position");
         
     this.$zone.append(this.$position);
     
-    this.$tweets
-        .mouseover(function() {
-            var _el = IriSP.jQuery(this);
-            _this.tooltip.show(_el.attr("pos-x"), _el.attr("pos-y"), _el.attr("tweet-title"), _el.attr("polemic-color"));
-        })
-        .mouseout(function() {
-            _this.tooltip.hide();
-        })
-        .click(function() {
-            var _id = IriSP.jQuery(this).attr("annotation-id");
-            _this.player.popcorn.trigger("IriSP.Mediafragment.setHashToAnnotation", _id);
-            _this.player.popcorn.trigger("IriSP.Tweet.show", _id);
-        });
-    
     this.$zone.click(function(_e) {
         var _x = _e.pageX - _this.$zone.offset().left;
         _this.player.popcorn.currentTime(_this.source.getDuration().getSeconds() * _x / _this.width);
--- a/src/widgets/Segments.css	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/Segments.css	Thu May 03 17:52:52 2012 +0200
@@ -1,3 +1,7 @@
+/*
+ * Segments Widget
+ */
+
 .Ldt-Segments-List {
     width: 100%; height: 100%;
 }
--- a/src/widgets/Sparkline.css	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-/*
- * 
- */
\ No newline at end of file
--- a/src/widgets/Tagcloud.css	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/Tagcloud.css	Thu May 03 17:52:52 2012 +0200
@@ -2,7 +2,6 @@
  * 
  */
 .Ldt-Tagcloud-Container {
-    font-family: "Open Sans", Arial, Helvetica, sans-serif;
     border: 1px solid #b7b7b7;
     padding: 1px;
     margin: 0;
--- a/src/widgets/Tagcloud.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/Tagcloud.js	Thu May 03 17:52:52 2012 +0200
@@ -1,6 +1,6 @@
 IriSP.Widgets.Tagcloud = function(player, config) {
     IriSP.Widgets.Widget.call(this, player, config);
-    this.stopwords = IriSP._.uniq(IriSP._.extend([], this.custom_stopwords, this.stopword_lists[this.stopword_language]));
+    this.stopwords = IriSP._.uniq([].concat(this.custom_stopwords).concat(this.stopword_lists[this.stopword_language]));
 }
 
 IriSP.Widgets.Tagcloud.prototype = new IriSP.Widgets.Widget();
--- a/src/widgets/Tooltip.css	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/Tooltip.css	Thu May 03 17:52:52 2012 +0200
@@ -10,8 +10,6 @@
   height: 115px;
   width: 180px;
   padding: 15px 15px 20px;
-  color: black;
-  font-family: "Trebuchet MS", "Helvetica", "Arial", "Verdana", "sans-serif";
   overflow:hidden;
 }
 
@@ -23,3 +21,7 @@
     max-width: 140px; max-height: 70px; margin: 0 20px;
 }
 
+.Ldt-Tooltip p {
+    margin: 2px 0;
+  font-size: 12px;
+}
--- a/src/widgets/Tooltip.js	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/Tooltip.js	Thu May 03 17:52:52 2012 +0200
@@ -27,13 +27,13 @@
     } else {
         this.$.find(".Ldt-Tooltip-Color").hide();
     }
-    
+
     this.$.find(".Ldt-Tooltip-Text").html(text);
 
     this.$tip.show();
     this.$tip.css({
         "left" : Math.floor(x - this.$tip.outerWidth() / 2) + "px",
-        "top" : Math.floor(y - this.$tip.outerHeight() - 5) + "px"
+        "top" : Math.floor(y - this.$tip.outerHeight()) + "px"
     });
 };
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/widgets/Trace.js	Thu May 03 17:52:52 2012 +0200
@@ -0,0 +1,148 @@
+IriSP.Widgets.Trace = function(player, config) {
+  IriSP.Widgets.Widget.call(this, player, config);
+    
+}
+
+IriSP.Widgets.Trace.prototype = new IriSP.Widgets.Widget();
+
+IriSP.Widgets.Trace.prototype.defaults = {
+    js_console : false,
+    url: "http://traces.advene.org:5000/",
+    requestmode: 'GET',
+    syncmode: "sync"
+}
+
+IriSP.Widgets.Trace.prototype.draw = function() {
+  this.lastEvent = "";
+  if (typeof window.tracemanager === "undefined") {
+      console.log("Tracemanager not found");
+      return;
+  }
+  var _this = this,
+    _listeners = {
+        "IriSP.createAnnotationWidget.addedAnnotation" : 0,
+        "IriSP.search.open" : 0,
+        "IriSP.search.closed" : 0,
+        "IriSP.search" : 0,
+        "IriSP.search.cleared" : 0,
+        "IriSP.search.matchFound" : 0,
+        "IriSP.search.noMatchFound" : 0,
+        "IriSP.search.triggeredSearch" : 0,
+        "IriSP.TraceWidget.MouseEvents" : 0,
+        "play" : 0,
+        "pause" : 0,
+        "volumechange" : 0,
+        "seeked" : 0,
+        "play" : 0,
+        "pause" : 0,
+        "timeupdate" : 2000
+    };
+    IriSP._(_listeners).each(function(_ms, _listener) {
+        var _f = function(_arg) {
+            _this.eventHandler(_listener, _arg);
+        }
+        if (_ms) {
+            _f = IriSP._.throttle(_f, _ms);
+        }
+        _this.player.popcorn.listen(_listener, _f);
+    });
+    this.player.popcorn.listen("timeupdate", IriSP._.throttle(function(_arg) {
+        _this.eventHandler(_listener, _arg);
+    }));
+    
+    this.tracer = window.tracemanager.init_trace("test", {
+        url: this.url,
+        requestmode: this.requestmode,
+        syncmode: this.syncmode
+    });
+    this.tracer.set_default_subject("metadataplayer");
+    this.tracer.trace("StartTracing", {});
+    
+    this.mouseLocation = '';
+    IriSP.jQuery(".Ldt-Widget").bind("click mouseover mouseout dragstart dragstop", function(_e) {
+        var _widget = IriSP.jQuery(this).attr("widget-type"),
+            _class = _e.target.className;
+        var _data = {
+            "type": _e.type,
+            "x": _e.clientX,
+            "y": _e.clientY,
+            "widget": _widget
+        }
+        if (typeof _class == "string" && _class.indexOf('Ldt-TraceMe') != -1) {
+            var _name = _e.target.localName,
+                _id = _e.target.id,
+                _text = _e.target.textContent.trim(),
+                _title = _e.target.title,
+                _value = _e.target.value;
+            _data.target = _name + (_id.length ? '#' + IriSP.jqEscape(_id) : '') + (_class.length ? ('.' + IriSP.jqEscape(_class).replace(/\s/g,'.')).replace(/\.Ldt-(Widget|TraceMe)/g,'') : '');
+            if (typeof _title == "string" && _title.length && _title.length < 140) {
+                _data.title = _title;
+            }
+            if (typeof _text == "string" && _text.length && _text.length < 140) {
+                _data.text = _text;
+            }
+            if (typeof _value == "string" && _value.length) {
+                _data.value = _value;
+            }
+            this.player.popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
+        } else {
+            //console.log(_e.type+','+_this.mouseLocation+','+_widget);
+            if (_e.type == "mouseover") {
+                if (_this.mouseLocation != _widget) {
+                    _this.player.popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
+                } else {
+                    if (typeof _this.moTimeout != "undefined") {
+                        clearTimeout(_this.moTimeout);
+                        delete _this.moTimeout;
+                    }
+                }
+            }
+            if (_e.type == "click") {
+                _this.player.popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
+            }
+            if (_e.type == "mouseout") {
+                if (typeof _this.moTimeout != "undefined") {
+                    clearTimeout(_this.moTimeout);
+                }
+                _this.moTimeout = setTimeout(function() {
+                   if (_data.widget != _this.mouseLocation) {
+                       _this.player.popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
+                   }
+                },100);
+            }
+        }
+        _this.mouseLocation = _widget;
+    });
+}
+
+IriSP.Widgets.Trace.prototype.eventHandler = function(_listener, _arg) {
+    var _traceName = 'Mdp_';
+    if (typeof _arg == "string" || typeof _arg == "number") {
+        _arg = { "value" : _arg }
+    }
+    if (typeof _arg == "undefined") {
+        _arg = {}
+    }
+    switch(_listener) {
+        case 'IriSP.TraceWidget.MouseEvents':
+            _traceName += _arg.widget + '_' + _arg.type;
+            delete _arg.widget;
+            delete _arg.type;
+        break;
+        case 'timeupdate':
+        case 'play':
+        case 'pause':
+            _arg.time = this.player.popcorn.currentTime() * 1000;
+        case 'seeked':
+        case 'volumechange':
+            _traceName += 'Popcorn_' + _listener;
+        break;
+        default:
+            _traceName += _listener.replace('IriSP.','').replace('.','_');
+    }
+    this.lastEvent = _traceName;
+    this.tracer.trace(_traceName, _arg);
+    if (this.js_console) {
+        console.log("tracer.trace('" + _traceName + "', " + JSON.stringify(_arg) + ");");
+    }
+}
--- a/src/widgets/Tweet.css	Fri Apr 27 19:18:21 2012 +0200
+++ b/src/widgets/Tweet.css	Thu May 03 17:52:52 2012 +0200
@@ -2,7 +2,6 @@
     border: 1px solid #b7b7b7;
     padding: 1px;
     margin: 0;
-    font-family: Helvetica, Arial, sans-serif;
 }
 
 .Ldt-Tweet-Inner {
Binary file src/widgets/img/pinstripe-grey.png has changed
Binary file src/widgets/img/pinstripe.png has changed
--- a/test/emission_fichiers/1219830366Middlex02BottomRight.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-function OAS_RICH(position) {
-if (position == 'Middle') {
-document.write ('<!-- \n');
-document.write ('Support: http://pub.ftv-publicite.fr#OasDefault/2010_1605_I_1_1__RF-FMEte#37186#FMEte300x250.html#148c5#1278432104#270#S#Middle#www.radiofrance.fr/franceculture/les-retours-du-dimanche##\n');
-document.write ('--><script id="extFlashMiddle1" type="text/javascript" src="http://pub.ftv-publicite.fr/RealMedia/ads/Creatives/TFSMflashobject.js"></script>\n');
-document.write ('<SCRIPT Language="JavaScript">\n');
-document.write ('<!--\n');
-document.write ('if(!document.body)\n');
-document.write ('document.write("<html><body>");\n');
-document.write ('OASd = document;\n');
-document.write ('var plug = false;\n');
-document.write ('var flashVersion = -1;\n');
-document.write ('var minFlashVersion = 8;\n');
-document.write ('if(navigator.plugins != null && navigator.plugins.length > 0){flashVersion =(navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) ? navigator.plugins["Shockwave Flash" +(navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "")].description.split(" ")[2].split(".")[0] : -1;\n');
-document.write ('plug = flashVersion >= minFlashVersion;}\n');
-document.write ('else if(navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1){flashVersion = 4;plug = flashVersion >= minFlashVersion;}\n');
-document.write ('else if(navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1){flashVersion = 3;plug = flashVersion >= minFlashVersion;}\n');
-document.write ('else if(navigator.userAgent.toLowerCase().indexOf("webtv") != -1){flashVersion = 2;plug = flashVersion >= minFlashVersion;}\n');
-document.write ('else if((navigator.appVersion.indexOf("MSIE") != -1) &&(navigator.appVersion.toLowerCase().indexOf("win") != -1) &&(navigator.userAgent.indexOf("Opera") == -1)){var oasobj;\n');
-document.write ('var exc;\n');
-document.write ('try{oasobj = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");\n');
-document.write ('flashVersion = oasobj.GetVariable("$version");} catch(exc){try{oasobj = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");\n');
-document.write ('version = "WIN 6,0,21,0"; \n');
-document.write ('oasobj.AllowScriptAccess = "always";\n');
-document.write ('flashVersion = oasobj.GetVariable("$version");} catch(exc){try{oasobj = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");\n');
-document.write ('flashVersion = oasobj.GetVariable("$version");} catch(exc){try{oasobj = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");\n');
-document.write ('flashVersion = "WIN 3,0,18,0";} catch(exc){try{oasobj = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");\n');
-document.write ('flashVersion = "WIN 2,0,0,11";} catch(exc){flashVersion = -1;}}}}}\n');
-document.write ('plug =(flashVersion != -1)? flashVersion.split(" ")[1].split(",")[0] >= minFlashVersion : false;}\n');
-document.write ('if(navigator.userAgent.indexOf("MSIE")>=0 && navigator.userAgent.indexOf("Mac")>=0) plug=1;\n');
-document.write ('\n');
-document.write ('if(plug)\n');
-document.write ('{\n');
-document.write ('document.write("<div id=\\');
-document.write ('"FinContentMiddle1\\');
-document.write ('"></div>");\n');
-document.write ('function loadFlashMiddle1(){\n');
-document.write ('	if(navigator.userAgent.indexOf("MSIE") != -1 && navigator.userAgent.indexOf("Opera") == -1){\n');
-document.write ('	\n');
-document.write ('		if (extFlashMiddle1.readyState == "complete")\n');
-document.write ('  		{\n');
-document.write ('	   		FlashObject("http://media.ftv-publicite.fr/0/OasDefault/2010_1605_I_1_1__RF-FMEte//FMEte300x250.swf?clicktag=http://pub.ftv-publicite.fr/5c/www.radiofrance.fr/franceculture/les-retours-du-dimanche/2130910481/Middle/OasDefault/2010_1605_I_1_1__RF-FMEte/FMEte300x250.html/35323766306463663463343536333930?", "OAS_AD_Middle", "width=300 height=250", "opaque", "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ,"8", "FinContentMiddle1");\n');
-document.write ('			extFlashMiddle1.onreadystatechange = "";\n');
-document.write ('		}\n');
-document.write ('	\n');
-document.write ('		extFlashMiddle1.onreadystatechange = loadFlashMiddle1;\n');
-document.write ('	}\n');
-document.write ('	else\n');
-document.write ('	{\n');
-document.write ('           OASfp=" Menu=FALSE swModifyReport=TRUE width=300 height=250 ";\n');
-document.write ('           OASd.write("<object id=\\');
-document.write ('"techsource_Middle\\');
-document.write ('" classid=\\');
-document.write ('"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\\');
-document.write ('" codebase=\\');
-document.write ('"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0\\');
-document.write ('""+OASfp+">");\n');
-document.write ('           OASd.write("<param name=src value=\\');
-document.write ('"http://media.ftv-publicite.fr/0/OasDefault/2010_1605_I_1_1__RF-FMEte//FMEte300x250.swf\\');
-document.write ('"><param name=allowScriptAccess value=always><param name=quality value=autohigh><param name=loop value=true><param name=play value=true><param name=menu value=false><param name=wmode value=opaque><param name=FlashVars value=\\');
-document.write ('"clicktag=http://pub.ftv-publicite.fr/5c/www.radiofrance.fr/franceculture/les-retours-du-dimanche/2130910481/Middle/OasDefault/2010_1605_I_1_1__RF-FMEte/FMEte300x250.html/35323766306463663463343536333930?\\');
-document.write ('">");\n');
-document.write ('           OASd.write("<embed src=\\');
-document.write ('"http://media.ftv-publicite.fr/0/OasDefault/2010_1605_I_1_1__RF-FMEte//FMEte300x250.swf\\');
-document.write ('""+OASfp+"pluginspage=\\');
-document.write ('"http://www.macromedia.com/shockwave\\');
-document.write ('" type=\\');
-document.write ('"application/x-shockwave-flash\\');
-document.write ('" width=300 height=250 PLAY=true LOOP=true QUALITY=autohigh WMODE=opaque FlashVars=\\');
-document.write ('"clicktag=http://pub.ftv-publicite.fr/5c/www.radiofrance.fr/franceculture/les-retours-du-dimanche/2130910481/Middle/OasDefault/2010_1605_I_1_1__RF-FMEte/FMEte300x250.html/35323766306463663463343536333930?\\');
-document.write ('" allowScriptAccess=always>");\n');
-document.write ('           OASd.write("</embed></object>");\n');
-document.write ('        }\n');
-document.write ('\n');
-document.write ('}\n');
-document.write ('	loadFlashMiddle1();\n');
-document.write ('}\n');
-document.write ('if(!document.body)\n');
-document.write ('document.write("</body></html>");\n');
-document.write ('//-->\n');
-document.write ('</SCRIPT><IMG SRC="http://pub.ftv-publicite.fr/5/www.radiofrance.fr/franceculture/les-retours-du-dimanche/2130910481/Middle/OasDefault/2010_1605_I_1_1__RF-FMEte/FMEte300x250.html/35323766306463663463343536333930?_RM_EMPTY_" WIDTH="2" HEIGHT="2" style="display: none" />');
-}
-if (position == 'x02') {
-document.write ('<A HREF="http://pub.ftv-publicite.fr/5c/www.radiofrance.fr/franceculture/les-retours-du-dimanche/35827959/x02/OasDefault/default/empty.gif/35323766306463663463343536333930" target="_blank"><IMG SRC="http://pub.ftv-publicite.fr/5/www.radiofrance.fr/franceculture/les-retours-du-dimanche/35827959/x02/OasDefault/default/empty.gif/35323766306463663463343536333930"  WIDTH=2 HEIGHT=2 ALT="" BORDER=0 BORDER="0"></A>');
-}
-if (position == 'BottomRight') {
-document.write ('<A HREF="http://pub.ftv-publicite.fr/5c/www.radiofrance.fr/franceculture/les-retours-du-dimanche/38451496/BottomRight/OasDefault/default/empty.gif/35323766306463663463343536333930" target="_blank"><IMG SRC="http://pub.ftv-publicite.fr/5/www.radiofrance.fr/franceculture/les-retours-du-dimanche/38451496/BottomRight/OasDefault/default/empty.gif/35323766306463663463343536333930"  WIDTH=2 HEIGHT=2 ALT="" BORDER=0 BORDER="0"></A>');
-}
-}
--- a/test/emission_fichiers/265074200838.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-estat_Object=function(){};function eStat_loadjs(f){document.write('<script type="text/javascript" src="'+f+'"></script>');};function eStat_urlRef(u){var pgu="";try{pgu=location.href;}catch(e){pgu="";};return u+"#&r="+pgu;};function eStat_windowOpen(winUrl,winName,winFeat){var urlref=eStat_urlRef(winUrl);var name=(winName&&winName!="")?winName.replace(/\s+/g,'_'):"";window.open(urlref,name,winFeat);};function Err(){var warn=true;var e="",w="";var _lvl=0;lvl=function(l){if(_lvl<l)_lvl=l;};this.E=function(s,l){e+=(e!="")?","+s:"&err="+s;lvl(l);};this.W=function(s,l){if(warn){w+=(w!="")?","+s:"&warn="+s;lvl(l);}};this.reset=function(){_lvl=0;e="";w="";};this.getLvl=function(){return _lvl;};this.getErr=function(){return w+e;};};function Env(){var env="env:";getCharset=function(){var m=document.getElementsByTagName('META'),charset=null,posCharset;for(var i=0;i<m.length;i++){if(m[i].content){posCharset=m[i].content.indexOf('charset');if(posCharset>=0){charset=m[i].content.substr(posCharset+8);break;}}};if(!charset&&document.defaultCharset)charset=document.defaultCharset;return charset;};getRef=function(){var ret;try{ret=(top!=null&&top.location!=null&&typeof(top.location.href)=="string")?top.document.referrer:document.referrer;if(!ret||ret==""){if(window.opener&&window.opener.location)ret=window.opener.location.toString();}}catch(e){};return escape(ret);};getScr=function(){var scr="";if(typeof(screen)=="object"){scr+="&scw="+screen.width+"&sch="+screen.height+"&scp="+screen.colorDepth;}else eStat_er.W(env+"noscr",0);return scr;};getPge=function(t){var pgr="",pge="",pgd="";switch(t){case "m":if(navigator.appName=='Netscape')pgr=escape(document.referrer);else pgr=getRef();break;case "mf":pgr=getRef();break;case "mf4":case "mr":case "mr4":var _CKS=document.cookie;var _KS=_CKS.indexOf("cks=");if(_KS!=-1){var _START=_CKS.indexOf("=",_KS)+1;var _END=_CKS.indexOf(";",_KS);if(_END==-1)_END=_CKS.length;pgr=_CKS.substring(_START,_END);document.cookie="cks=; path=/; expires=Fri, 02 Jan 1970 00:00:00 GMT";}else pgr=(t=="mr"||t=="mr4")?escape(window.document.referrer):getRef();break;default:pgr=escape(window.document.referrer);break;};if(!pgr||pgr==""){try{var referer=window.location.hash;if(referer!=""){var st=referer.indexOf("#&r=");pgr="&r="+escape(referer.substring(st+4,referer.length));}else{pgr="&r=_bm_";eStat_er.W(env+"nopgr",0);}}catch(e){pgr="&r=_bm_";eStat_er.W(env+"nopgr",0);};}else pgr="&r="+pgr;pge=getCharset();if(!pge){eStat_er.W(env+"noenc",0);pge="";}else pge="&enc="+pge;pgd=document.domain;if(!pgd){eStat_er.W(env+"nodom",0);pgd="";}else pgd="&dom="+pgd;return pgr+pgd+pge;};this.getEnv=function(eStat_tag){return getScr()+getPge(eStat_tag);};};function Opt(){var opt="opt:";var alt="";var _proto="http://";var cyber;var v={_s:"",_g:"",_u:"",_p:"",_c:"",_c2:"",_a:"",_pt:"",_pb:"",_pr:"",_nb:"",_ca:"",_al:"",_L:"",_C:"",_R:"",_S:"",_W:"",_WU:""};set=function(vl,el,tg,et,dl){(vl&&vl!="")?v[el]=tg+vl:eStat_er.W(opt+et,dl);};cnflt=function(){eStat_er.E(opt+"ConflitTypCpt",3);};this.getSerial=function(){return v._s.substring(0,v._s.length-1);};this.serial=function(s){(cyber==true)?cnflt():cyber=false;v._s=s+"?";if(typeof(s)!='string'||s.length==0)eStat_er.W(opt+"Serial("+s+")",2);};this.cmclient=function(s){(cyber==false)?cnflt():cyber=true;(typeof(s)!='string'||s.length==0)?eStat_er.W(opt+"cmclient("+s+")",2):v._s=s+"_v?";};this.master=function(g){set(g,"_g","&g=","Master",1);};this.pg_mq=function(p){set(escape(p),"_p","&p=","PagesMarquees",2);v["_R"]=1;};this.gp_pg_mq=function(c){set(escape(c),"_c","&c=","GroupePagesMarquees",2);v["_S"]=1;};this.cm_cs=function(c){set(escape(c),"_c","&cs=","CM_CS",2);v["_S"]=1;};this.cm_cs2=function(c){set(escape(c),"_c2","&cs2=","CM_CS2",2);};this.action=function(a){set(a,"_a","&action=","Action",2);};this.typ_prod=function(pt){set(pt,"_pt","&ptype=","TypeProduit",1);};this.mrq_prod=function(pb){set(pb,"_pb","&pbrand=","MarqueProduit",1);};this.ref_prod=function(pr){set(pr,"_pr","&pref=","RefProduit",1);};this.nbr=function(nb){set(nb,"_nb","&nb=","Nombre",2);};this.ca_engdr=function(ca){set(ca,"_ca","&ca=","CA",2);};this.rubriq=function(r){this.pg_mq(r);};this.sec1=function(s){this.gp_pg_mq(s);};this.uid=function(u){set(u,"_u","&u=","UID",1);};this.alt=function(al){alt=al;};this.secur=function(){_proto="https://";};this.niveau=function(l,s){if(s!=""){var _s={'1':"&c=",'2':"&p=",'3':"&l3=",'4':"&l4="};(_s[l])?v._L+=_s[l]+escape(s):eStat_er.W(opt+"NiveauInconnu",1);}else eStat_er.W(opt+"NiveauVide",1);};this.critere=function(l,s){if(s!=""){(l<=5&&l>=1)?v._C+="&c"+l+"="+escape(s):eStat_er.W(opt+"CritereInconnu",1);}else eStat_er.W(opt+"CritereVide",1);};this.getAlt=function(){return alt;};this.isCyber=function(){return cyber;};this.hitcms=function(){return(v._R!="")||(v._S!="");};this.proto=function(){if(document.location.protocol.substring(0,5)=='https')this.secur();return _proto;};this.miss=function(vect){var tab=null;for(var i=0;i<vect.length;i++){if(v[vect[i]]==""){tab=(tab==null)?vect[i]:(Array(tab)).concat(vect[i]);}}return (tab?tab:0);};this.get=function(vect){var ret="";for(var i=0;i<vect.length;i++){ret+=v[vect[i]];}return ret;};};function Seg(){var seg_tab=["","","","",""];this.set=function(val1,val2,val3,val4,val5){seg_tab[0]="&seg1="+encodeURIComponent(val1);seg_tab[1]="&seg2="+encodeURIComponent(val2);seg_tab[2]="&seg3="+encodeURIComponent(val3);seg_tab[3]="&seg4="+encodeURIComponent(val4);seg_tab[4]="&seg5="+encodeURIComponent(val5);};this.get=function(){var seg_tag="";for(var i=0;i<seg_tab.length;i++){seg_tag+=seg_tab[i];}return seg_tag;};};function Crm(){var crmId="";this.set=function(s){crmId="&crmID="+encodeURIComponent(s);};this.get=function(){return crmId;};};function Tag(){var eStat_tag="eStat_tag:";var _V="&v=2.12";var _rt="";var _Tg="";var _s="",_T="";var _dbg=0;var v={m:["_g","_p","_c","_c2"],ma:["_g","_a","_pt","_pb","_pr","_nb","_ca"],mf:["_g","_p","_c","_c2"],ml:["_g","_L"],mmc:["_g","_p","_c","_c2","_C"],mf4:["_g","_L"],sr:[],mr:["_g","_p","_c","_c2"],mr4:["_g","_L"],mmcml:["_g","_L","_C"],wap:["_g","_u","_p","_c","_c2"],wapl:["_g","_u","_L"],cmspoll:["_R","_S"],cms:["_R","_S","_g","_p","_c","_c2"],ecom:["_g"]};optional=function(s){var opt=["_g","_c2","_C","_R","_S"];var i=opt.length;do{if(opt[i]===s){return true;}}while(i--);return false;};dbg=function(){var url="http://prof.estat.com/img/debug/";var img=["ok.jpg","warn.jpg","err.jpg","crit.jpg"];var _S=url+img[eStat_er.getLvl()];var e=eStat_er.getErr();document.write('<IMG SRC="'+_S+'" ALT="'+e+'" TITLE="'+e+'"><BR>');};imgLoadChk=function(img,tries){if(img.complete==true){return;};if(tries<=0){if(img.name=="0"){var img_url=img.src+'&jstimeout=1';var _IM2=new Image(1,1);_IM2.alt=img.alt;img.src="";delete img;_IM2.name="1";_IM2.src=img_url;imgLoadChk(_IM2,10);}return;};window.setTimeout(function(){imgLoadChk(img,tries-1);},500);};send=function(FT,t){var _IM=new Image(1,1);_IM.name="0";_IM.src=FT;switch(t){case "wap":_IM.alt=eStat_id.getAlt();break;default:break;};imgLoadChk(_IM,10);};get_S=function(t){var _S="";switch(t){case "wap":_S="http://prof.estat.com/m/wap/";break;default:_S=(eStat_id.isCyber())?"http://stat3.cybermonitor.com/":eStat_id.proto()+"prof.estat.com/m/web/";break;}return _S;};getTag=function(t){var ms=eStat_id.miss(v[t]);if(ms&&t!="cms"){var am="";for(var i=0;i<ms.length;i++){if(!optional(ms[i]))am+=ms[i];}if(am!="")eStat_er.E(eStat_tag+"ManqueArg:"+am,3);}_T=eStat_id.get(v[t]);_T+=eStat_seg.get();_T+=eStat_crm.get();_Tg="&t="+t;};chkTag=function(t){(v[t])?getTag(t):eStat_er.E(eStat_tag+"TagInconnu:"+t,3);_s=eStat_id.get(["_s"]);if(!_s)eStat_er.E(eStat_tag+"ManqueSerial",3);};FT=function(t){return(get_S(t)+_s+"n="+Math.round(Math.random()*1000000000)+_T+_rt+eStat_ev.getEnv(t)+eStat_er.getErr()+_Tg+_V);};this.real_time=function(){_rt="&rt=1";};this.debug=function(){_dbg=1;};this.post=function(t){chkTag(t);switch(t){case"sr": document.cookie="cks="+escape(document.referrer)+"; path=/";break;case "ecom":eStat_er.reset();return FT(t);case "cmspoll":var _FT=FT(t);return _FT;case "cms":if(!eStat_id.hitcms())break;default:(_dbg)?dbg():send(FT(t),t);break;}};};var eStat_er=new Err;var eStat_ev=new Env;var eStat_id=new Opt;var eStat_tag=new Tag;var eStat_seg=new Seg;var eStat_crm=new Crm;_PJS=1;if(typeof(_cmsJS)!="undefined")eStat_loadjs("http://prof.estat.com/js/ms2.js");if(typeof(_ecomJS)!="undefined")eStat_loadjs("http://prof.estat.com/js/ecom.js");
Binary file test/emission_fichiers/97820204039860-2000020811.jpg has changed
Binary file test/emission_fichiers/Garrigou.jpg has changed
--- a/test/emission_fichiers/addthis_widget.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-/* (c) 2008, 2009, 2010 Add This, LLC */
-if(!window._ate){var _atd="www.addthis.com/",_atr="//s7.addthis.com/",_atn="//l.addthiscdn.com/",_euc=encodeURIComponent,_duc=decodeURIComponent,_atc={dr:0,ver:250,loc:0,enote:"",cwait:500,tamp:-1,xamp:0,camp:1,vamp:1,famp:0.02,pamp:0.2,damp:1,abf:!!window.addthis_do_ab};(function(){try{var E=window.location;if(E.protocol.indexOf("file")===0){_atr="http:"+_atr}if(E.hostname.indexOf("localhost")!=-1){_atc.loc=1}}catch(K){}var I=navigator.userAgent.toLowerCase(),L=document,o=window,G=L.location,N={win:/windows/.test(I),xp:/windows nt 5.1/.test(I)||/windows nt 5.2/.test(I),osx:/os x/.test(I),chr:/chrome/.test(I),iph:/iphone/.test(I),ipa:/ipad/.test(I),saf:/safari/.test(I),web:/webkit/.test(I),opr:/opera/.test(I),msi:(/msie/.test(I))&&!(/opera/.test(I)),ffx:/firefox/.test(I),ff2:/firefox\/2/.test(I),ie6:/msie 6.0/.test(I),ie7:/msie 7.0/.test(I),mod:-1},f={vst:[],rev:"78805",bro:N,show:1,dl:G,upm:!!o.postMessage&&(""+o.postMessage).toLowerCase().indexOf("[native code]")!==-1,camp:_atc.camp-Math.random(),xamp:_atc.xamp-Math.random(),vamp:_atc.vamp-Math.random(),pamp:_atc.pamp-Math.random(),afamp:_atc.afamp-Math.random(),ab:"-",seq:1,inst:1,wait:500,tmo:null,cvt:[],avt:null,sttm:new Date().getTime(),max:4294967295,sid:0,sub:!!window.at_sub,dbm:0,uid:null,spt:"static/r07/widget20.png",api:{},imgz:[],hash:window.location.hash};L.ce=L.createElement;L.gn=L.getElementsByTagName;window._ate=f;var t=function(r,p,q,d){if(!r){return q}if(r instanceof Array||(r.length&&(typeof r!=="function"))){for(var l=0,a=r.length,b=r[0];l<a;b=r[++l]){q=p.call(d||r,q,b,l,r)}}else{for(var e in r){q=p.call(d||r,q,r[e],e,r)}}return q},z=Array.prototype.slice,B=function(b){return z.apply(b,z.call(arguments,1))},A=function(a){return(""+a).replace(/(^\s+|\s+$)/g,"")},J=function(a,b){return t(B(arguments,1),function(e,d){return t(d,function(p,l,i){p[i]=l;return p},e)},a)},m=function(b,a){return t(b,function(i,e,d){d=A(d);if(d){i.push(_euc(d)+"="+_euc(A(e)))}return i},[]).join(a||"&")},j=function(b,a){return t((b||"").split(a||"&"),function(p,r){try{var l=r.split("="),i=A(_duc(l[0])),d=A(_duc(l.slice(1).join("=")));if(i){p[i]=d}}catch(q){}return p},{})},P=function(){var a=B(arguments,0),d=a.shift(),b=a.shift();return function(){return d.apply(b,a.concat(B(arguments,0)))}},F=function(b,e,a,d){if(!e){return}if(we){e[(b?"detach":"attach")+"Event"]("on"+a,d)}else{e[(b?"remove":"add")+"EventListener"](a,d,false)}},k=function(d,a,b){F(0,d,a,b)},g=function(d,a,b){F(1,d,a,b)},c={reduce:t,slice:B,strip:A,extend:J,toKV:m,fromKV:j,bind:P,listen:k,unlisten:g};f.util=c;J(f,c);(function(r,w,Q){var p,S=r.util;function s(V,U,X,T,W){this.type=V;this.triggerType=U||V;this.target=X||T;this.triggerTarget=T||X;this.data=W||{}}S.extend(s.prototype,{constructor:s,bubbles:false,preventDefault:S.noop,stopPropagation:S.noop,clone:function(){return new this.constructor(this.type,this.triggerType,this.target,this.triggerTarget,S.extend({},this.data))}});function i(T,U){this.target=T;this.queues={};this.defaultEventType=U||s}function a(T){var U=this.queues;if(!U[T]){U[T]=[]}return U[T]}function q(T,U){this.getQueue(T).push(U)}function e(U,V){var W=this.getQueue(U),T=W.indexOf(V);if(T!==-1){W.splice(T,1)}}function b(T,X,W,V){var U=this;if(!V){setTimeout(function(){U.dispatchEvent(new U.defaultEventType(T,T,X,U.target,W))},10)}else{U.dispatchEvent(new U.defaultEventType(T,T,X,U.target,W))}}function R(U){for(var V=0,X=U.target,W=this.getQueue(U.type),T=W.length;V<T;V++){W[V].call(X,U.clone())}}function d(U){if(!U){return}for(var T in l){U[T]=S.bind(l[T],this)}return U}var l={constructor:i,getQueue:a,addEventListener:q,removeEventListener:e,dispatchEvent:R,fire:b,decorate:d};S.extend(i.prototype,l);r.event={PolyEvent:s,EventDispatcher:i}})(f,f.api,f);f.ed=new f.event.EventDispatcher(f);var n={isBound:0,isReady:0,readyList:[],onReady:function(){if(!n.isReady){n.isReady=1;var a=n.readyList.concat(window.addthis_onload||[]);for(var b=0;b<a.length;b++){a[b].call(window)}n.readyList=[]}},addLoad:function(a){var b=o.onload;if(typeof o.onload!="function"){o.onload=a}else{o.onload=function(){if(b){b()}a()}}},bindReady:function(){if(v.isBound||_atc.xol){return}v.isBound=1;if(L.addEventListener&&!N.opr){L.addEventListener("DOMContentLoaded",v.onReady,false)}var a=window.addthis_product;if(a&&a.indexOf("f")>-1){v.onReady();return}if(N.msi&&window==top){(function(){if(v.isReady){return}try{L.documentElement.doScroll("left")}catch(d){setTimeout(arguments.callee,0);return}v.onReady()})()}if(N.opr){L.addEventListener("DOMContentLoaded",function(){if(v.isReady){return}for(var d=0;d<L.styleSheets.length;d++){if(L.styleSheets[d].disabled){setTimeout(arguments.callee,0);return}}v.onReady()},false)}if(N.saf){var b;(function(){if(v.isReady){return}if(L.readyState!="loaded"&&L.readyState!="complete"){setTimeout(arguments.callee,0);return}if(b===undefined){var d=L.gn("link");for(var e=0;e<d.length;e++){if(d[e].getAttribute("rel")=="stylesheet"){b++}}var l=L.gn("style");b+=l.length}if(L.styleSheets.length!=b){setTimeout(arguments.callee,0);return}v.onReady()})()}v.addLoad(v.onReady)},append:function(b,a){v.bindReady();if(v.isReady){b.call(window,[])}else{v.readyList.push(function(){return b.call(window,[])})}}},v=n,O=f;J(f,{plo:[],lad:function(a){f.plo.push(a)}});J(f,{pub:function(){return _euc((window.addthis_config||{}).username||window.addthis_pub||"")},igv:function(a,b){if(!o.addthis_share){o.addthis_share={}}if(!addthis_share.url){addthis_share.url=(o.addthis_url||a||"").split("#{").shift()}if(!addthis_share.title){addthis_share.title=(o.addthis_title||b||"").split("#{").shift()}if(!o.addthis_config){o.addthis_config={username:o.addthis_pub}}else{if(addthis_config.data_use_cookies===false){_atc.xck=1}}}});if(!_atc.ost){if(!o.addthis_conf){o.addthis_conf={}}for(var H in addthis_conf){_atc[H]=addthis_conf[H]}_atc.ost=1}(function(b,l,e){var q,p=document,a=b.util;b.ckv=a.fromKV(p.cookie,";");function i(d){return a.fromKV(p.cookie,";")[d]}if(!b.cookie){b.cookie={}}b.cookie.rck=i})(f,f.api,f);J(f,{qtp:[],xtp:function(){var b=f,d;while(d=b.qtp.pop()){b.trk(d)}},gat:function(){},atf:null,get_atssh:function(){var e=document,b=f,i=e.getElementById("_atssh");if(!i){i=e.ce("div");i.style.visibility="hidden";i.id="_atssh";b.opp(i.style);e.body.insertBefore(i,e.body.firstChild)}return i},ctf:function(i){var p=document,e=window,b=f,s,l=Math.floor(Math.random()*1000),q=b.get_atssh();if(!b.bro.msi){s=p.ce("iframe");s.id="_atssh"+l}else{if(b.bro.ie6&&!i&&p.location.protocol.indexOf("https")==0){i="javascript:''"}q.innerHTML='<iframe id="_atssh'+l+'" width="1" height="1" name="_atssh'+l+'" '+(i?'src="'+i+'"':"")+">";s=p.getElementById("_atssh"+l)}b.opp(s.style);s.frameborder=s.style.border=0;s.style.top=s.style.left=0;return s},off:function(){return Math.floor((new Date().getTime()-f.sttm)/100).toString(16)},oms:function(d){var b=f;if(d&&d.data&&d.data.service){if(!b.upm){if(b.dcp){return}b.dcp=1}b.trk({gen:300,sh:d.data.service})}},omp:function(b,d,e){var a={};if(b){a.sh=b}if(d){a.cm=d}if(e){a.cs=e}f.img("sh","3",null,a)},trk:function(e){var d=f,i=d.dr,b=(d.rev||"");if(!e){return}if(i){i=i.split("http://").pop()}e.xck=_atc.xck?1:0;e.xxl=1;e.sid=d.ssid();e.pub=d.pub();e.ssl=d.ssl||0;e.du=d.tru(d.du||d.dl.href);if(d.dt){e.dt=d.dt}if(d.cb){e.cb=d.cb}e.lng=d.lng();e.ver=_atc.ver;if(!d.upm&&d.uid){e.uid=d.uid}e.pc=window.addthis_product||"men-"+_atc.ver;if(i){e.dr=d.tru(i)}if(d.dh){e.dh=d.dh}if(b){e.rev=b}if(d.xfr){if(d.upm){if(d.atf){d.atf.contentWindow.postMessage(m(e),"*")}}else{var l=d.get_atssh();base="static/r07/sh20.html"+(false?"?t="+new Date().getTime():"");if(d.atf){l.removeChild(l.firstChild)}d.atf=d.ctf();d.atf.src=_atr+base+"#"+m(e);l.appendChild(d.atf)}}else{f.qtp.push(e)}},img:function(l,r,b,p,q){if(!window.at_sub&&!_atc.xtr){var d=f,e=p||{};e.evt=l;if(b){e.ext=b}d.avt=e;if(q===1){d.xmi(true)}else{d.sxm(true)}}},cuid:function(){return((f.sttm/1000)&f.max).toString(16)+("00000000"+(Math.floor(Math.random()*(f.max+1))).toString(16)).slice(-8)},ssid:function(){if(f.sid===0){f.sid=f.cuid()}return f.sid},sta:function(){var b=f;return"AT-"+(b.pub()?b.pub():"unknown")+"/-/"+b.ab+"/"+b.ssid()+"/"+(b.seq++)+(b.uid!==null?"/"+b.uid:"")},cst:function(a){return"CXNID=2000001.521545608054043907"+(a||2)+"NXC"},fcv:function(b,a){return _euc(b)+"="+_euc(a)+";"+f.off()},cev:function(b,a){f.cvt.push(f.fcv(b,a));f.sxm(true)},sxm:function(a){if(f.tmo!==null){clearTimeout(f.tmo)}if(a){f.tmo=f.sto("_ate.xmi(false)",f.wait)}},xmi:function(r){var b=f,p=b.dl?b.dl.hostname:"";if(b.cvt.length>0||b.avt){b.sxm(false);if(_atc.xtr){return}var l=b.avt||{};l.ce=b.cvt.join(",");b.cvt=[];b.avt=null;b.trk(l);if(r){var q=document,e=q.ce("iframe");e.id="_atf";f.opp(e.style);q.body.appendChild(e);e=q.getElementById("_atf")}}}});J(f,{_rec:[],rec:function(e){if(!e){return}var q=j(e),b=f,d=b.atf,l=b._rec,w;if(q.ssh){b.ssh(q.ssh)}if(q.uid){b.uid=q.uid}if(q.dbm){b.dbm=q.dbm}if(q.rdy){b.xfr=1;b.xtp();return}for(var Q=0;Q<l.length;Q++){l[Q](q)}},xfr:!f.upm||!f.bro.ffx,ssh:function(b){f.gssh=1;var a=window.addthis_ssh=_duc(b);f._ssh=a.split(",")},com:function(a){if(window.parent&&window.postMessage){window.parent.postMessage(a,"*")}else{f.ifm(a)}},ifm:function(b){if(addthis_wpl){var d=(addthis_wpl.split("#"))[0];window.parent.location.href=d+"#at"+b}return false},pmh:function(a){if(a.origin.slice(-12)==".addthis.com"){f.rec(a.data)}}});J(f,{lng:function(){return window.addthis_language||(window.addthis_config||{}).ui_language||(f.bro.msi?navigator.userLanguage:navigator.language)},iwb:function(a){var b={th:1,pl:1,sl:1,gl:1,hu:1,is:1,nb:1,se:1,su:1};return !!b[a]},ivl:function(a){var b={af:1,afr:"af",ar:1,ara:"ar",az:1,aze:"az",be:1,bye:"be",bg:1,bul:"bg",bn:1,ben:"bn",bs:1,bos:"bs",ca:1,cat:"ca",cs:1,ces:"cs",cze:"cs",cy:1,cym:"cy",da:1,dan:"da",de:1,deu:"de",ger:"de",el:1,gre:"el",ell:"ell",es:1,esl:"es",spa:"spa",et:1,est:"et",eu:1,fa:1,fas:"fa",per:"fa",fi:1,fin:"fi",fo:1,fao:"fo",fr:1,fra:"fr",fre:"fr",ga:1,gae:"ga",gdh:"ga",gl:1,glg:"gl",he:1,heb:"he",hi:1,hin:"hin",hr:1,cro:"hr",hu:1,hun:"hu",id:1,ind:"id",is:1,ice:"is",it:1,ita:"it",ja:1,jpn:"ja",ko:1,kor:"ko",ku:1,lb:1,ltz:"lb",lt:1,lit:"lt",lv:1,lav:"lv",mk:1,mac:"mk",mak:"mk",mn:1,ml:1,ms:1,msa:"ms",may:"ms",nb:1,nl:1,nla:"nl",dut:"nl",no:1,nn:1,nno:"no",oc:1,oci:"oc",pl:1,pol:"pl",pt:1,por:"pt",ro:1,ron:"ro",rum:"ro",ru:1,rus:"ru",sk:1,slk:"sk",slo:"sk",sl:1,slv:"sl",sq:1,alb:"sq",sr:1,se:1,ser:"sr",su:1,sv:1,sve:"sv",sw:1,swe:"sv",ta:1,tam:"ta",te:1,teg:"te",th:1,tha:"th",tl:1,tgl:"tl",tr:1,tur:"tr",uk:1,ukr:"uk",ur:1,urd:"ur",vi:1,vie:"vi","zh-hk":1,"chi-hk":"zh-hk","zho-hk":"zh-hk","zh-tr":1,"chi-tr":"zh-tr","zho-tr":"zh-tr","zh-tw":1,"chi-tw":"zh-tw","zho-tw":"zh-tw",zh:1,chi:"zh",zho:"zh"};if(b[a]){return b[a]}a=a.split("-").shift();if(b[a]){if(b[a]===1){return a}else{return b[a]}}return 0},gvl:function(a){var b=f.ivl(a)||"en";if(b===1){b=a}return b},alg:function(e,d){var a=(e||f.lng()||"en").toLowerCase(),b=f.ivl(a);if(a.indexOf("en")!==0&&(!f.pll||d)){if(b){if(b!==1){a=b}f.pll=f.ajs("static/r07/lang03/"+a+".js")}}}});J(f,{trim:function(a,b){try{a=a.replace(/^[\s\u3000]+|[\s\u3000]+$/g,"");if(b){a=_euc(a)}}catch(b){}return a},trl:[],tru:function(b,a){var d="";if(b){d=b.substr(0,300);if(d!=b){f.trl.push(a)}}return d},sto:function(b,a){return setTimeout(b,a)},opp:function(a){a.width=a.height="1px";a.position="absolute";a.zIndex=100000},jlr:{},acs:function(b){var a=L.ce("link"),d=(L.gn("head")[0]||L.documentElement);a.rel="stylesheet";a.type="text/css";a.href=b;a.media="all";d.insertBefore(a,d.firstChild)},ajs:function(b,a){if(!f.jlr[b]){var e=L.ce("script"),d=L.gn("head")[0]||L.documentElement;e.src=(a?"":_atr)+b;d.insertBefore(e,d.firstChild);f.jlr[b]=1;return e}return 1},jlo:function(){try{var q=document,b=f,p=b.lng(),i=function(d){var a=new Image();f.imgz.push(a);a.src=d};b.alg(p);if(!b.pld){if(b.bro.ie6){i(_atr+b.spt);i(_atr+"static/t00/logo1414.gif");i(_atr+"static/t00/logo88.gif");if(window.addthis_feed){i("static/r05/feed00.gif",1)}}if(b.pll&&!window.addthis_translations){b.sto(function(){b.pld=b.ajs("static/r07/menu57.js")},10)}else{b.pld=b.ajs("static/r07/menu57.js")}}}catch(l){}},ao:function(b,l,i,d,e,a){f.lad(["open",b,l,i,d,e,a]);f.jlo();return false},ac:function(){},as:function(b,d,a){f.lad(["send",b,d,a]);f.jlo()}});(function(e,l,q){var w=document,r=1,a=["cbea","kkk","zvys","phz"];function b(d){return d.replace(/[a-zA-Z]/g,function(i){return String.fromCharCode((i<="Z"?90:122)>=(i=i.charCodeAt(0)+13)?i:i-26)})}for(var p=0;p<a.length;p++){a[p]=" "+b(a[p])+" "}function s(i){var S=0,R;i=(i||"").toLowerCase()+" ";if(!i){return S}for(var d=0;d<a.length;d++){R=a[d];if(i==R.replace(/ /g,"")||i.indexOf(R)>-1||i.indexOf(R.replace(/^ /g,""))===0){S|=r}}return S}function Q(){var U=(o.addthis_title||w.title),R=s(U),T=w.all?w.all.tags("META"):w.getElementsByTagName?w.getElementsByTagName("META"):new Array();if(T&&T.length){for(var S=0;S<T.length;S++){var d=T[S]||{},W=(d.name||"").toLowerCase(),V=d.content;if(W=="description"||W=="keywords"){R|=s(V)}}}return R}if(!e.ad){e.ad={}}e.ad.cla=Q})(f,f.api,f);var o=window,M=o.addthis_config||{};function h(){try{if(_atc.xol&&!_atc.xcs){f.acs(_atr+"static/r07/widget40.css")}var ad=f,q=ad.bro.msi,b=0,S=L.title,T=L.referer||L.referrer||"",R=G?G.href:null,r=R,aa=G.hostname,ac=R?R.indexOf("sms_ss"):-1,W=(f.lng().split("-")).shift(),p=(G.href.indexOf(_atr)==-1&&!ad.sub),X=L.gn("link"),d=_atr+"static/r07/sh20.html#",U=R&&R.indexOf("https")===0?1:0,s,ae,Q=function(){ae.pc=window.addthis_product||"men"+_atc.ver};for(var Y=0;Y<X.length;Y++){var V=X[Y];if(V.rel&&V.rel=="canonical"&&V.href){r=V.href}}r=r.split("#{").shift();ad.igv(r,L.title||"");ad.dr=ad.tru(T,"fr");ad.du=ad.tru(r,"fp");ad.dt=S=o.addthis_share.title;ad.cb=ad.ad.cla();ad.dh=G.hostname;ad.ssl=U;ae={cb:ad.cb,ab:ad.ab,dh:ad.dh,dr:ad.dr,du:ad.du,dt:S,inst:ad.inst,lng:ad.lng(),pc:o.addthis_product||"men",pub:ad.pub(),ssl:U,sid:f.ssid(),srd:_atc.damp,srf:_atc.famp,srp:_atc.pamp,srx:_atc.xamp,ver:_atc.ver,xck:_atc.xck||0};if(ad.trl.length){ae.trl=ad.trl.join(",")}if(ad.rev){ae.rev=ad.rev}if(ac>-1&&R.indexOf(_atd+"book")==-1){var w=[];var Z=R.substr(ac);Z=Z.split("&").shift().split("#").shift().split("=").pop();ae.sr=Z;if(ad.vamp>=0&&!ad.sub&&Z.length){w.push(ad.fcv("plv",Math.round(1/_atc.vamp)));w.push(ad.fcv("rsc",Z));ae.ce=w.join(",")}}if(ad.upm){ae.xd=1;if(f.bro.ffx){ae.xld=1}}if(p){if(ad.upm){if(q){f.sto(function(){Q();ad.atf=s=ad.ctf(d+m(ae))},f.wait);o.attachEvent("onmessage",ad.pmh)}else{s=ad.ctf();o.addEventListener("message",ad.pmh,false)}if(f.bro.ffx){s.src=d;f.qtp.push(ae)}else{if(!q){f.sto(function(){Q();s.src=d+m(ae)},f.wait)}}}else{s=ad.ctf();f.sto(function(){Q();s.src=d+m(ae)},f.wait)}if(s){ad.atf=s=ad.get_atssh().appendChild(s)}}if(o.addthis_language||M.ui_language){ad.alg()}if(ad.plo.length>0){ad.jlo()}}catch(ab){}}f.ed.addEventListener("addthis.menu.share",f.oms);o._ate=O;o._adr=v;try{var D=L.gn("script"),u=D[D.length-1],x=u.src.indexOf("#")>-1?u.src.replace(/^[^\#]+\#?/,""):u.src.replace(/^[^\?]+\??/,""),y=j(x);if(y.pub||y.username){o.addthis_pub=_duc(y.pub?y.pub:y.username)}if(o.addthis_pub&&o.addthis_config){o.addthis_config.username=o.addthis_pub}if(y.domready){_atc.dr=1}if(y.async){_atc.xol=1}if(_atc.ver===120){var C="atb"+f.cuid();L.write('<span id="'+C+'"></span>');f.igv();f.lad(["span",C,addthis_share.url||"[url]",addthis_share.title||"[title]"])}if(o.addthis_clickout){f.lad(["cout"])}if(!_atc.xol&&!_atc.xcs&&M.ui_use_css!==false){f.acs(_atr+"static/r07/widget40.css")}}catch(K){}n.bindReady();n.append(h);(function(i,l,p){var d,w=i.util,b=i.event.EventDispatcher,r=25,e=[];function q(T,V,S){var R=[];function R(){R.push(arguments)}function U(){S[T]=V;while(R.length){V.apply(S,R.shift())}}R.ready=U;return R}function s(T){if(T&&T instanceof a){e.push(T)}for(var R=0;R<e.length;){var S=e[R];if(S&&S.test()){e.splice(R,1);a.fire("load",S,{resource:S})}else{R++}}if(e.length){setTimeout(s,r)}}function a(V,S,U){var R=this,T=new b(R);T.decorate(T).decorate(R);this.ready=false;this.loading=false;this.id=V;this.url=S;if(typeof(U)==="function"){this.test=U}else{this.test=function(){return(!!_window[U])}}a.addEventListener("load",function(W){var X=W.resource;if(!X||X.id!==R.id){return}R.loading=false;R.ready=true;T.fire(W.type,X,{resource:X})})}w.extend(a.prototype,{load:function(){if(this.url.substr(this.url.length-4)==".css"){f.acs(this.url)}else{f.ajs(this.url,1)}this.loading=true;a.monitor(this)}});var Q=new b(a);Q.decorate(Q).decorate(a);w.extend(a,{known:{jquery:new a("jquery","//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js","jQuery"),ga:new a("ga","//www.google-analytics.com/ga.js",function(){var R=_window._gat;return !!(R&&(typeof(R._getTracker)==="function"))})},loading:e,monitor:s});i.resource={Resource:a,ApiQueueFactory:q}})(f,f.api,f)})();function addthis_open(){if(typeof iconf=="string"){iconf=null}return _ate.ao.apply(_ate,arguments)}function addthis_close(){_ate.ac()}function addthis_sendto(){_ate.as.apply(_ate,arguments);return false}if(_atc.dr){_adr.onReady()}}else{_ate.inst++}if(_atc.abf){addthis_open(document.getElementById("ab"),"emailab",window.addthis_url||"[URL]",window.addthis_title||"[TITLE]")};if(!window.addthis||window.addthis.nodeType!==undefined){window.addthis=(function(){var g={aim:"AIM",a1webmarks:"A1&#8209;Webmarks",aim:"AIM Share",amazonwishlist:"Amazon",aolmail:"AOL Mail",aviary:"Aviary Capture",domaintoolswhois:"Whois Lookup",googlereader:"Google Reader",googletranslate:"Google Translate",linkagogo:"Link-a-Gogo",meneame:"Men&eacute;ame",misterwong:"Mister Wong",mailto:"Email App",myaol:"myAOL",myspace:"MySpace",readitlater:"Read It Later",stumbleupon:"StumbleUpon",typepad:"TypePad",wordpress:"WordPress",yahoobkm:"Y! Bookmarks",yahoomail:"Y! Mail"},i=document,f=i.gn("body").item(0),h=_ate.util.bind,c=_ate.ed,b=function(d,n){var o;if(window._atw&&_atw.list){o=_atw.list[d]}else{if(g[d]){o=g[d]}else{o=(n?d:(d.substr(0,1).toUpperCase()+d.substr(1)))}}return o.replace(/&nbsp;/g," ")},l=function(d,w,u,t,v){w=w.toUpperCase();var r=(d==f&&addthis.cache[w]?addthis.cache[w]:(d||f||i.body).getElementsByTagName(w)),q=[],s,p;if(d==f){addthis.cache[w]=r}if(v){for(s=0;s<r.length;s++){p=r[s];if(p.className.indexOf(u)>-1){q.push(p)}}}else{u=u.replace(/\-/g,"\\-");var n=new RegExp("(^|\\s)"+u+(t?"\\w*":"")+"(\\s|$)");for(s=0;s<r.length;s++){p=r[s];if(n.test(p.className)){q.push(p)}}}return(q)},m=i.getElementsByClassname||l;function k(d){if(typeof d=="string"){var n=d.substr(0,1);if(n=="#"){d=i.getElementById(d.substr(1))}else{if(n=="."){d=m(f,"*",d.substr(1))}else{}}}if(!d){d=[]}else{if(!(d instanceof Array)){d=[d]}}return d}function a(n,d){return function(){addthis.plo.push({call:n,args:arguments,ns:d})}}function j(o){var n=this,d=this.queue=[];this.name=o;this.call=function(){d.push(arguments)};this.call.queuer=this;this.flush=function(r,q){for(var p=0;p<d.length;p++){r.apply(q||n,d[p])}return r}}return{ost:0,cache:{},plo:[],links:[],ems:[],init:_adr.onReady,_Queuer:j,_queueFor:a,_select:k,_gebcn:l,button:a("button"),toolbox:a("toolbox"),update:a("update"),util:{getServiceName:b},addEventListener:h(_ate.ed.addEventListener,_ate.ed),removeEventListener:h(_ate.ed.removeEventListener,_ate.ed)}})()}_adr.append((function(){if(!window.addthis.ost){_ate.extend(addthis,_ate.api);var d=document,u=undefined,w=window,unaccent=function(s){if(s.indexOf("&")>-1){s=s.replace(/&([aeiou]).+;/g,"$1")}return s},customServices={},globalConfig=w.addthis_config,globalShare=w.addthis_share,upConfig={},upShare={},body=d.gn("body").item(0),mrg=function(o,n){if(n&&o!==n){for(var k in n){if(o[k]===u){o[k]=n[k]}}}},addevts=function(o,ss,au){var oldclick=o.onclick||function(){},genshare=function(){_ate.ed.fire("addthis.menu.share",window.addthis||{},{service:ss,url:o.share.url})};if(o.conf.data_ga_tracker||addthis_config.data_ga_tracker||o.conf.data_ga_property||addthis_config.data_ga_property){o.onclick=function(){_ate.gat(ss,au,o.conf,o.share);genshare();oldclick()}}else{o.onclick=function(){genshare();oldclick()}}},rpl=function(o,n){var r={};for(var k in o){if(n[k]){r[k]=n[k]}else{r[k]=o[k]}}return r},addthis=window.addthis,genieu=function(share){return"mailto:?subject="+_euc(share.title?share.title:"%20")+"&body="+_euc(share.title?share.title:"")+(share.title?"%0D%0A":"")+_euc(share.url)+"%0D%0A%0D%0AShared via AddThis.com"},b_title={email:"Email",mailto:"Email",print:"Print",favorites:"Save to Favorites",twitter:"Tweet This",digg:"Digg This",more:"View more services"},json={email_vars:1,modules:1,templates:1,services_custom:1},nosend={feed:1,more:1,email:1,mailto:1},nowindow={feed:1,email:1,mailto:1,print:1,more:1,favorites:1},a_config=["username","services_custom","services_exclude","services_compact","services_expanded","ui_click","ui_hide_embed","ui_delay","ui_hover_direction","ui_language","ui_offset_top","ui_offset_left","ui_header_color","ui_header_background","ui_icons","ui_cobrand","ui_use_embeddable_services","data_use_cookies","data_track_clickback","data_track_linkback"],a_share=["url","title","templates","email_template","email_vars","html","swfurl","iframeurl","width","height","modules","screenshot","author","description","content"],_uniquify=function(r){var a=[];var l=r.length;for(var i=0;i<l;i++){for(var j=i+1;j<l;j++){if(r[i]===r[j]){j=++i}}a.push(r[i])}return a},_svcurl=function(config,share){var sv=config.services instanceof Array?config.services[0]:config.services||"";return"http://"+_atd+"bookmark.php?v="+_atc.ver+"&pub="+_euc(_ate.pub())+"&s="+sv+(share.url?"&url="+_euc(share.url):"")+(share.title?"&title="+_euc(share.title):"")+"&tt=0"},_makeButton=function(w,h,alt,url){var img=d.ce("img");img.width=w;img.height=h;img.border=0;img.alt=alt;img.src=url;return img},_parseThirdPartyAttributes=function(el,prefix){var key,attr=[],rv={};for(var i=0;i<el.attributes.length;i++){key=el.attributes[i];attr=key.name.split(prefix+":");if(attr.length==2){rv[attr.pop()]=key.value}}return rv},_parseAttributes=function(el,attrs,overrides,childWins){var rv={};overrides=overrides||{};for(var i=0;i<attrs.length;i++){if(overrides[attrs[i]]&&!childWins){rv[attrs[i]]=overrides[attrs[i]]}else{if(el){var p="addthis:"+attrs[i],v=el.getAttribute?el.getAttribute(p)||el[p]:el[p];if(v){rv[attrs[i]]=v}else{if(overrides[attrs[i]]){rv[attrs[i]]=overrides[attrs[i]]}}if(rv[attrs[i]]==="true"){rv[attrs[i]]=true}else{if(rv[attrs[i]]==="false"){rv[attrs[i]]=false}}}}if(rv[attrs[i]]!==undefined&&json[attrs[i]]&&(typeof rv[attrs[i]]=="string")){eval("var e = "+rv[attrs[i]]);rv[attrs[i]]=e}}return rv},_processCustomServices=function(conf){var acs=(conf||{}).services_custom;if(!acs){return}if(!(acs instanceof Array)){acs=[acs]}for(var i=0;i<acs.length;i++){var service=acs[i];if(service.name&&service.icon&&service.url){service.code=service.url=service.url.replace(/ /g,"");if(service.code.indexOf("http")===0){service.code=service.code.substr((service.code.indexOf("https")===0?8:7))}service.code=service.code.split("?").shift().split("/").shift().toLowerCase();customServices[service.code]=service}}},_select=addthis._select,_getCustomService=function(ss,conf){return customServices[ss]||{}},_getATtributes=function(el,config,share,childWins){var rv={conf:config||{},share:share||{}};rv.conf=_parseAttributes(el,a_config,config,childWins);rv.share=_parseAttributes(el,a_share,share,childWins);return rv},_render=function(what,conf,attrs){_ate.igv();if(what){conf=conf||{};attrs=attrs||{};var config=conf.conf||globalConfig,share=conf.share||globalShare,onmouseover=attrs.onmouseover,onmouseout=attrs.onmouseout,onclick=attrs.onclick,internal=attrs.internal,ss=attrs.singleservice;if(ss){config.product="tbx-"+_atc.ver;if(onclick===u){onclick=nosend[ss]?function(el,config,share){var s=rpl(share,upShare);return addthis_open(el,ss,s.url,s.title,rpl(config,upConfig),s)}:nowindow[ss]?function(el,config,share){var s=rpl(share,upShare);return addthis_sendto(ss,rpl(config,upConfig),s)}:null}}else{if(!attrs.noevents){if(!attrs.nohover){if(onmouseover===u){onmouseover=function(el,config,share){return addthis_open(el,"",null,null,config,share)}}if(onmouseout===u){onmouseout=function(el){return addthis_close()}}if(onclick===u){onclick=function(el,config,share){return addthis_sendto("more",config,share)}}}else{if(onclick===u){onclick=function(el,config,share){return addthis_open(el,"more",null,null,config,share)}}}}}what=_select(what);for(var i=0;i<what.length;i++){var o=what[i],oattr=_getATtributes(o,config,share,true)||{};mrg(oattr.conf,globalConfig);mrg(oattr.share,globalShare);o.conf=oattr.conf;o.share=oattr.share;if(o.conf.ui_language){_ate.alg(o.conf.ui_language)}_processCustomServices(o.conf);if((!o.conf||!o.conf.ui_click)&&!_ate.bro.ipa){if(onmouseover){o.onmouseover=function(){return onmouseover(this,this.conf,this.share)}}if(onmouseout){o.onmouseout=function(){return onmouseout(this)}}if(onclick){o.onclick=function(){return onclick(this,this.conf,this.share)}}}else{if(onclick){if(ss){o.onclick=function(){return onclick(this,this.conf,this.share)}}else{o.onclick=function(){return addthis_open(this,"",null,null,this.conf,this.share)}}}}if(o.tagName.toLowerCase()=="a"){if(ss){var customService=_getCustomService(ss,o.conf);o.conf.product="tbx-"+_atc.ver;if(customService&&customService.code&&customService.icon){if(o.firstChild&&o.firstChild.className.indexOf("at300bs")>-1){o.firstChild.style.background="url("+customService.icon+") no-repeat top left"}}if(!nowindow[ss]){var t=_ate.trim,template=o.share.templates&&o.share.templates[ss]?o.share.templates[ss]:"",url=o.share.url||addthis_share.url,title=o.share.title||addthis_share.title,swfurl=o.share.swfurl||addthis_share.swfurl,width=o.share.width||addthis_share.width,height=o.share.height||addthis_share.height,description=o.share.description||addthis_share.description,screenshot=o.share.screenshot||addthis_share.screenshot;o.href="//"+_atd+"bookmark.php?pub="+t(addthis_config.username||o.conf.username||_ate.pub(),1)+"&v="+_atc.ver+"&source=tbx-"+_atc.ver+"&tt=0&s="+ss+"&url="+_euc(url||"")+"&title="+t(title||"",1)+"&content="+t(o.share.content||addthis_share.content||"",1)+(template?"&template="+_euc(template):"")+(o.conf.data_track_clickback||o.conf.data_track_linkback||(!_ate.pub())?"&sms_ss=1":"")+"&lng="+(o.conf.ui_language||_ate.lng()||"xy").split("-").shift()+(description?"&description="+t(description,1):"")+(swfurl?"&swfurl="+_euc(swfurl):"")+(attrs.issh?"&ips=1":"")+(width?"&width="+_euc(width):"")+(height?"&height="+_euc(height):"")+(screenshot?"&screenshot="+_euc(screenshot):"")+(customService&&customService.url?"&acn="+_euc(customService.name)+"&acc="+_euc(customService.code)+"&acu="+_euc(customService.url):"")+(_ate.uid?"&uid="+_euc(_ate.uid):"");addevts(o,ss,url);o.target="_blank";addthis.links.push(o)}else{if(ss=="mailto"||(ss=="email"&&(o.conf.ui_use_mailto||_ate.bro.iph||_ate.bro.ipa))){o.onclick=function(){};o.href=genieu(o.share);addevts(o,ss,url);addthis.ems.push(o)}}if(!o.title||o.at_titled){o.title=unaccent(b_title[ss]?b_title[ss]:"Send to "+addthis.util.getServiceName(ss,!customService));o.at_titled=1}}}var app;switch(internal){case"img":if(!o.hasChildNodes()){var lang=(o.conf.ui_language||_ate.lng()).split("-").shift(),validatedLang=_ate.ivl(lang);if(!validatedLang){lang="en"}else{if(validatedLang!==1){lang=validatedLang}}app=_makeButton(_ate.iwb(lang)?150:125,16,"Share",_atr+"static/btn/v2/lg-share-"+lang.substr(0,2)+".gif")}break}if(app){o.appendChild(app)}}}},buttons=addthis._gebcn(body,"A","addthis_button_",true,true),_renderToolbox=function(collection,config,share,reprocess){for(var i=0;i<collection.length;i++){var b=collection[i];if(b==null){continue}if(reprocess!==false||!b.ost){var attr=_getATtributes(b,config,share,true),hc=0,a="at300",c=b.className||"",passthrough="",s=c.match(/addthis_button_([\w\.]+)(?:\s|$)/),options=u,sv=s&&s.length?s[1]:0;mrg(attr.conf,globalConfig);mrg(attr.share,globalShare);if(sv){if(sv==="tweetmeme"){var tm_attr=_parseThirdPartyAttributes(b,"tm"),tmw=50,tmh=61;passthrough=_ate.util.toKV(tm_attr);if(tm_attr.style==="compact"){tmw=95;tmh=25}b.innerHTML='<iframe frameborder="0" width="'+tmw+'" height="'+tmh+'" scrolling="no" allowTransparency="true" scrollbars="no"'+(_ate.bro.ie6?" src=\"javascript:''\"":"")+"></iframe>";var tm=b.firstChild;tm.src="//api.tweetmeme.com/button.js?url="+_euc(attr.share.url)+"&"+passthrough}else{if(sv==="facebook_like"){var fblike;passthrough=_ate.util.toKV(_parseThirdPartyAttributes(b,"fb:like"));if(!_ate.bro.msi){fblike=d.ce("iframe")}else{b.innerHTML='<iframe frameborder="0" scrolling="no" allowTransparency="true" scrollbars="no"'+(_ate.bro.ie6?" src=\"javascript:''\"":"")+"></iframe>";fblike=b.firstChild}fblike.style.overflow="hidden";fblike.style.border="none";fblike.style.borderWidth="0px";fblike.style.width="82px";fblike.style.height="25px";fblike.style.marginTop="-2px";fblike.src="//www.facebook.com/plugins/like.php?href="+_euc(attr.share.url)+"&layout=button_count&show_faces=false&width=100&action=like&font=arial&"+passthrough;if(!_ate.bro.msi){b.appendChild(fblike)}}else{if(sv.indexOf("preferred")>-1){if(b._iss){continue}window.addthis_product="tbx-"+_atc.ver;s=c.match(/addthis_button_preferred_([0-9]+)(?:\s|$)/);var svidx=((s&&s.length)?Math.min(12,Math.max(1,parseInt(s[1]))):1)-1;if(window._atw){var excl=_atw.conf.services_exclude,locopts=_atw.loc,opts=_uniquify(addthis_options.replace(",more","").split(",").concat(locopts.split(",")));do{sv=opts[svidx++]}while((excl.indexOf(sv)>-1||(b.parentNode.services||{})[sv])&&svidx<opts.length);b._ips=1;if(b.className.indexOf(sv)==-1){b.className+=" addthis_button_"+sv;b._iss=1}if(!b.parentNode.services){b.parentNode.services={}}b.parentNode.services[sv]=1}else{if(attr.conf.ui_language||window.addthis_language){_ate.alg(attr.conf.ui_language)}_ate.plo.push(["deco",_renderToolbox,[b],config,share,true]);if(_ate.gssh){_ate.pld=_ate.ajs("static/r07/menu57.js")}else{if(!_ate.pld){_ate.pld=1;var loadmenu=function(){_ate.pld=_ate.ajs("static/r07/menu57.js")};if(_ate.upm){_ate._rec.push(function(data){if(data.ssh){loadmenu()}});_ate.sto(loadmenu,500)}else{loadmenu()}}}continue}}}}if(!b.childNodes.length){var sp=d.ce("span");b.appendChild(sp);sp.className=a+"bs at15t_"+sv}else{if(b.childNodes.length==1){var cn=b.childNodes[0];if(cn.nodeType==3){var sp=d.ce("span"),tv=cn.nodeValue;b.insertBefore(sp,cn);sp.className=a+"bs at15t_"+sv}}else{hc=1}}if(sv==="compact"){if(!hc&&c.indexOf(a)==-1){b.className+=" "+a+"m"}}else{if(sv==="expanded"){if(!hc&&c.indexOf(a)==-1){b.className+=" "+a+"m"}options={nohover:true,singleservice:"more"}}else{if((b.parentNode.className||"").indexOf("toolbox")>-1){if(!b.parentNode.services){b.parentNode.services={}}b.parentNode.services[sv]=1}if(!hc&&c.indexOf(a)==-1){b.className+=" "+a+"b"}options={singleservice:sv}}}if(b._ips){if(!options){options={}}options.issh=true}_render([b],attr,options);b.ost=1;window.addthis_product="tbx-"+_atc.ver}}}},gat=function(s,au,conf,share){var pageTracker=conf.data_ga_tracker,propertyId=conf.data_ga_property;if(propertyId&&typeof(window._gat)=="object"){pageTracker=_gat._getTracker(propertyId)}if(pageTracker&&typeof(pageTracker)=="string"){pageTracker=window[pageTracker]}if(pageTracker&&typeof(pageTracker)=="object"){var gaUrl=au||(share||{}).url||location.href;if(gaUrl.toLowerCase().replace("https","http").indexOf("http%3a%2f%2f")==0){gaUrl=_duc(gaUrl)}try{pageTracker._trackEvent("addthis",s,gaUrl)}catch(e){try{pageTracker._initData();pageTracker._trackEvent("addthis",s,gaUrl)}catch(e){}}}};_ate.gat=gat;addthis.update=function(which,what,value){if(which=="share"){if(!window.addthis_share){window.addthis_share={}}window.addthis_share[what]=value;upShare[what]=value;for(var i in addthis.links){var o=addthis.links[i],rx=new RegExp("&"+what+"=(.*)&"),ns="&"+what+"="+_euc(value)+"&";o.href=o.href.replace(rx,ns);if(o.href.indexOf(what)==-1){o.href+=ns}}for(var i in addthis.ems){var o=addthis.ems[i];o.href=genieu(addthis_share)}}else{if(which=="config"){if(!window.addthis_config){window.addthis_config={}}window.addthis_config[what]=value;upConfig[what]=value}}};addthis._render=_render;var rsrcs=[new _ate.resource.Resource("counter",_atr+"js/250/api.sharecounter.js",function(){return window.addthis.counter.ost}),new _ate.resource.Resource("countercss",_atr+"static/r07/counter40.css",function(){return true})];addthis.counter=function(what,config,share){if(what){what=addthis._select(what);if(what.length){for(var k in rsrcs){rsrcs[k].load()}}}};addthis.button=function(what,config,share){_render(what,{conf:config,share:share},{internal:"img"})};addthis.toolbox=function(what,config,share){var toolboxes=_select(what);for(var i=0;i<toolboxes.length;i++){var tb=toolboxes[i],attr=_getATtributes(tb,config,share),sp=d.ce("div"),c;if(tb){c=tb.getElementsByTagName("a");if(c){_renderToolbox(c,attr.conf,attr.share)}tb.appendChild(sp)}sp.className="atclear"}};addthis.ready=function(){var at=addthis,a=".addthis_";if(at.ost){return}at.ost=1;addthis.toolbox(a+"toolbox");addthis.button(a+"button");addthis.counter(a+"counter");_renderToolbox(buttons,null,null,false);_ate.ed.fire("addthis.ready",addthis);for(var i=0,plo=at.plo,q;i<plo.length;i++){q=plo[i];(q.ns?at[q.ns]:at)[q.call].apply(this,q.args)}};addthis.util.getAttributes=_getATtributes;window.addthis=addthis;window.addthis.ready()}}));_ate.extend(addthis,{counter:(function(){var s=1,z=_ate,x=document,n=window,p=addthis,j=n.addthis_config,k=n.addthis_share,r=function(w,d,a){w/=d;return Math.round(w*10)/10+a},i=function(a){var d=(""+a).split(".").shift().length;if(isNaN(a)){return a}else{if(d<4){return Math.round(a)}else{if(d<7){return r(a,1000,"K")}else{if(d<10){return r(a,1000000,"M")}else{return r(a,1000000000,"B")}}}}},q=function(d){try{if(n.JSON&&n.JSON.parse){return JSON.parse(d)}return _ate.util.fromKV(d)}catch(a){return{}}},o=function(d){try{if(n.JSON&&n.JSON.stringify){return JSON.stringify(d)}return _ate.util.toKV(d)}catch(a){return""}},g=function(d){var a=_ate.cookie.rck("_atshc");if(a){return(q(a)||{})[d]||-1}return -1},c=function(d,w){var a=_ate.cookie.rck("_atshc"),B;if(a){a=q(a);B=(a||{})[d]||0;if(B&&w>B){delete a[d];_ate.cookie.sck("_atshc",o(a),0,1)}}},y=function(d){var a=_ate.cookie.rck("_atshc"),w=A(d)+1;u(d,w);if(!a){a={}}else{a=q(a)}if(a[d.url]){delete a[d.url]}a[_euc(d.url)]=w;_ate.cookie.sck("_atshc",o(a),0,1)},A=function(a){var d=0;if(a&&a.firstChild&&a.firstChild.firstChild){d=parseInt(a.firstChild.firstChild.nodeValue);if(isNaN(d)){d=0}}return d},u=function(d,D){if(!d){return}if(d.firstChild&&d.firstChild.nodeType==3){d.removeChild(d.firstChild)}if(!d.firstChild){var F=x.ce("a"),B=x.ce("a"),E=x.ce("span"),a=x.createTextNode("Share"),w=d.addthis_conf||{},C=d.addthis_share||{};F.className="addthis_button_expanded";B.className="atc_s addthis_button_compact";d.appendChild(F);d.appendChild(B);B.appendChild(E);E.appendChild(a);w.ui_offset_top=18;w.ui_offset_left=-4;addthis.button(B,w,C);addthis._render([F],{conf:w,share:C},{nohover:true,singleservice:"more"})}if(d.firstChild.firstChild){d.firstChild.removeChild(d.firstChild.firstChild)}D=x.createTextNode(D);d.firstChild.appendChild(D)},b=function(a,d){u(a,i(d))},f=[],l=function(a,B,C){var d=0,w=g(a.url);if(B.error){d="?"}else{d=B.shares}if(!isNaN(w)&&((isNaN(d)&&w>0)||w>d)){d=w}c(a.url,d);C(a,d)},m={},t={},v=function(a,w){if(!t[a.url]){t[a.url]=[]}t[a.url].push(a);if(m[a.url]){w(a,m[a.url])}else{_ate.ed.addEventListener("addthis.menu.share",function(B){try{if(B.data.service&&B.data.url==a.url){y(a)}}catch(B){}});var d="sc_"+encodeURIComponent(a.url).replace(/[0-3][A-Z]|[^a-zA-Z0-9]/g,"");if(!_ate.cbs){_ate.cbs={}}if(!_ate.cbs[d]){_ate.cbs[d]=function(C){if(s){img=new Image();z.imgz.push(img);img.src="//l.addthiscdn.com/live/t00/mu.gif?a=sc&t="+((new Date()).getTime()-_ate.cbs["time_"+d])}if(C&&!C.error&&C.shares){m[a.url]=C.shares}for(var B=0;B<t[a.url].length;B++){l(t[a.url][B],C,w)}};_ate.cbs["time_"+d]=(new Date()).getTime();_ate.ajs("//api-public.addthis.com/url/shares.json?suppress_response_codes=true&url="+_euc(a.url)+"&callback=_ate.cbs."+encodeURIComponent(d),1)}}},h=function(E,w,D){if(E){E=addthis._select(E);for(var B=0;B<E.length;B++){var a=E[B],C=((a.parentNode||{}).className||"").indexOf("addthis_toolbox")>-1?addthis.util.getAttributes(a.parentNode,w,D):null,d=addthis.util.getAttributes(a,C?C.conf:w,C?C.share:D,true);if(!a.ost){a.url=d.share.url||(n.addthis_share||{}).url;a.addthis_conf=d.conf;a.addthis_share=d.share;a.ost=1;u(a,"--");v(a,function(F,G){b(F,G)})}}}};addthis.addEventListener("addthis.ready",function(){addthis.counter=function(w,a,d){h(w,a,d)};addthis.counter.ost=1;addthis.counter(".addthis_counter")});return addthis})()});_ate.extend(addthis,{user:(function(){var f=_ate,c=addthis,g={},d=0,j;function i(a,k){return f.reduce(["getID","getServiceShareHistory"],a,k)}function h(a,k){return function(l){setTimeout(function(){l(f[a]||k)},0)}}function b(){if(d){return}if(j!==null){clearTimeout(j)}j=null;d=1;i(function(l,a,k){g[a]=g[a].queuer.flush(h.apply(c,l[k]),c);return l},[["uid",""],["_ssh",[]]])}f._rec.push(b);j=setTimeout(b,5000);g.getPreferredServices=function(a){if(window._atw){a(addthis_options.split(","))}else{f.plo.push(["pref",a]);_ate.alg();if(f.gssh){f.pld=f.ajs("static/r07/menu57.js")}else{if(!f.pld){f.pld=1;_ate._rec.push(function(k){if(k.ssh){_ate.pld=_ate.ajs("static/r07/menu57.js")}})}}}};return i(function(k,a){k[a]=(new c._Queuer(a)).call;return k},g)})()});
\ No newline at end of file
--- a/test/emission_fichiers/ajax-responder.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,347 +0,0 @@
-// $Id: ajax-responder.js,v 1.18.2.6 2010/01/22 06:48:08 merlinofchaos Exp $
-/**
- * @file
- *
- * CTools flexible AJAX responder object.
- */
-
-(function ($) {
-  Drupal.CTools = Drupal.CTools || {};
-  Drupal.CTools.AJAX = Drupal.CTools.AJAX || {};
-  Drupal.CTools.AJAX.commands = Drupal.CTools.AJAX.commands || {};
-
-  /**
-   * Success callback for an ajax request.
-   *
-   * This function expects to receive a packet of data from a JSON object
-   * which is essentially a list of commands. Each commands must have a
-   * 'command' setting and this setting must resolve to a function in the
-   * Drupal.CTools.AJAX.commands space.
-   */
-  Drupal.CTools.AJAX.respond = function(data) {
-    for (i in data) {
-      if (data[i]['command'] && Drupal.CTools.AJAX.commands[data[i]['command']]) {
-        Drupal.CTools.AJAX.commands[data[i]['command']](data[i]);
-      }
-    }
-  };
-
-  /**
-   * Generic replacement click handler to open the modal with the destination
-   * specified by the href of the link.
-   */
-  Drupal.CTools.AJAX.clickAJAXLink = function() {
-    if ($(this).hasClass('ctools-ajaxing')) {
-      return false;
-    }
-
-    var url = $(this).attr('href');
-    var object = $(this);
-    $(this).addClass('ctools-ajaxing');
-    try {
-      url = url.replace(/nojs/g, 'ajax');
-      $.ajax({
-        type: "POST",
-        url: url,
-        data: { 'js': 1, 'ctools_ajax': 1 },
-        global: true,
-        success: Drupal.CTools.AJAX.respond,
-        error: function(xhr) {
-          Drupal.CTools.AJAX.handleErrors(xhr, url);
-        },
-        complete: function() {
-          object.removeClass('ctools-ajaxing');
-        },
-        dataType: 'json'
-      });
-    }
-    catch (err) {
-      alert("An error occurred while attempting to process " + url);
-      $(this).removeClass('ctools-ajaxing');
-      return false;
-    }
-
-    return false;
-  };
-
-  /**
-   * Generic replacement click handler to open the modal with the destination
-   * specified by the href of the link.
-   */
-  Drupal.CTools.AJAX.clickAJAXButton = function() {
-    if ($(this).hasClass('ctools-ajaxing')) {
-      return false;
-    }
-
-    // Put our button in.
-    this.form.clk = this;
-
-    var url = Drupal.CTools.AJAX.findURL(this);
-    $(this).addClass('ctools-ajaxing');
-    var object = $(this);
-    try {
-      if (url) {
-        url = url.replace('/nojs/', '/ajax/');
-        $.ajax({
-          type: "POST",
-          url: url,
-          data: { 'js': 1, 'ctools_ajax': 1 },
-          global: true,
-          success: Drupal.CTools.AJAX.respond,
-          error: function(xhr) {
-            Drupal.CTools.AJAX.handleErrors(xhr, url);
-          },
-          complete: function() {
-            object.removeClass('ctools-ajaxing');
-          },
-          dataType: 'json'
-        });
-      }
-      else {
-        var form = this.form;
-        url = $(form).attr('action');
-        url = url.replace('/nojs/', '/ajax/');
-        $(form).ajaxSubmit({
-          type: "POST",
-          url: url,
-          data: { 'js': 1, 'ctools_ajax': 1 },
-          global: true,
-          success: Drupal.CTools.AJAX.respond,
-          error: function(xhr) {
-            Drupal.CTools.AJAX.handleErrors(xhr, url);
-          },
-          complete: function() {
-            object.removeClass('ctools-ajaxing');
-          },
-          dataType: 'json'
-        });
-      }
-    }
-    catch (err) {
-      alert("An error occurred while attempting to process " + url);
-      $(this).removeClass('ctools-ajaxing');
-      return false;
-    }
-    return false;
-  };
-
-  /**
-   * Display error in a more fashion way
-   */
-  Drupal.CTools.AJAX.handleErrors = function(xhr, path) {
-    var error_text = '';
-
-    if ((xhr.status == 500 && xhr.responseText) || xhr.status == 200) {
-      error_text = xhr.responseText;
-
-      // Replace all &lt; and &gt; by < and >
-      error_text = error_text.replace("/&(lt|gt);/g", function (m, p) {
-        return (p == "lt")? "<" : ">";
-      });
-
-      // Now, replace all html tags by empty spaces
-      error_text = error_text.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi,"");
-
-      // Fix end lines
-      error_text = error_text.replace(/[\n]+\s+/g,"\n");
-    }
-    else if (xhr.status == 500) {
-      error_text = xhr.status + ': ' + Drupal.t("Internal server error. Please see server or PHP logs for error information.");
-    }
-    else {
-      error_text = xhr.status + ': ' + xhr.statusText;
-    }
-
-    alert(Drupal.t("An error occurred at @path.\n\nError Description: @error", {'@path': path, '@error': error_text}));
-  }
-
-  /**
-   * Generic replacement for change handler to execute ajax method.
-   */
-  Drupal.CTools.AJAX.changeAJAX = function () {
-    if ($(this).hasClass('ctools-ajaxing')) {
-      return false;
-    }
-
-    var url = Drupal.CTools.AJAX.findURL(this);
-    $(this).addClass('ctools-ajaxing');
-    var object = $(this);
-    var form_id = $(object).parents('form').get(0).id;
-    try {
-      if (url) {
-        url = url.replace('/nojs/', '/ajax/');
-        $.ajax({
-          type: "POST",
-          url: url,
-          data: {'ctools_changed': $(this).val(), 'js': 1, 'ctools_ajax': 1 },
-          global: true,
-          success: Drupal.CTools.AJAX.respond,
-          error: function(xhr) {
-            Drupal.CTools.AJAX.handleErrors(xhr, url);
-          },
-          complete: function() {
-            object.removeClass('ctools-ajaxing');
-            if ($(object).hasClass('ctools-ajax-submit-onchange')) {
-              $('form#' + form_id).submit();
-            }
-          },
-          dataType: 'json'
-        });
-      }
-      else {
-        if ($(object).hasClass('ctools-ajax-submit-onchange')) {
-          $('form#' + form_id).submit();
-        }
-        return false;
-      }
-    }
-    catch (err) {
-      alert("An error occurred while attempting to process " + url);
-      $(this).removeClass('ctools-ajaxing');
-      return false;
-    }
-    return false;
-  };
-
-  /**
-   * Find a URL for an AJAX button.
-   *
-   * The URL for this gadget will be composed of the values of items by
-   * taking the ID of this item and adding -url and looking for that
-   * class. They need to be in the form in order since we will
-   * concat them all together using '/'.
-   */
-  Drupal.CTools.AJAX.findURL = function(item) {
-    var url = '';
-    var url_class = '.' + $(item).attr('id') + '-url';
-    $(url_class).each(
-      function() {
-        if (url && $(this).val()) {
-          url += '/';
-        }
-        url += $(this).val();
-      });
-    return url;
-  };
-
-  Drupal.CTools.AJAX.commands.prepend = function(data) {
-    $(data.selector).prepend(data.data);
-    Drupal.attachBehaviors($(data.selector));
-  };
-
-  Drupal.CTools.AJAX.commands.append = function(data) {
-    $(data.selector).append(data.data);
-    Drupal.attachBehaviors($(data.selector));
-  };
-
-  Drupal.CTools.AJAX.commands.replace = function(data) {
-    $(data.selector).replaceWith(data.data);
-    Drupal.attachBehaviors($(data.selector));
-  };
-
-  Drupal.CTools.AJAX.commands.after = function(data) {
-    var object = $(data.data);
-    $(data.selector).after(object);
-    Drupal.attachBehaviors(object);
-  };
-
-  Drupal.CTools.AJAX.commands.before = function(data) {
-    var object = $(data.data);
-    $(data.selector).before(object);
-    Drupal.attachBehaviors(object);
-  };
-
-  Drupal.CTools.AJAX.commands.html = function(data) {
-    $(data.selector).html(data.data);
-    Drupal.attachBehaviors($(data.selector));
-  };
-
-  Drupal.CTools.AJAX.commands.remove = function(data) {
-    $(data.selector).remove();
-  };
-
-  Drupal.CTools.AJAX.commands.changed = function(data) {
-    if (!$(data.selector).hasClass('changed')) {
-      $(data.selector).addClass('changed');
-      if (data.star) {
-        $(data.selector).find(data.star).append(' <span class="star">*</span> ');
-      }
-    }
-  };
-
-  Drupal.CTools.AJAX.commands.alert = function(data) {
-    alert(data.text, data.title);
-  };
-
-  Drupal.CTools.AJAX.commands.css = function(data) {
-  /*
-    if (data.selector && data.selector.contains('* html ')) {
-      // This indicates an IE hack and we should only do it if we are IE.
-      if (!jQuery.browser.msie) {
-        return;
-      }
-      data.selector = data.selector.replace('* html ', '');
-    }
-  */
-    $(data.selector).css(data.argument);
-  };
-
-  Drupal.CTools.AJAX.commands.settings = function(data) {
-    $.extend(Drupal.settings, data.argument);
-  };
-
-  Drupal.CTools.AJAX.commands.data = function(data) {
-    $(data.selector).data(data.name, data.value);
-  };
-
-  Drupal.CTools.AJAX.commands.attr = function(data) {
-    $(data.selector).attr(data.name, data.value);
-  };
-
-  Drupal.CTools.AJAX.commands.restripe = function(data) {
-    // :even and :odd are reversed because jquery counts from 0 and
-    // we count from 1, so we're out of sync.
-    $('tbody tr:not(:hidden)', $(data.selector))
-      .removeClass('even')
-      .removeClass('odd')
-      .filter(':even')
-        .addClass('odd')
-      .end()
-      .filter(':odd')
-        .addClass('even');
-  };
-
-  Drupal.CTools.AJAX.commands.redirect = function(data) {
-    location.href = data.url;
-  };
-
-  Drupal.CTools.AJAX.commands.reload = function(data) {
-    location.reload();
-  };
-
-  Drupal.CTools.AJAX.commands.submit = function(data) {
-    $(data.selector).submit();
-  }
-
-
-  /**
-   * Bind links that will open modals to the appropriate function.
-   */
-  Drupal.behaviors.CToolsAJAX = function(context) {
-    // Bind links
-    $('a.ctools-use-ajax:not(.ctools-use-ajax-processed)', context)
-      .addClass('ctools-use-ajax-processed')
-      .click(Drupal.CTools.AJAX.clickAJAXLink);
-
-    // Bind buttons
-    $('input.ctools-use-ajax:not(.ctools-use-ajax-processed), button.ctools-use-ajax:not(.ctools-use-ajax-processed)', context)
-      .addClass('ctools-use-ajax-processed')
-      .click(Drupal.CTools.AJAX.clickAJAXButton);
-
-    // Bind select
-    $('select, input:text, input:radio, input:checkbox', context)
-       .filter('.ctools-use-ajax-onchange:not(.ctools-use-ajax-processed)')
-       .addClass('ctools-use-ajax-processed')
-       .change(Drupal.CTools.AJAX.changeAJAX);
-  };
-})(jQuery);
Binary file test/emission_fichiers/baudin.jpg has changed
--- a/test/emission_fichiers/comment.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-// $Id: comment.js,v 1.5 2007/09/12 18:29:32 goba Exp $
-
-Drupal.behaviors.comment = function (context) {
-  var parts = new Array("name", "homepage", "mail");
-  var cookie = '';
-  for (i=0;i<3;i++) {
-    cookie = Drupal.comment.getCookie('comment_info_' + parts[i]);
-    if (cookie != '') {
-      $("#comment-form input[name=" + parts[i] + "]:not(.comment-processed)", context)
-        .val(cookie)
-        .addClass('comment-processed');
-    }
-  }
-};
-
-Drupal.comment = {};
-
-Drupal.comment.getCookie = function(name) {
-  var search = name + '=';
-  var returnValue = '';
-
-  if (document.cookie.length > 0) {
-    offset = document.cookie.indexOf(search);
-    if (offset != -1) {
-      offset += search.length;
-      var end = document.cookie.indexOf(';', offset);
-      if (end == -1) {
-        end = document.cookie.length;
-      }
-      returnValue = decodeURIComponent(document.cookie.substring(offset, end).replace(/\+/g, '%20'));
-    }
-  }
-
-  return returnValue;
-};
--- a/test/emission_fichiers/css_8af77a07a1f960afe4e4736580827c7c.css	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-.header-footer{display:none;}
\ No newline at end of file
--- a/test/emission_fichiers/css_bf9cf64d750be06f6006828a2bed7b98.css	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-.header-footer{font-family:'FreeSans','Arial';font-size:11pt;}.clearer{clear:both;height:0;width:0;}
-#header-commun{margin:7px 0 0px 0;padding:0 0 0px;border-bottom:1px solid #DDDDDD;}body.blogs #header-commun{margin:7px 0 12px 0;}#header-content{
-width:1000px;margin:0 auto;}#header-commun ul{margin:0 auto 3px auto;padding:0;
-float:left;}#header-commun li{display:inline;list-style-type:circle;background:transparent url(/sites/all/themes/franceculture/images/circle.png) no-repeat scroll 0 2px;padding:0 6px 0 24px;}#header-commun li.first-header{list-style-type:none;background:transparent none repeat scroll 0 0;padding-left:0;}#header-commun li.last-header{padding-right:0;}#header-commun li a{text-decoration:none;color:#000000;font-weight:normal;}#header-commun li a:hover{text-decoration:underline;}#header-commun li a:visited{}
-#header-commun form{float:left;}#header-commun form input{margin:0;padding:0;float:left;}#header-commun form #recherche_site{background-image:url(/sites/all/themes/franceculture/images/input.png);background-repeat:no-repeat;border:medium none;height:21px;padding:3px 0 3px 5px;}#header-commun form #submit_recherche{background:transparent url(/sites/all/themes/franceculture/images/submit.png) no-repeat scroll 0 0;border:none;color:#FFFFFF;font-size:9pt;font-weight:bold;height:22px;padding:0 0 5px;width:22px;}
-
-
-#footer-commun{background:transparent url(/sites/all/themes/franceculture/images/fondu.png) repeat-x scroll 0 0;padding:0px 0 0 0;}.content-header-footer{padding:25px 0 0 0;background-color:#ffffff;}#footer-commun li{list-style-type:none;}.footer-franceculture a{color:#000000;text-decoration:none;font-weight:normal;}#footer-chaine{margin:0 auto;padding:0 0 10px 0;width:1000px;font-size:12px;}#sous-footer{border-top:1px solid #929292;}#footer-rf{margin:0 auto;padding:15px 0 0 0;width:1000px;}#footer-rf a:hover{color:#1454a1;}
-.colonne-footer{float:left;margin-left:35px;}.colonne-footer-first{margin-left:0;}.colonne-footer h4{font-size:13pt;margin:0 0 10px;padding:0;color:#000000;}.colonne-footer ul{margin:0;padding:0;}.colonne-footer li{margin:0;padding:2px 0;}
-#colonne-liens-footer{width:95px;}#colonne-liens-footer img{border:none;}#colonne-liens-footer p{margin:7px 0;}#colonne-liens-footer p a{background-color:#f0f0f0;padding:3px;}#colonne-liens-footer p a:hover{color:#ffffff;background-color:#aaaaaa;}
-#colonne-ecouter-footer{width:90px;}
-#colonne-thematique-footer{width:500px;height:1px;}#colonne-thematique-footer li{color:#929292;}#colonne-thematique-footer a:hover{color:#000000;font-weight:bold;text-decoration:underline;}
-#colonne-partager-footer{width:205px;color:#929292;}#colonne-partager-footer div{margin-bottom:10px;}#liens-partage-footer li{padding:4px 0;width:102px;}#liens-partage-footer ul.gauche li{float:left;}#liens-partage-footer ul.gauche li.clearer{width:0;float:none;}#liens-partage-footer a{padding:0 0 2px 25px;}#facebook-footer a{background:transparent url(/sites/all/themes/franceculture/images/facebook-gris.png) no-repeat scroll 0 0;}#facebook-footer a:hover{background:transparent url(/sites/all/themes/franceculture/images/facebook-footer.png) no-repeat scroll 0 0;}#twitter-footer a{background:transparent url(/sites/all/themes/franceculture/images/twitter-gris.png) no-repeat scroll 0 0;}#twitter-footer a:hover{background:transparent url(/sites/all/themes/franceculture/images/twitter.png) no-repeat scroll 0 0;}#dailymotion-footer a{background:transparent url(/sites/all/themes/franceculture/images/dailymotion-gris.png) no-repeat scroll 0 0;}#dailymotion-footer a:hover{background:transparent url(/sites/all/themes/franceculture/images/dailymotion.png) no-repeat scroll 0 0;}#autres-footer a{background:transparent url(/sites/all/themes/franceculture/images/autres-gris.png) no-repeat scroll 0 0;}#autres-footer a:hover{background:transparent url(/sites/all/themes/franceculture/images/autres.png) no-repeat scroll 0 0;}
-#footer-rf ul{margin:0;padding:0 10px 0 0;}#footer-rf li{display:inline;border-left:1px solid #000000;margin:0;padding:0 10px;}#footer-rf li.first{border:none;padding:0 10px 0 0;}#footer-rf li.last{padding:0 40px 0 10px;}#footer-rf .haut-de-page{background:transparent url(/sites/all/themes/franceculture/images/top.png) no-repeat scroll bottom left;font-size:10pt;padding:0 0 0 13px;}#footer-rf .last-page{border:none;float:right;margin-right:103px;}#footer-rf p{color:#929292;font-size:10pt;padding:5px 0 25px 0;margin:0;}
-
-.footer-franceculture a:hover,.footer-franceculture:hover,#footer-rf a#top-page:hover,.footer-franceculture .color-chaine a,.footer-franceculture .color-chaine{color:#773694;}a.gris{color:#929292;}
-#pub-bottom-right{width:728px;}
\ No newline at end of file
--- a/test/emission_fichiers/css_e94d821d2c09c140834405452127e5ae.css	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,390 +0,0 @@
-.flickr_badge_wrapper{display:block;width:216px;margin:auto}.flickr_badge_image{float:left;width:100px;padding-right:8px;padding-top:8px;height:75px;overflow:hidden;}.flickr_badge_source{float:left;width:100px;padding-right:8px;padding-top:25px;}.flickr_badge_uber_wrapper{text-align:center;}.flickr_badge_source_txt{font-size:11px;}.twitterBlock ul li{list-style:none;padding:5px;margin:0;background-image:none;background-color:#ffffff;color:#575757;}.block .twitterBlock ul{padding:2px;margin:0;}.block .twitterUser{font-family:'Lucida Grande',sans-serif;font-size:15px;font-weight:normal;}.widget_ytb{width:264px;}.widget_ytb .ytb_vide_list{width:264px;display:block;}.widget_ytb .ytb_vide_list .ytb_item{width:88px;float:left;margin:0;padding:0;height:64px;}.widget_ytb .ytb_vide_list .ytb_item:hover{width:86px;float:left;margin:0;padding:0;height:62px;border:black solid 1px;}
-
-.node-unpublished{background-color:#fff4f4;}.preview .node{background-color:#ffffea;}#node-admin-filter ul{list-style-type:none;padding:0;margin:0;width:100%;}#node-admin-buttons{float:left;
-  margin-left:0.5em;
-  clear:right;}td.revision-current{background:#ffc;}.node-form .form-text{display:block;width:95%;}.node-form .container-inline .form-text{display:inline;width:auto;}.node-form .standard{clear:both;}.node-form textarea{display:block;width:95%;}.node-form .attachments fieldset{float:none;display:block;}.terms-inline{display:inline;}
-
-
-fieldset{margin-bottom:1em;padding:.5em;}form{margin:0;padding:0;}hr{height:1px;border:1px solid gray;}img{border:0;}table{border-collapse:collapse;}th{text-align:left;
-  padding-right:1em;
-  border-bottom:3px solid #ccc;}
-.clear-block:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.clear-block{display:inline-block;}/* Hides from IE-mac \*/
-* html .clear-block{height:1%;}.clear-block{display:block;}
-
-
-
-body.drag{cursor:move;}th.active img{display:inline;}tr.even,tr.odd{background-color:#eee;border-bottom:1px solid #ccc;padding:0.1em 0.6em;}tr.drag{background-color:#fffff0;}tr.drag-previous{background-color:#ffd;}td.active{background-color:#ddd;}td.checkbox,th.checkbox{text-align:center;}tbody{border-top:1px solid #ccc;}tbody th{border-bottom:1px solid #ccc;}thead th{text-align:left;
-  padding-right:1em;
-  border-bottom:3px solid #ccc;}
-.breadcrumb{padding-bottom:.5em}div.indentation{width:20px;height:1.7em;margin:-0.4em 0.2em -0.4em -0.4em;
-  padding:0.42em 0 0.42em 0.6em;
-  float:left;}div.tree-child{background:url(/misc/tree.png) no-repeat 11px center;}div.tree-child-last{background:url(/misc/tree-bottom.png) no-repeat 11px center;}div.tree-child-horizontal{background:url(/misc/tree.png) no-repeat -11px center;}.error{color:#e55;}div.error{border:1px solid #d77;}div.error,tr.error{background:#fcc;color:#200;padding:2px;}.warning{color:#e09010;}div.warning{border:1px solid #f0c020;}div.warning,tr.warning{background:#ffd;color:#220;padding:2px;}.ok{color:#008000;}div.ok{border:1px solid #00aa00;}div.ok,tr.ok{background:#dfd;color:#020;padding:2px;}.item-list .icon{color:#555;float:right;
-  padding-left:0.25em;
-  clear:right;}.item-list .title{font-weight:bold;}.item-list ul{margin:0 0 0.75em 0;padding:0;}.item-list ul li{margin:0 0 0.25em 1.5em;
-  padding:0;list-style:disc;}ol.task-list li.active{font-weight:bold;}.form-item{margin-top:1em;margin-bottom:1em;}tr.odd .form-item,tr.even .form-item{margin-top:0;margin-bottom:0;white-space:nowrap;}tr.merge-down,tr.merge-down td,tr.merge-down th{border-bottom-width:0 !important;}tr.merge-up,tr.merge-up td,tr.merge-up th{border-top-width:0 !important;}.form-item input.error,.form-item textarea.error,.form-item select.error{border:2px solid red;}.form-item .description{font-size:0.85em;}.form-item label{display:block;font-weight:bold;}.form-item label.option{display:inline;font-weight:normal;}.form-checkboxes,.form-radios{margin:1em 0;}.form-checkboxes .form-item,.form-radios .form-item{margin-top:0.4em;margin-bottom:0.4em;}.marker,.form-required{color:#f00;}.more-link{text-align:right;}.more-help-link{font-size:0.85em;text-align:right;}.nowrap{white-space:nowrap;}.item-list .pager{clear:both;text-align:center;}.item-list .pager li{background-image:none;display:inline;list-style-type:none;padding:0.5em;}.pager-current{font-weight:bold;}.tips{margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0;font-size:0.9em;}dl.multiselect dd.b,dl.multiselect dd.b .form-item,dl.multiselect dd.b select{font-family:inherit;font-size:inherit;width:14em;}dl.multiselect dd.a,dl.multiselect dd.a .form-item{width:8em;}dl.multiselect dt,dl.multiselect dd{float:left;
-  line-height:1.75em;padding:0;margin:0 1em 0 0;}dl.multiselect .form-item{height:1.75em;margin:0;}
-.container-inline div,.container-inline label{display:inline;}
-ul.primary{border-collapse:collapse;padding:0 0 0 1em;
-  white-space:nowrap;list-style:none;margin:5px;height:auto;line-height:normal;border-bottom:1px solid #bbb;}ul.primary li{display:inline;}ul.primary li a{background-color:#ddd;border-color:#bbb;border-width:1px;border-style:solid solid none solid;height:auto;margin-right:0.5em;
-  padding:0 1em;text-decoration:none;}ul.primary li.active a{background-color:#fff;border:1px solid #bbb;border-bottom:#fff 1px solid;}ul.primary li a:hover{background-color:#eee;border-color:#ccc;border-bottom-color:#eee;}ul.secondary{border-bottom:1px solid #bbb;padding:0.5em 1em;margin:5px;}ul.secondary li{display:inline;padding:0 1em;border-right:1px solid #ccc;}ul.secondary a{padding:0;text-decoration:none;}ul.secondary a.active{border-bottom:4px solid #999;}
-
-#autocomplete{position:absolute;border:1px solid;overflow:hidden;z-index:100;}#autocomplete ul{margin:0;padding:0;list-style:none;}#autocomplete li{background:#fff;color:#000;white-space:pre;cursor:default;}#autocomplete li.selected{background:#0072b9;color:#fff;}
-html.js input.form-autocomplete{background-image:url(/misc/throbber.gif);background-repeat:no-repeat;background-position:100% 2px;}html.js input.throbbing{background-position:100% -18px;}
-html.js fieldset.collapsed{border-bottom-width:0;border-left-width:0;border-right-width:0;margin-bottom:0;height:1em;}html.js fieldset.collapsed *{display:none;}html.js fieldset.collapsed legend{display:block;}html.js fieldset.collapsible legend a{padding-left:15px;
-  background:url(/misc/menu-expanded.png) 5px 75% no-repeat;}html.js fieldset.collapsed legend a{background-image:url(/misc/menu-collapsed.png);
-  background-position:5px 50%;}
-* html.js fieldset.collapsed legend,* html.js fieldset.collapsed legend *,* html.js fieldset.collapsed table *{display:inline;}
-html.js fieldset.collapsible{position:relative;}html.js fieldset.collapsible legend a{display:block;}
-html.js fieldset.collapsible .fieldset-wrapper{overflow:auto;}
-.resizable-textarea{width:95%;}.resizable-textarea .grippie{height:9px;overflow:hidden;background:#eee url(/misc/grippie.png) no-repeat center 2px;border:1px solid #ddd;border-top-width:0;cursor:s-resize;}html.js .resizable-textarea textarea{margin-bottom:0;width:100%;display:block;}
-.draggable a.tabledrag-handle{cursor:move;float:left;
-  height:1.7em;margin:-0.4em 0 -0.4em -0.5em;
-  padding:0.42em 1.5em 0.42em 0.5em;
-  text-decoration:none;}a.tabledrag-handle:hover{text-decoration:none;}a.tabledrag-handle .handle{margin-top:4px;height:13px;width:13px;background:url(/misc/draggable.png) no-repeat 0 0;}a.tabledrag-handle-hover .handle{background-position:0 -20px;}
-.joined + .grippie{height:5px;background-position:center 1px;margin-bottom:-2px;}
-.teaser-checkbox{padding-top:1px;}div.teaser-button-wrapper{float:right;
-  padding-right:5%;
-  margin:0;}.teaser-checkbox div.form-item{float:right;
-  margin:0 5% 0 0;
-  padding:0;}textarea.teaser{display:none;}html.js .no-js{display:none;}
-.progress{font-weight:bold;}.progress .bar{background:#fff url(/misc/progress.gif);border:1px solid #00375a;height:1.5em;margin:0 0.2em;}.progress .filled{background:#0072b9;height:1em;border-bottom:0.5em solid #004a73;width:0%;}.progress .percentage{float:right;}.progress-disabled{float:left;}.ahah-progress{float:left;}.ahah-progress .throbber{width:15px;height:15px;margin:2px;background:transparent url(/misc/throbber.gif) no-repeat 0px -18px;float:left;}tr .ahah-progress .throbber{margin:0 2px;}.ahah-progress-bar{width:16em;}
-#first-time strong{display:block;padding:1.5em 0 .5em;}
-tr.selected td{background:#ffc;}
-table.sticky-header{margin-top:0;background:#fff;}
-#clean-url.install{display:none;}
-html.js .js-hide{display:none;}
-#system-modules div.incompatible{font-weight:bold;}
-#system-themes-form div.incompatible{font-weight:bold;}
-span.password-strength{visibility:hidden;}input.password-field{margin-right:10px;}div.password-description{padding:0 2px;margin:4px 0 0 0;font-size:0.85em;max-width:500px;}div.password-description ul{margin-bottom:0;}.password-parent{margin:0 0 0 0;}
-input.password-confirm{margin-right:10px;}.confirm-parent{margin:5px 0 0 0;}span.password-confirm{visibility:hidden;}span.password-confirm span{font-weight:normal;}
-
-ul.menu{list-style:none;border:none;text-align:left;}ul.menu li{margin:0 0 0 0.5em;}li.expanded{list-style-type:circle;list-style-image:url(/misc/menu-expanded.png);padding:0.2em 0.5em 0 0;
-  margin:0;}li.collapsed{list-style-type:disc;list-style-image:url(/misc/menu-collapsed.png);
-  padding:0.2em 0.5em 0 0;
-  margin:0;}li.leaf{list-style-type:square;list-style-image:url(/misc/menu-leaf.png);padding:0.2em 0.5em 0 0;
-  margin:0;}li a.active{color:#000;}td.menu-disabled{background:#ccc;}ul.links{margin:0;padding:0;}ul.links.inline{display:inline;}ul.links li{display:inline;list-style-type:none;padding:0 0.5em;}.block ul{margin:0;padding:0 0 0.25em 1em;}
-
-#permissions td.module{font-weight:bold;}#permissions td.permission{padding-left:1.5em;}#access-rules .access-type,#access-rules .rule-type{margin-right:1em;
-  float:left;}#access-rules .access-type .form-item,#access-rules .rule-type .form-item{margin-top:0;}#access-rules .mask{clear:both;}#user-login-form{text-align:center;}#user-admin-filter ul{list-style-type:none;padding:0;margin:0;width:100%;}#user-admin-buttons{float:left;
-  margin-left:0.5em;
-  clear:right;}#user-admin-settings fieldset .description{font-size:0.85em;padding-bottom:.5em;}
-.profile{clear:both;margin:1em 0;}.profile .picture{float:right;
-  margin:0 1em 1em 0;}.profile h3{border-bottom:1px solid #ccc;}.profile dl{margin:0 0 1.5em 0;}.profile dt{margin:0 0 0.2em 0;font-weight:bold;}.profile dd{margin:0 0 1em 0;}
-
-
-.field .field-label,.field .field-label-inline,.field .field-label-inline-first{font-weight:bold;}.field .field-label-inline,.field .field-label-inline-first{display:inline;}.field .field-label-inline{visibility:hidden;}
-.node-form .content-multiple-table td.content-multiple-drag{width:30px;padding-right:0;}.node-form .content-multiple-table td.content-multiple-drag a.tabledrag-handle{padding-right:.5em;}.node-form .content-add-more .form-submit{margin:0;}.content-multiple-remove-button{display:block;float:right;height:14px;width:16px;margin:2px 0 1px 0;padding:0;background:transparent url(/sites/all/modules/contrib/cck/images/remove.png) no-repeat 0 0;border-bottom:#C2C9CE 1px solid;border-right:#C2C9CE 1px solid;}.content-multiple-remove-button:hover{background-position:0 -14px;}.content-multiple-removed-row .content-multiple-remove-button{background-position:0 -28px;}.content-multiple-removed-row .content-multiple-remove-button:hover{background-position:0 -42px;}html.js .content-multiple-removed-row{background-color:#ffffcc;}.content-multiple-weight-header,.content-multiple-remove-header,.content-multiple-remove-cell,.content-multiple-table td.delta-order{text-align:center;}html.js .content-multiple-weight-header,html.js .content-multiple-remove-header span,html.js .content-multiple-table td.delta-order,html.js .content-multiple-remove-checkbox{display:none;}.node-form .number{display:inline;width:auto;}.node-form .text{width:auto;}
-.form-item #autocomplete .reference-autocomplete{white-space:normal;}.form-item #autocomplete .reference-autocomplete label{display:inline;font-weight:normal;}
-#content-field-overview-form .advanced-help-link,#content-display-overview-form .advanced-help-link{margin:4px 4px 0 0;}#content-field-overview-form .label-group,#content-display-overview-form .label-group,#content-copy-export-form .label-group{font-weight:bold;}table#content-field-overview .label-add-new-field,table#content-field-overview .label-add-existing-field,table#content-field-overview .label-add-new-group{float:left;}table#content-field-overview tr.content-add-new .tabledrag-changed{display:none;}table#content-field-overview tr.content-add-new .description{margin-bottom:0;}table#content-field-overview .content-new{font-weight:bold;padding-bottom:.5em;}
-.advanced-help-topic h3,.advanced-help-topic h4,.advanced-help-topic h5,.advanced-help-topic h6{margin:1em 0 .5em 0;}.advanced-help-topic dd{margin-bottom:.5em;}.advanced-help-topic span.code{background-color:#EDF1F3;font-family:"Bitstream Vera Sans Mono",Monaco,"Lucida Console",monospace;font-size:0.9em;padding:1px;}.advanced-help-topic .content-border{border:1px solid #AAA}
-.ctools-locked{color:red;border:1px solid red;padding:1em;}.ctools-owns-lock{background:#FFFFDD none repeat scroll 0 0;border:1px solid #F0C020;padding:1em;}a.ctools-ajaxing,input.ctools-ajaxing,select.ctools-ajaxing{padding-right:18px !important;background:url(/sites/all/modules/contrib/ctools/images/status-active.gif) right center no-repeat;}div.ctools-ajaxing{float:left;width:18px;background:url(/sites/all/modules/contrib/ctools/images/status-active.gif) center center no-repeat;}
-.container-inline-date{width:auto;clear:both;display:inline-block;vertical-align:top;margin-right:0.5em;}.container-inline-date .form-item{float:none;padding:0;margin:0;}.container-inline-date .form-item .form-item{float:left;}.container-inline-date .form-item,.container-inline-date .form-item input{width:auto;}.container-inline-date .description{clear:both;}.container-inline-date .form-item input,.container-inline-date .form-item select,.container-inline-date .form-item option{margin-right:5px;}.container-inline-date .date-spacer{margin-left:-5px;}.views-right-60 .container-inline-date div{padding:0;margin:0;}.container-inline-date .date-timezone .form-item{float:none;width:auto;clear:both;}
-#calendar_div,#calendar_div td,#calendar_div th{margin:0;padding:0;}#calendar_div,.calendar_control,.calendar_links,.calendar_header,.calendar{width:185px;border-collapse:separate;margin:0;}.calendar td{padding:0;}
-span.date-display-single{}span.date-display-start{}span.date-display-end{}span.date-display-separator{}.date-repeat-input{float:left;
-  width:auto;margin-right:5px;}.date-repeat-input select{min-width:7em;}.date-repeat fieldset{clear:both;float:none;}.date-views-filter-wrapper{min-width:250px;}.date-views-filter input{float:left !important;
-  margin-right:2px !important;
-  padding:0 !important;width:12em;min-width:12em;}.date-nav{width:100%;}.date-nav div.date-prev{text-align:left;
-  width:24%;float:left;}.date-nav div.date-next{text-align:right;
-  width:24%;float:right;}.date-nav div.date-heading{text-align:center;width:50%;float:left;}.date-nav div.date-heading h3{margin:0;padding:0;}.date-clear{float:none;clear:both;display:block;}.date-clear-block{float:none;width:auto;clear:both;} 	 
- .date-clear-block:after{content:" ";display:block;height:0;clear:both;visibility:hidden;}.date-clear-block{display:inline-block;}/* Hides from IE-mac \*/ 	 
- * html .date-clear-block{height:1%;}.date-clear-block{display:block;}
-
-.date-container .date-format-delete{margin-top:1.8em;margin-left:1.5em;float:left;}.date-container .date-format-name{float:left;}.date-container .date-format-type{float:left;padding-left:10px;}.date-container .select-container{clear:left;float:left;}
-div.date-calendar-day{line-height:1;width:40px;float:left;margin:6px 10px 0 0;background:#F3F3F3;border-top:1px solid #eee;border-left:1px solid #eee;border-right:1px solid #bbb;border-bottom:1px solid #bbb;color:#999;text-align:center;font-family:Georgia,Arial,Verdana,sans;}div.date-calendar-day span{display:block;text-align:center;}div.date-calendar-day span.month{font-size:.9em;background-color:#B5BEBE;color:white;padding:2px;text-transform:uppercase;}div.date-calendar-day span.day{font-weight:bold;font-size:2em;}div.date-calendar-day span.year{font-size:.9em;padding:2px;}
-#ui-datepicker-div table,#ui-datepicker-div td,#ui-datepicker-div th{margin:0;padding:0;}#ui-datepicker-div,#ui-datepicker-div table,.ui-datepicker-div,.ui-datepicker-div table,.ui-datepicker-inline,.ui-datepicker-inline table{font-size:12px !important;}.ui-datepicker-div,.ui-datepicker-inline,#ui-datepicker-div{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;background:#ffffff;border:2px solid #d3d3d3;font-family:Verdana,Arial,sans-serif;font-size:1.1em;margin:0;padding:2.5em .5em .5em .5em;position:relative;width:15.5em;}#ui-datepicker-div{background:#ffffff;display:none;z-index:9999;}.ui-datepicker-inline{display:block;float:left;}.ui-datepicker-control{display:none;}.ui-datepicker-current{display:none;}.ui-datepicker-next,.ui-datepicker-prev{background:#e6e6e6 url(/sites/all/modules/contrib/date/date_popup/themes/images/e6e6e6_40x100_textures_02_glass_75.png) 0 50% repeat-x;
-  left:.5em;
-  position:absolute;top:.5em;}.ui-datepicker-next{left:14.6em;}.ui-datepicker-next:hover,.ui-datepicker-prev:hover{background:#dadada url(/sites/all/modules/contrib/date/date_popup/themes/images/dadada_40x100_textures_02_glass_75.png) 0 50% repeat-x;}.ui-datepicker-next a,.ui-datepicker-prev a{background:url(/sites/all/modules/contrib/date/date_popup/themes/images/888888_7x7_arrow_left.gif) 50% 50% no-repeat;
-  border:1px solid #d3d3d3;cursor:pointer;display:block;font-size:1em;height:1.4em;text-indent:-999999px;width:1.3em;}.ui-datepicker-next a{background:url(/sites/all/modules/contrib/date/date_popup/themes/images/888888_7x7_arrow_right.gif) 50% 50% no-repeat;}.ui-datepicker-prev a:hover{background:url(/sites/all/modules/contrib/date/date_popup/themes/images/454545_7x7_arrow_left.gif) 50% 50% no-repeat;}.ui-datepicker-next a:hover{background:url(/sites/all/modules/contrib/date/date_popup/themes/images/454545_7x7_arrow_right.gif) 50% 50% no-repeat;}.ui-datepicker-prev a:active{background:url(/sites/all/modules/contrib/date/date_popup/themes/images/222222_7x7_arrow_left.gif) 50% 50% no-repeat;}.ui-datepicker-next a:active{background:url(/sites/all/modules/contrib/date/date_popup/themes/images/222222_7x7_arrow_right.gif) 50% 50% no-repeat;}.ui-datepicker-header select{background:#e6e6e6;border:1px solid #d3d3d3;color:#555555;font-size:1em;line-height:1.4em;margin:0 !important;padding:0 !important;position:absolute;top:.5em;}.ui-datepicker-header select.ui-datepicker-new-month{left:2.2em;
-  width:7em;}.ui-datepicker-header select.ui-datepicker-new-year{left:9.4em;
-  width:5em;}table.ui-datepicker{text-align:right;
-  width:15.5em;}table.ui-datepicker td a{color:#555555;display:block;padding:.1em .3em .1em 0;
-  text-decoration:none;}table.ui-datepicker tbody{border-top:none;}table.ui-datepicker tbody td a{background:#e6e6e6 url(/sites/all/modules/contrib/date/date_popup/themes/images/e6e6e6_40x100_textures_02_glass_75.png) 0 50% repeat-x;
-  border:1px solid #ffffff;cursor:pointer;}table.ui-datepicker tbody td a:hover{background:#dadada url(/sites/all/modules/contrib/date/date_popup/themes/images/dadada_40x100_textures_02_glass_75.png) 0 50% repeat-x;
-  border:1px solid #999999;color:#212121;}table.ui-datepicker tbody td a:active{background:#ffffff url(/sites/all/modules/contrib/date/date_popup/themes/images/ffffff_40x100_textures_02_glass_65.png) 0 50% repeat-x;
-  border:1px solid #dddddd;color:#222222;}table.ui-datepicker .ui-datepicker-title-row td{
-  color:#222222;font-size:.9em;padding:.3em 0;text-align:center;text-transform:uppercase;}table.ui-datepicker .ui-datepicker-title-row td a{color:#222222;}
-
-
-
-
-
-
-.filefield-icon{float:left;
-  margin-right:0.4em;}
-
-
-.filefield-element{margin:1em 0;white-space:normal;}.filefield-element .widget-preview{float:left;
-  padding-right:10px;
-  border-right:1px solid #CCC;
-  margin-right:10px;
-  max-width:30%;}.filefield-element .widget-edit{float:left;
-  max-width:70%;}.filefield-element .filefield-preview{width:16em;overflow:hidden;}.filefield-element .widget-edit .form-item{margin:0 0 1em 0;}.filefield-element input.form-submit,.filefield-element input.form-file{margin:0;}.filefield-element input.progress-disabled{float:none;display:inline;}.filefield-element div.ahah-progress,.filefield-element div.throbber{display:inline;float:none;padding:1px 13px 2px 3px;}.filefield-element div.ahah-progress-bar{display:none;margin-top:4px;width:28em;padding:0;}.filefield-element div.ahah-progress-bar div.bar{margin:0;}
-
-
-
-.filefield-generic-edit .filefield-icon{float:left;
-  margin-right:0.7em;
-  margin-top:0.3em;}.filefield-generic-edit-description{margin-right:6em;}
-.filefield-generic-edit .form-text{width:99%;}.filefield-generic-edit .description{white-space:normal;margin-bottom:0;overflow:auto;}
-
-form.fivestar-widget{clear:both;display:block;}form.fivestar-widget select,form.fivestar-widget input{margin:0;}
-.fivestar-combo-stars .fivestar-static-form-item{float:left;
-  margin-right:40px;}.fivestar-combo-stars .fivestar-form-item{float:left;}
-.fivestar-static-form-item .form-item,.fivestar-form-item .form-item{margin:0;}
-div.fivestar-widget-static{display:block;}div.fivestar-widget-static br{clear:left;}div.fivestar-widget-static .star{float:left;
-  width:17px;height:15px;overflow:hidden;text-indent:-999em;background:url(/sites/all/modules/contrib/fivestar/widgets/default/star.gif) no-repeat 0 0;}div.fivestar-widget-static .star span.on{display:block;width:100%;height:100%;background:url(/sites/all/modules/contrib/fivestar/widgets/default/star.gif) no-repeat 0 -32px;}div.fivestar-widget-static .star span.off{display:block;width:100%;height:100%;background:url(/sites/all/modules/contrib/fivestar/widgets/default/star.gif) no-repeat 0 0;}
-div.fivestar-widget{display:block;}div.fivestar-widget .cancel,div.fivestar-widget .star{float:left;
-  width:17px;height:15px;overflow:hidden;text-indent:-999em;}div.fivestar-widget .cancel,div.fivestar-widget .cancel a{background:url(/sites/all/modules/contrib/fivestar/widgets/default/delete.gif) no-repeat 0 -16px;
-  text-decoration:none;}div.fivestar-widget .star,div.fivestar-widget .star a{background:url(/sites/all/modules/contrib/fivestar/widgets/default/star.gif) no-repeat 0 0;
-  text-decoration:none;}div.fivestar-widget .cancel a,div.fivestar-widget .star a{display:block;width:100%;height:100%;background-position:0 0;
-  cursor:pointer;}div.fivestar-widget div.on a{background-position:0 -16px;}div.fivestar-widget div.hover a,div.rating div a:hover{background-position:0 -32px;}form.fivestar-widget div.description{margin-bottom:0;}
-
-.simplenews-subscription-filter .form-item{clear:both;line-height:1.75em;margin:0pt 1em 0pt 0pt;}.simplenews-subscription-filter .form-item label{float:left;width:12em;}.simplenews-subscription-filter .spacer{margin-left:12em;}.simplenews-subscription-filter .form-select,.simplenews-subscription-filter .form-text{width:14em;}.block-simplenews .issues-link,.block-simplenews .issues-list{margin-top:1em;}.block-simplenews .issues-list .newsletter-created{display:none;}
-
-
-.wrapper.tagadelic{text-align:justify;margin-right:1em;}.tagadelic.level1{font-size:1em;}.tagadelic.level2{font-size:1.2em;}.tagadelic.level3{font-size:1.4em;}.tagadelic.level4{font-size:1.6em;}.tagadelic.level5{font-size:1.8em;}.tagadelic.level6{font-size:2em;}.tagadelic.level7{font-size:2.2em;}.tagadelic.level8{font-size:2.4em;}.tagadelic.level9{font-size:2.6em;}.tagadelic.level10{font-size:2.8em;}
-div.field-type-asin{display:block;clear:both;border-top:2px solid #DDD;padding-top:3px;}div.amazon-item{clear:both;}div.amazon-item img{float:left;padding-left:3px;margin-bottom:1em;margin-right:1em;}div.amazon-item div{padding-left:1em;margin-left:100px;height:4em;}
-#edit-antidot-search-block-form-1-wrapper{display:inline;}
-#form_submit_search{}#edit-keys-wrapper{float:left;margin:0 3px 0 0;padding:0;}.result .tagged{background-color:none;}#edit-keys{height:20px;}#submit_resultat_page{flao:left;}#fc_antidot_recherche_check_emission-wrapper label{color:#032649;font-size:11px;font-weight:bold;margin:5px 0 0 5px;}.pager span.pager-next{margin-left:3px;}#edit-keys-wrapper{position:relative;overflow:hidden;}
-#SuggestPopupBox,#SuggestPopupPage{background-color:white;border:1px solid #999999;z-index:500;position:absolute;}#SuggestPopupBox{
-top:49px;left:362px;width:200px;}#SuggestPopupPage{
-width:279px;top:26px;left:0;position:absolute;z-index:550;}#SuggestPopupBox .suj-reponse,#SuggestPopupPage .suj-reponse{
-padding:2px 0 2px 10px;font-weight:bold;background-color:white;cursor:pointer;height:21px;}#SuggestPopupBox .suj-reponse:hover,#SuggestPopupPage .suj-reponse:hover{background-color:#DECFE2;}#SuggestPopupBox .active,#SuggestPopupPage .active{background-color:#DECFE2;}#fc-antidot-recherche-form .form-item{height:35px;overflow:visible;}#share,#share .addthis_toolbox addthis_default_style,#share .addthis_toolbox addthis_default_style a,#main{z-index:0;position:relative;overflow:visible;}.more{z-index:0;position:relative;overflow:hiddent;}
-a.lien-radio{float:left;height:30px;width:38px;}a.autres_sites{color:#666666;display:block;text-align:right;margin-top:5px;}p.ligne-autre-site{margin-left:48px;margin-bottom:0px;}#resultats_crawl li{min-height:36px;}#fc_antidot_recherche_check_emission-wrapper{z-index:0;overflow:visible;position:relative;}
-div.grille-programmes li{list-style:none;}div.grille-programmes .clearer{clear:both;}
-div.grilles-programmes div.entete{}
-div.grille-programmes div.navigation{padding:1em;background-color:#EEE;}div.grille-programmes div.navigation li{display:inline;}
-div.grilles-programmes div.tranches{margin:1em 0;}
-div.grille-programmes div.emissions{padding:1em 0;}div.grille-programmes div.emission{padding:1em;margin:1em 0;border:1px solid #CCC;}div.grille-programmes div.emission img.image-liste{float:right;margin:0 0 1em 1em;}
-div.grille-programmes div.diffusion{padding:1em;margin:1em 0;border:1px solid #CCC;background-color:#EEE;}
-div.grille-programmes div.tranche{border:1px dashed #ccc;background-color:#EEE;}
-
-
-#quiz_progress{font-style:italic;font-size:80%;}span.multichoice_answer_text p{display:inline;}
-.quiz_question_bullet{font-weight:bold;font-size:120%;}#quiz_score_possible,#quiz_score_percent{font-weight:bold;}.quiz_summary_question{margin-bottom:0.5em;}tr.quiz_summary_qrow{background:transparent;}td.quiz_summary_qcell{vertical-align:top;padding:1em 1em 0em 0em;}td.quiz_summary_qcell table tr{background:transparent;}td.quiz_summary_qcell table td{vertical-align:top;padding:.5em;}.quiz_answer_feedback{font-style:italic;}.quiz_summary_header{font-weight:bold;}.quiz_summary_text{}div.multichoice_answer_correct{padding:5px;border:1px solid green;}div.multichoice_answer_incorrect{padding:5px;border:1px solid red;}.add-questions{background:transparent url(/sites/all/modules/rf/quiz/images/add.png) no-repeat scroll 0% 10%;padding:0 0 1em 2em;}
-div.panel-navigation ul.menu{display:inline;padding:0 1em 0 0;line-height:2.5em;}div.panel-navigation ul.menu li{display:inline;font-size:1.0em;list-style-type:none;background:#efefef;border:1px solid #aaa;margin:0;padding:4px 8px;}div.panel-navigation ul.menu li{font-weight:bold;}
-div.emission-navigation ul.menu{display:inline;padding:0 1em 0 0;line-height:2.5em;}div.emission-navigation ul.menu li{display:inline;font-size:1.0em;list-style-type:none;background:#efefef;border:1px solid #aaa;margin:0;padding:4px 8px;}div.emission-navigation ul.menu li{font-weight:bold;}
-
-div.fieldgroup{margin:.5em 0 1em 0;}div.fieldgroup .content{padding-left:1em;}
-
-div.panel-pane div.admin-links{font-size:xx-small;margin-right:1em;}div.panel-pane div.admin-links li a{color:#ccc;}div.panel-pane div.admin-links li{padding-bottom:2px;background:white;z-index:201;}div.panel-pane div.admin-links:hover a,div.panel-pane div.admin-links-hover a{color:#000;}div.panel-pane div.admin-links a:before{content:"[";}div.panel-pane div.admin-links a:after{content:"]";}div.panel-pane div.panel-hide{display:none;}
-div.panel-pane div.panel-hide-hover,div.panel-pane:hover div.panel-hide{display:block;position:absolute;z-index:200;margin-top:-1.5em;}div.panel-pane div.node{margin:0;padding:0;}div.panel-pane div.feed a{float:right;}
-.views-exposed-form .views-exposed-widget{float:left;
-  padding:.5em 1em 0 0;}.views-exposed-form .views-exposed-widget .form-submit{margin-top:1.6em;}.views-exposed-form .form-item,.views-exposed-form .form-submit{margin-top:0;margin-bottom:0;}.views-exposed-form label{font-weight:bold;}.views-exposed-widgets{margin-bottom:.5em;}html.js a.views-throbbing,html.js span.views-throbbing{background:url(/sites/all/modules/contrib/views/images/status-active.gif) no-repeat right center;padding-right:18px;}
-
-div.view div.views-admin-links{font-size:xx-small;margin-right:1em;margin-top:1em;}.block div.view div.views-admin-links{margin-top:0;}div.view div.views-admin-links ul{padding-left:0;}div.view div.views-admin-links li a{color:#ccc;}div.view div.views-admin-links li{padding-bottom:2px;z-index:201;}div.view div.views-admin-links-hover a,div.view div.views-admin-links:hover a{color:#000;}div.view div.views-admin-links-hover,div.view div.views-admin-links:hover{background:transparent;;}div.view div.views-admin-links a:before{content:"[";}div.view div.views-admin-links a:after{content:"]";}div.view div.views-hide{display:none;}
-div.view div.views-hide-hover,div.view:hover div.views-hide{display:block;position:absolute;z-index:200;}
-div.view:hover div.views-hide{margin-top:-1.5em;}
-.views-view-grid tbody{border-top:none;}
-
-#popups-overlay{position:absolute;z-index:8;background:black;top:0;}#popups-loading{position:absolute;z-index:10;opacity:0.75;width:100px;height:100px;display:none;}.popups-box{position:absolute;z-index:9;background:white;border:1px solid black;padding:0.5em;width:600px;overflow:auto;}.popups-title{font-weight:bold;margin-bottom:0.25em;}.popups-title div.title{float:left;}.popups-title .popups-close{float:right;}.popups-title .popups-close a{font-weight:normal;}
-.popups-box div.messages{background:transparent;border:none;padding:0;margin:0;}
-#popups-overlay{background:#773584;opacity:.80;}.popups-box{padding:0;border:10px #EBEBEB solid;-moz-border-radius:10px;-webkit-border-radius:10px;}.popups-inner{height:100%;}.popups-box{width:440px;z-index:600;}body.page-node-edit .popups-box,body.section-admin .popups-box,body.page-node-add .popups-box,body.section-tableau-de-bord .popups-box{width:700px;}.popups-title{background:#EBEBEB url(/sites/all/themes/franceculture/images/titre-barre.gif) repeat-x 0 2px;color:#773584;font-weight:bold;font-size:13px;padding:0 0 5px 0;text-align:center;}.popups-title .title,.popups-title .popups-close{display:inline;background:#EBEBEB;padding:0 5px;}.popups-title .popups-close a{display:block;width:9px;text-indent:-9999999px;outline:none;cursor:pointer;background:transparent url(/sites/all/themes/franceculture/images/popups-close.png) no-repeat center right;margin-right:5px;}.popups-title div.title{float:none;}.popups-title .popups-close{padding-right:0;}.popups-body{background:white;padding:5px 10px;overflow:auto;height:auto;}
-
-label.content-multigroup{font-weight:bold;}
-hr.content-multigroup{}
-.content-multigroup-wrapper .field .field-label-inline{visibility:visible;}
-.content-multigroup-edit-table-multiple-columns label,.content-multigroup-edit-table-multiple-columns .description{display:none;}
-.content-multigroup-display-table-multiple-columns .field .field-label,.content-multigroup-display-table-multiple-columns .field .field-label-inline,.content-multigroup-display-table-multiple-columns .field .field-label-inline-first{display:none;}
-.content-multigroup-display-table-single-column .content-multigroup-wrapper{clear:both;}.content-multigroup-display-table-single-column .content-multigroup-wrapper label.content-multigroup{display:block;}.content-multigroup-display-table-single-column .content-multigroup-wrapper .field{float:left;margin-right:1em;}
-
-.indented{margin-left:25px;}.comment-unpublished{background-color:#fff4f4;}.preview .comment{background-color:#ffffea;}
-
-
-html{font-size:75%;}body{line-height:1.5;}h1{font-size:2em;margin:0 0 .5em;padding:0;}h2{font-size:1.5em;}h3{font-size:1.25em;}h4{font-size:1.17em;}h5,h6{font-size:1em;}h1,h2,h3,h4,h5,h6,h1 img,h2 img,h3 img,h4 img,h5 img,h6 img,em,dfn,del,ins{margin:0;padding:0;}p{margin:0 0 1.5em;padding:0;}blockquote p{margin:0;}strong{font-weight:bold;}em,dfn{font-style:italic;}dfn{font-weight:bold;}del{color:#666;}ins{border-bottom:none;text-decoration:none;}pre,code,tt,samp,kbd,var{font:1em "Lucida Console",Monaco,"DejaVu Sans Mono",monospace;}blockquote,q{font-style:italic;quotes:"" "";}blockquote{margin:0 0 1.5em;padding:0 0 0 3em;}blockquote:before,blockquote:after,q:before,q:after{content:"";}table{border-color:#C0C0C0;border-spacing:0;margin:1em 0;padding:0;}caption,th,td{text-align:left;}caption,th{font-weight:bold;}table,td,th{vertical-align:middle;}tbody,tfoot,thead,tr{margin:0;padding:0;}thead th{border-bottom:.1875em solid #C0C0C0;color:#494949;font-weight:bold;}td,th{border-bottom:1px solid #CCC;margin:0;padding:.375em .5em;}tr.odd,tr.info{background-color:#F5F5F5;}tr.even{background-color:#FFF;}tr.drag{background-color:#FFFFF0;}tr.drag-previous{background-color:#FFD;}tr.odd td.active{background-color:#EEE;}tr.even td.active{background-color:#F7F7F7;}td.region,td.module,td.container td.category{background-color:#EEE;border-bottom:1px solid #CCC;border-top:1.5em solid #FFF;color:#222;font-weight:bold;}tr:first-child td.region,tr:first-child td.module,tr:first-child td.container{border-top-width:0;}#forum table{width:100%;}#forum tr td.forum{background-position:5px 5px!important;padding-left:1.67em;}#forum tr td.forum .name{padding-left:.375em;}#forum div.indent{margin-left:.5em;}.section-admin table{width:100%;}.description{color:#555;}div.messages{font-weight:normal;margin:1em 0;}div.messages ul{margin:0 0 0 1.25em;}div.error{background:#FFF3F6 url(/sites/all/themes/franceculture/images/error.png) no-repeat .5em .45em;border:1px solid #C00000;color:#C00000;}tr.error{background:#FFEFF3;color:#E41F0B;}div.notice{background:#FFF6BF;color:#514721;border-color:#FFD324;}.error a,.notice a,.success a{text-decoration:underline;}div.status{background:#F1FFCF url(/sites/all/themes/franceculture/images/ok.png) no-repeat .75em .6em;border:1px solid #4DA449;color:#2A6827;}div.help{background:#F7F8F8 url(/sites/all/themes/franceculture/images/info.png) no-repeat .5em .45em;border:1px solid #66BEF4;color:#000D2F;margin:1em 0;}div.warning{background:#FFF6DF url(/sites/all/themes/franceculture/images/warning.png) no-repeat .5em .45em;border:1px solid #FFB900;color:#9F3800;}div.messages,div.warning,div.help,div.status,div.error{padding:.6em 1em .6em 3em;}div.help code,div.messages code{font-weight:bold;}
-#saving{font-size:1em;font-weight:bold;background:url(/sites/all/themes/franceculture/images/loading.gif) no-repeat 12px 1px;display:none;padding-left:36px;}#saving p{margin:0;}#saving-notice{font-size:0.9em;font-style:italic;background:#FFC;}table tr.warning{background-color:#F7E8C5;}table tr.warning td{color:#9F3800;}table tr.warning.merge-up td{color:#514721;}div.ok,tr.ok,table tr.ok td{color:#222;padding:1em .5em;}.update tr.ok{background:#F1FFCF;}.update tr.error{background:#FFEFF3;}.update tr.warning{background:#FFF6DF;}.update tr.error .version-recommended{background:#FFEFF4;}.update .info{padding:0 0 0 1em;}.includes{color:#222;}div.help p:last-child,div.help ul:last-child{margin-bottom:0;}.form-item input.error,.form-item textarea.error,.form-item select.error{border:2px solid #C00000;}.form-item strong.error em{font-weight:bold;color:#E41F0B;font-size:1.2em;}.block-region{border:1px dotted #000;color:#000;font:1.25em "Lucida Console",Monaco,"DejaVu Sans Mono",monospace;padding:3px 6px 1px;}.node-unpublished,.comment-unpublished{background-color:#FFF6DF;}.unpublished{visibility:hidden;}.node-unpublished .unpublished,.comment-unpublished .unpublished{background:transparent url(/sites/all/themes/franceculture/images/warning-small.png) no-repeat 0 .1em;color:#FFB900;font-size:.94em;margin-left:.5em;padding-left:18px;visibility:visible;}.admin-dependencies,.admin-required,.admin-enabled,.admin-disabled,.admin-missing{font-weight:bold;}ul,ol{margin:0 0 1.5em 1.75em;padding:0;}li{margin:0;padding:0;}ul ul,ul ol,ol ol,ol ul,.block ul ul,.block ul ol,.block ol ol,.block ol ul,.item-list ul ul,.item-list ul ol,.item-list ol ol,.item-list ol ul{margin:0 0 0 1.75em;}ul{list-style-type:disc;}ul ul{list-style-type:circle;}ul ul ul{list-style-type:square;}ul ul ul ul{list-style-type:circle;}ol{list-style-type:decimal;}ol ol{list-style-type:lower-alpha;}ol ol ol{list-style-type:lower-roman;}dt{font-weight:bold;}dd{margin:0 0 1.5em 1.75em;}.item-list ul,.item-list ol{margin:0 0 0 1.75em;padding:0;}form{margin:0 0 1.5em;padding:0;}
-input.text,input.title,textarea,select{border:1px solid #C0C0C0;margin:.375em 0;}
-
-input.text,input.title{padding:.375em;}input.title{font-size:1.5em;}input.form-text,textarea{border:1px solid #CCC;height:auto;padding:.1875em;}
-div.form-item{margin-bottom:1em;margin-top:1em;}.form-item textarea.error{padding:.1875em;}.form-item .description{font-size:.9em;line-height:1.667em;}span.form-required,span.marker{color:#8A1F11;}div.form-item div.description img{margin:0;}#node-admin-filter ul{padding:.375em 0;}#edit-operation-wrapper select{margin:.375em;}div.resizable-textarea textarea{margin-top:0;}.tips{font-size:1em;margin-left:3em;padding:.1875em .375em .1875em 1.5em;}label,legend{margin:0;padding:0;}fieldset{background:transparent;border:1px solid #dadada;margin:1.5em 0;padding:.75em;}*:first-child+html fieldset{background-color:transparent;background-position:0 .75em;padding:0 1em .75em;}*:first-child+html fieldset > .description,*:first-child+html fieldset .fieldset-wrapper .description{padding-top:1.5em;}fieldset legend{display:block;font-weight:bold;padding:0 1em 0 0;}*:first-child+html fieldset legend,*:first-child+html fieldset.collapsed legend{display:inline;}html.js fieldset.collapsed{background:transparent;padding-bottom:.75em;padding-top:0;}#user-login-form li.openid-link,#user-login-form li.user-link{text-align:center;}html.js #user-login-form li.openid-link,html.js #user-login li.openid-link{list-style:none;}#user-login-form ul{margin-top:0;}#user-login ul{margin:0 0 5px;}#user-login ul li{margin:0;}#user-login-form li.openid-link,#user-login li.openid-link{background:none;}#user-login-form li.openid-link a,#user-login li.openid-link a{background:transparent url(/sites/all/themes/franceculture/images/openid.png) no-repeat 0 0;padding:0 20px;}#user-login-form .item-list li{list-style:none;}div.admin-panel{border:1px solid #DDD;margin:0 0 .75em;padding:0;}div.admin .left,div.admin .right{margin-left:0;margin-right:0;width:49%;}.admin-panel h3{background:#EEE;color:#222;padding:0 0 0 .5em;}.admin-panel .body{padding:0 1em;}.admin-panel p{margin:0;padding:1em 0 0;}.admin-panel ul,.admin-panel ul.menu,.admin-panel .item-list ul{padding:0 0 1em;}.admin-panel .item-list ul{margin:0;}.admin-panel ul li{color:#555;}.admin-panel dl{margin:0;padding:1em 0;}.admin-panel dt{font-weight:normal;}.admin-panel dd{color:#555;font-size:.94em;margin-left:0;}.admin .compact-link{margin:0 0 1em;}.page-admin-by-module .admin-panel .body{margin:0;}.page-admin-by-module .admin-panel .body p{color:#555;font-size:.94em;}#user-admin-filter ul li,#node-admin-filter ul li{list-style:none;}.more-help-link{font-size:.94em;line-height:1.667em;}#permissions td.permission{padding-left:.5em;}#permissions td.module{background:#EEE;color:#222;font-weight:bold;}tr .block{border:0;}.local-tasks{margin-bottom:1em;}ul.primary{border-bottom-color:#CCC;margin:1.5em 0 0;padding:0 0 .2em .3em;}ul.primary li a{background-color:#F5F5F5;border-color:#CCC;margin-right:.08em;padding:.1em .75em .2em;}.local-tasks ul.primary li a:hover{background-color:#F7F7F7;border-color:#DDD;color:#C1272D}.local-tasks ul.primary li.active a{background-color:#FFF;border-bottom-color:#FFF;}ul.secondary{border-bottom:1px solid #CCC;margin:1em 0 0 0;padding:0 .3em 1em;}ul.secondary li{border-right:0;list-style:none;padding:0 2em 0 0;}ul.secondary li a:hover,ul.secondary li a.active{border-bottom:none;text-decoration:underline;}body.admin-menu{margin-top:2em !important;}#admin-menu{font:0.9em Arial,Helvetica,sans-serif;}#admin-menu ul li a:focus{color:#000;border:0;background:#FFFF00;}
-#genesis-1a .two-sidebars .content-inner{margin:0 22em;}#genesis-1a .sidebar-left .content-inner{margin-left:22em;}#genesis-1a .sidebar-right .content-inner{margin-right:22em;}#genesis-1a #sidebar-left{width:20em;margin-left:-100%;}#genesis-1a #sidebar-right{width:20em;margin-left:-20em;}#genesis-1b .two-sidebars .content-inner{margin:0 25.25%;}#genesis-1b .sidebar-left .content-inner{margin-left:25.25%;}#genesis-1b .sidebar-right .content-inner{margin-right:25.25%;}#genesis-1b #sidebar-left{width:24.25%;margin-left:-100%;}#genesis-1b #sidebar-right{width:24.25%;margin-left:-24.25%;}#genesis-1c .two-sidebars .content-inner{margin:0 260px;}#genesis-1c .sidebar-left .content-inner{margin-left:260px;}#genesis-1c .sidebar-right .content-inner{margin-right:260px;}#genesis-1c #sidebar-left{width:240px;margin-left:-100%;}#genesis-1c #sidebar-right{width:240px;margin-left:-240px;}#genesis-2a .two-sidebars .content-inner{margin-right:44em;}#genesis-2a .sidebar-left .content-inner{margin-right:22em;}#genesis-2a .sidebar-right .content-inner{margin-right:22em;}#genesis-2a #sidebar-left{width:20em;margin-left:-42em;}#genesis-2a #sidebar-right{width:20em;margin-left:-20em;}#genesis-2a .sidebar-left #sidebar-left{width:20em;margin-left:-20em;}#genesis-2b .two-sidebars .content-inner{margin-right:50.5%;}#genesis-2b .sidebar-left .content-inner{margin-right:25.25%;}#genesis-2b .sidebar-right .content-inner{margin-right:25.25%;}#genesis-2b #sidebar-left{width:24.25%;margin-left:-49.5%;}#genesis-2b #sidebar-right{width:24.25%;margin-left:-24.25%;}#genesis-2b .sidebar-left #sidebar-left{width:24.25%;margin-left:-24.25%;}#genesis-2c .two-sidebars .content-inner{margin-right:520px;}#genesis-2c .sidebar-left .content-inner{margin-right:260px;}#genesis-2c .sidebar-right .content-inner{margin-right:260px;}#genesis-2c #sidebar-left{width:240px;margin-left:-500px;}#genesis-2c #sidebar-right{width:240px;margin-left:-240px;}#genesis-2c .sidebar-left #sidebar-left{width:240px;margin-left:-240px;}#genesis-3a .two-sidebars .content-inner{margin-left:44em;}#genesis-3a .sidebar-left .content-inner{margin-left:22em;}#genesis-3a .sidebar-right .content-inner{margin-left:22em;}#genesis-3a #sidebar-left{width:20em;margin-left:-100%;}#genesis-3a #sidebar-right{width:20em;margin-left:-100%;}#genesis-3a .two-sidebars #sidebar-right{width:20em;position:relative;left:22em;}#genesis-3b .two-sidebars .content-inner{margin-left:50.5%;}#genesis-3b .sidebar-left .content-inner{margin-left:25.25%;}#genesis-3b .sidebar-right .content-inner{margin-left:25.25%;}#genesis-3b #sidebar-left{width:24.25%;margin-left:-100%;}#genesis-3b #sidebar-right{width:24.25%;margin-left:-100%;}#genesis-3b .two-sidebars #sidebar-right{width:24.25%;position:relative;left:25.25%;}#genesis-3c .two-sidebars .content-inner{margin-left:520px;}#genesis-3c .sidebar-left .content-inner{margin-left:260px;}#genesis-3c .sidebar-right .content-inner{margin-left:260px;}#genesis-3c #sidebar-left{width:240px;margin-left:-100%;}#genesis-3c #sidebar-right{width:240px;margin-left:-100%;}#genesis-3c .two-sidebars #sidebar-right{width:240px;position:relative;left:260px;}#genesis-4 .two-sidebars .content-inner{margin-right:40%;}#genesis-4 .sidebar-left .content-inner{margin-right:40%;}#genesis-4 .sidebar-right .content-inner{margin-right:40%;}#genesis-4 #sidebar-left{width:37%;margin-left:-37%;}#genesis-4 #sidebar-right{width:37%;margin-left:-37%;}#genesis-4 .sidebar-left #sidebar-left{width:37%;margin-left:-37%;}.gpanel{clear:both;margin:.75em 0;}.gpanel .region{display:inline;position:relative;}.two-col-50 .region{width:49.5%;}.two-col-50 .col-1{float:left;}.two-col-50 .col-2{float:right;}.two-col-50 .gpanel{margin:0;}#two-col-50-nested .col-2{width:48.5%;}.col-1 #two-col-50-nested .region,.col-2 #two-col-50-nested .col-2{width:49%;}.three-col-33 .region{float:left;width:32%;}.three-col-33 .col-2{right:-1%;width:34%;}.three-col-33 .col-3{right:-2%;}.four-col-25 .section-1{float:left;width:49.5%;}.four-col-25 .section-2{float:right;width:49.5%;}.four-col-25 .col-1,.four-col-25 .col-3{float:left;width:49%;}.four-col-25 .col-2,.four-col-25 .col-4{float:right;width:49%;}.gpanel .region .inner{margin:0;}.gpanel .last .inner{margin-right:0;}#container{position:relative;margin:0 auto;}#columns{display:inline-block;margin-bottom:1em;}#container > #columns{display:block;}#content-column,#sidebar-left,#sidebar-right{float:left;}#content-column{width:100%;margin-bottom:1em;}.clear,#nav,#columns,#breadcrumb,#content-bottom,#secondary-content,#tertiary-content,#footer-wrapper,#footer,#footer-message{clear:both;}
-div.block{position:relative;}div.block div.block-edit{font-size:.9em;position:absolute;right:0;top:0;visibility:hidden;z-index:40;}div.block:hover div.block-edit{display:block;font-family:Arial,Helvetica,"Nimbus Sans",sans-serif;visibility:visible;}div.block div.block-edit a{text-decoration:none;color:#ccc;}div.block div.block-edit a:before{content:"[";}div.block div.block-edit a:after{content:"]";}div.block div.block-edit a:hover{color:#000;background:#FFF;}div.block div.block-edit li{display:inline;float:left;list-style:none;margin:0 0 0 .5em;}div.view div.views-admin-links{font-size:.85em;}.block div.view div.views-admin-links{margin-top:1.8em;}#main-content div.view div.views-admin-links{margin-top:-.8em;}div.view div.views-admin-links li a{text-decoration:none;width:5em;}div.view div.views-admin-links li a:hover{color:#000;background:#FFF;}div.view div.views-admin-links-hover a,div.view div.views-admin-links:hover a{color:#CCC;}
-
-li.leaf{list-style:none outside none !important;padding:0 !important;}.item-list ul,.item-list ol{margin:0;padding:0;}.item-list ul li{list-style:none;margin:0;padding:0;}#header form{margin:0;}div.views-cloud{line-height:1.2;}div.views-cloud span{margin:2px 5px;}div.views-cloud div{white-space:normal;}div.views-cloud span.views-cloud-size-3 a,div.views-cloud span.views-cloud-size-4 a{color:#262626;}.comments-count{font-style:italic;}.comments-count,.theme2,.type{font-size:11px;display:inline;margin:0 3px 0 0;}#comments .post img{float:left;margin:0 10px 0 0;}#comment-form label{color:#000000;font-size:14px;margin:0 0 5px;}div.ctools-modal-content textarea#edit-body{width:500px;height:400px;}#sidebar-right .block ul{padding:0 0 0.25em 0;}ul.primary li a{background-color:#DECFE2;}
-
-#acces-rapide{display:none;}.back-to-top{display:none;}
-    body{color:#4D4D4D;font-size:12px;line-height:17px;font-family:'Arial','FreeSans';}img{border:none;}a{text-decoration:none;color:#032649;font-weight:bold;}a:hover{text-decoration:underline;}a img,a:hover img{text-decoration:none;}a.ext{text-decoration:underline;}p{margin:0 0 5px 0;}ul{padding:0;margin:0;}ol{padding:0;margin:0;}li{list-style-type:none;padding:0;margin:0;}h1{color:#262626;font-size:24px;line-height:26px;letter-spacing:0.2px;margin:0 0 15px 0;}body.section-rubrique h1,body.section-partenariats h1{color:#773584;}h2{line-height:20px;font-size:16px;letter-spacing:0.5px;margin:0 0 3px 0;padding:0;}h3{font-size:12px;line-height:18px;margin:0 0 2px 0;padding:0;}
-    input.idleField{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;}.section-admin input.idleField{color:#000000;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;}input.focusField{border:1px dotted #773584 !important;background-color:#ad86b5;color:#fff;}
-    #sidebar-right h3{font-size:14px;line-height:14px;}.titre-barre{background:url(/sites/all/themes/franceculture/images/titre-barre.gif) repeat-x 0 2px;color:#773584;font-weight:bold;font-size:13px;padding:0 0 5px 0;text-align:center;}.titre-barre-gris{background:url(/sites/all/themes/franceculture/images/titre-barre-gris.gif) repeat-x 0 2px;color:#BABCBE;font-weight:bold;font-size:13px;padding:0 0 5px 0;text-align:center;}#footer-top .titre-barre{padding:0 0 15px 0;}.titre-barre span,.titre-barre-gris span{background:#fff none;padding:0 5px;letter-spacing:0;display:inline-block;}.titre-barre span.picto-ecoute{background:#ebebeb url(/sites/all/themes/franceculture/images/picto-ecoute-gris.png) no-repeat 5px 3px;padding-left:28px;}.titre-barre a{font-size:12px;font-weight:normal;line-height:12px;letter-spacing:-0.1px;cursor:default;display:block;color:#773584;}.titre-barre a:hover{text-decoration:none;}.titre-barre a.red{color:#C1272D;}.clear{clear:both;}.rss{padding:0 0 5px 5px;}.pictos{margin:2px 0 0 5px;background-color:#C1272D;}.sep{margin:0 0 6px 0;padding:0 0 6px 0;border-bottom:1px solid #CFCFCF;}.sep-last{margin:0;padding:0 0 6px 0;border-bottom:0 solid;}a.sep{display:block;}.read-more{text-align:right;font-size:11px;}.date{font-weight:bold;font-size:11px;}.timer{color:#C1272D;font-size:11px;margin:0 0 0 5px;font-weight:bold;}.timer-liste{font-size:11px;font-weight:bold;}.timer a{color:#C1272D;}.img-float{float:left;margin:0 10px 0 0;}.block{display:block;min-height:100px;margin:0 0 10px 0;}#footer-top .block{min-height:0;margin:0;}body.section-admin .block{min-height:0px;}.num-com{background:url(/sites/all/themes/franceculture/images/num-com-bg-rose.png) repeat-x 0 0;color:#000;font-size:10px;margin-left:10px;}.num-com:hover{text-decoration:none;}.num-com span{background:url(/sites/all/themes/franceculture/images/num-com-rose.png) no-repeat 100% 0;padding:0 3px 9px 3px;}.soon{padding:1px 4px;color:#fff;background-color:#C1272D;font-weight:bold;font-size:10px;margin-left:5px;}.violet{color:#773584;font-size:11px;}.cours{background-color:#E8E8E8;padding:0 5px;margin-right:5px;}.cours a{padding:0 5px;}.quiz{background-color:#DECFE2;padding:0 10px;margin-right:5px;}.quiz a{padding:0 10px;}.answer a{font-size:10px;background:url(/sites/all/themes/franceculture/images/answer.png) no-repeat 0 0;padding:0 5px 9px;}.answer a.none{background:#e4d7e6 none;padding:0 5px;}.rank-1{font-size:12px;}.rank-2{font-size:12px;color:#262626;}.rank-3{font-size:16px;color:#262626;}.btn-emission{color:#fff;background:url(/sites/all/themes/franceculture/images/btn-emission.png) no-repeat 0 0;font-weight:bold;font-size:12px;padding:3px 20px 4px;margin-left:20px;}.btn-emission:hover{background-position:0 -22px;text-decoration:none;}.btn-liste-ecoute{color:#fff;background:url(/sites/all/themes/franceculture/images/btn-liste-ecoute.png) no-repeat 0 0;font-weight:bold;font-size:12px;padding:4px 25px;margin-left:20px;}.btn-liste-ecoute:hover{background-position:0 -23px;text-decoration:none;}.more-doc{display:block;text-align:right;margin-top:15px;padding-right:15px;line-height:12px;cursor:pointer;}.more-doc:hover{text-decoration:none;}#edit-mollom-captcha-wrapper a#mollom-audio-captcha{display:none;}#edit-mollom-captcha-wrapper span{color:#fff;}#edit-mollom-captcha-wrapper span.form-required{color:#8A1F11;}
-
-        
-        .retour-home{position:absolute;top:0;left:0;margin:18px 0 0 0;}.search{float:right;margin:10px 25px 0 0px;width:400px;}
-        #header .block{float:right;margin:22px 0 0 0;width:385px;}#header label,#header .block-simplenews p,#header #block-block-17 a{color:#773584;font-weight:bold;float:left;margin:0 10px 0 0;line-height:24px;}#header #block-block-17 a{float:right;}#header .block-simplenews p,#header .block-simplenews div,#header .block-simplenews form{display:inline;}#header .block-simplenews label{display:none;}#header input,#header .block-simplenews div.user-mail{padding:4px 10px 5px 10px;float:left;width:145px;}body.blogs #block-simplenews-65{display:none;}#header input.submit{padding:0;border:none;margin:0 0 0 2px;width:26px;height:26px;background-color:#773584;}#header .temp{margin:0 0 0 2px;}
-        #menu-principal{position:absolute;top:0;right:0;margin:108px 15px 0 0;}#menu-principal li{float:left;}#menu-principal a{color:#fff;padding:6px 8px 5px 9px;font-size:14px;font-weight:bold;display:block;background-color:#28042D;}#menu-principal a:hover,#menu-principal a.active{background-color:#773584;text-decoration:none;}#menu-principal .first a{margin:0 0 0 1px;}#menu-principal .menu-action a{padding:5px 10px 6px 10px;background-color:#4D4D4D;}#menu-principal .menu-action a:hover,#menu-principal .menu-action a.active{background-color:#C1272D;}
-        #menu-top{position:absolute;top:0;right:0;margin:80px 0 0 0;}#menu-top li{float:left;background-color:#DECFE2;}#menu-top a{color:#000;padding:5px 11px 6px;font-size:13px;font-weight:bold;display:block;}#menu-top a:hover,#menu-top a.active{background-color:#773584;color:#fff;text-decoration:none;}#menu-top .login{margin:0 0 0 1px;}#menu-top .login a{color:#56045D;}#menu-top .register a{color:#56045D;font-weight:normal;font-size:12px;}#menu-top .register a:hover,#menu-top .login a:hover,#menu-top .login a.active,#menu-top .register a.active{color:#fff;}#menu-top .disconnect a{margin:0 20px;}#menu-top .go-profil a{background:url(/sites/all/themes/franceculture/images/btn-edit-profil.png) no-repeat 0 0;display:block;text-align:center;width:54px;height:19px;color:#fff;margin:4px 4px 5px 4px;padding:0;}#menu-top .go-profil a:hover{background-position:0 -19px;}
-        .urgent{border:1px solid #CFCFCF;margin-bottom:15px;}.urgent-inner{background-color:#F5DCE3;margin:2px;padding:5px;position:relative;width:654px;}.urgent-inner span{color:#DC0000;font-size:11px;font-weight:bold;}.urgent-inner h1{color:#DC0000;font-size:16px;font-weight:bold;line-height:18px;margin-bottom:5px;}.urgent-inner a{font-size:11px;background:url(/sites/all/themes/franceculture/images/urg-up.png) no-repeat 0 4px;position:absolute;bottom:0;right:0;margin:0 10px 10px 0;line-height:11px;padding-left:10px;cursor:pointer;}.urgent-inner a:hover{text-decoration:none;}
-        .tabs{font-size:11px;color:#032649;}.tabs a{color:#032649;font-weight:bold;}.tabs a.active{color:#773584;}
-        #content-left{line-height:15px;}body .list-article li{margin:0 0 0 0;clear:left;padding:25px 0 0 0}.rubrique{background:url(/sites/all/themes/franceculture/images/bg-rubrique.png) repeat-x 0 0;font-size:11px;margin:0 0 3px 0;}.rubrique a,.rubrique span{background:#fff none;padding:0 5px 0 0;}.list-article .first{padding-top:0px;}.list-article .last{margin-bottom:25px;}.list-article .first .illustration{margin-bottom:15px;}.list-article .large .illustration{margin-right:0}.list-article .illustration{float:left;margin-right:20px;}.front .list-article .illustration{margin-bottom:25px;}.list-article .video{margin-top:15px;}img.imagefield-field_fleuve_image,img.imagecache-image_liste,img.imagecache-evenement_image_liste{float:left;margin-right:20px;}
-        .biographie{color:#262626;font-size:14px;line-height:18px;letter-spacing:0.1px;margin-bottom:35px;}.biographie p,body.node-type-rf-personne#tinymce p{margin-bottom:15px;}
-        #share,#block-print-0{position:absolute;top:0;right:0;text-align:right;min-height:0;}#share .share-mail{background:url(/sites/all/themes/franceculture/images/share-mail.png) no-repeat 100% 4px;padding-right:15px;margin-right:20px;}#share .share-mail span{display:none;}#share .share-more{padding-left:15px;}#share .share-services{margin-left:10px;}#share .share-services span{margin-right:5px;}.share-script .more-services{display:none;}.share-script .more-services.active{display:inline;}.share-script .more-services.active a{float:none;}.share-script .more-services.active a span{float:none;display:inline;padding:1px 8px;}#block-print-0{right:210px;}#block-print-0 .print-page{background:url(/sites/all/themes/franceculture/images/share-print.png) no-repeat 100% 2px;padding-right:15px;margin-right:17px;}
-        .pager{border:1px solid #CFCFCF;padding:5px;text-align:right;color:#032649;margin:50px 0 30px 0;}.pager a,.pager span.pager-current{font-size:14px;line-height:14px;color:#032649;display:inline-block;height:15px;text-align:center;padding:0;vertical-align:center;}.pager span.pager-item,.pager span.pager-current{margin:0 3px;}.pager span.pager-previous span,.pager span.pager-next span{display:none;}.pager span.pager-previous{background:url(/sites/all/themes/franceculture/images/script-scroll-left.png) no-repeat 0 0;width:15px;margin-right:3px;}.pager span.pager-next{background:url(/sites/all/themes/franceculture/images/script-scroll-right.png) no-repeat 0 0;width:15px;margin-left:3px;}.pager span.pager-previous a,.pager span.pager-next a{width:15px;}.pager span.pager-current{color:#773584;}
-        .player{background:url(/sites/all/themes/franceculture/images/player-article.png) no-repeat 0 0;width:650px;height:75px;color:#fff;font-weight:bold;margin:20px 0 0 0;}.player .ecouter{float:left;width:65px;}.player .ecouter a{font-size:10px;display:block;padding:38px 0 0 0;text-align:center;color:#fff;}.player .ecouter a:hover{text-decoration:none;}.player .played{float:left;width:430px;margin:12px 0 0 0;}.player .played img{margin:8px 0 0 0;}.player .action{float:left;width:155px;margin-top:12px;}.player .action a{color:#fff;display:block;margin-bottom:7px;padding-left:22px;}
-        .com{margin-bottom:40px;}.com .post{margin-bottom:20px;}.com .post .submited{color:#000;font-size:14px;margin-bottom:2px;display:block;}.com .post .auth{font-weight:bold;color:#032649;}.com .post .submited .date{margin-left:5px;}.com .post p{font-size:12px;color:#4D4D4D;margin-left:55px;}#comment-form .preview .post{margin-bottom:20px;}#comment-form .preview .post .submited{color:#000;font-size:14px;margin-bottom:2px;display:block;}#comment-form .preview .post .auth{font-weight:bold;color:#032649;}#comment-form .preview .post .submited .date{margin-left:5px;}#comment-form .preview .post p{font-size:12px;color:#4D4D4D;margin-left:55px;}
-#comment-form{margin-bottom:40px;}#comment-form img{margin:0 0 15px 0;}#comment-form label,#comment-form input.form-text,#comment-form textarea{display:block;font-weight:normal;}#comment-form label{color:#000;font-size:14px;margin:0 0 5px 0;}#comment-form input.form-text{border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:4px 10px 5px 10px;width:210px;margin:0 0 15px 0;}#comment-form textarea{padding:4px 10px 5px 10px;color:#999999;width:633px;margin:0 0 15px 0;}#fc-quelisentils-comment-form input.form-submit,#comment-form input.form-submit,.section-liste-ecoute #node-form input.form-submit{background-color:#773587;text-align:center;color:#fff;font-size:13px;font-weight:bold;cursor:pointer;padding:2px 5px;width:80px;}.section-liste-ecoute #node-form input.form-submit{width:100px;}#fc-quelisentils-comment-form input.form-submit:hover,#comment-form
-        input.form-submit:hover,.section-liste-ecoute #node-form input.form-submit:hover{background-color:#C1272D;}#comment-form .fieldset-wrapper label,#comment-form .fieldset-wrapper input{display:inline;}
-        #footer-top ul{float:left;border-left:1px solid #CFCFCF;padding:0 0 0 15px;margin:0 0 0 15px;font-size:11px;line-height:16px;display:inline;}ul.no-border{border:none;padding:0 30px 0 0;margin:0;width:80px;}ul.tools{width:100px;}ul.france-culture{width:450px;}ul.ecoute-culture{width:230px;}#footer a{color:#fff;font-size:16px;}#footer ul{float:left;}#footer li{display:inline;border-right:2px solid #fff;padding:0 30px 5px 0;margin:0 30px 0 0;}.signature-rf{float:right;text-align:right;font-size:10px;color:#888b8b;line-height:12px;}.signature-rf a{display:block;color:#888b8b;font-size:10px;font-weight:bold;}
-
-        #content-right{line-height:15px;}#content-right .panel-pane,.list-rubrique li{margin-bottom:30px;margin-top:0 !important;padding-left:10px;}#content-right .panel-pane label,.list-rubrique li label{margin:10px 0 5px 0;display:block;}#content-right .panel-pane input,.list-rubrique li input{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:2px 10px 3px 10px;float:left;width:180px}#content-right .panel-pane input.form-text:focus,#content-right .panel-pane input.focusField{color:#FFF;}#content-right .panel-pane input.submit,.list-rubrique li input.submit{padding:0;border:none;margin:0 0 0 2px;width:22px;height:22px;background-color:#773584;}#content-right .panel-pane select,.list-rubrique li select{border-top:1px solid #CCCCCC;border-left:1px solid #CCCCCC;border-bottom:1px solid #666666;border-right:1px solid #666666;padding:2px 10px 3px 10px;float:left;width:100%;margin:0 0 10px 0;}
-        #content-right .panel-pane .title{background:url(/sites/all/themes/franceculture/images/titre-barre.gif) repeat-x 0 2px;color:#773584;font-weight:bold;font-size:13px;padding:0 0 5px 0;text-align:center;}#content-right .panel-pane .title span{background:#fff none;padding:0 5px;letter-spacing:0;display:inline-block;}body.node-type-panel #content-left .panel-pane .title{background:url(/sites/all/themes/franceculture/images/titre-barre.gif) repeat-x 0 2px;color:#773584;font-weight:bold;font-size:13px;padding:0 0 5px 0;text-align:center;}body.node-type-panel #content-left .panel-pane .title span{background:#fff none;padding:0 5px;letter-spacing:0;display:inline-block;}
-        .acheter li a{color:#000;font-weight:normal;font-style:italic;}.acheter li span{color:#808080;font-style:italic;font-size:11px;}#content-right .acheter li{border-bottom:1px solid #CFCFCF;margin:10px 0 0 0;padding:0 0 10px 0;}
-        body.lecture #sidebar-right .plus ul{padding-left:20px;padding-right:20px;}body.lecture #sidebar-right .plus li{clear:left;margin:20px 0 0 0;}body.lecture #sidebar-right .plus p{float:right;width:140px;margin-right:10px;font-size:11px;color:#666666;display:inline;line-height:14px;}body.lecture #sidebar-right .plus p a{font-size:12px;display:block;margin:0 0 5px 0;}body.lecture #sidebar-right .plus p span{font-size:12px;font-style:italic;display:block;margin-top:5px;}body.profil #content-right .plus li{clear:left;margin:10px 0;}body.profil #content-right .plus p{float:right;width:130px;font-size:11px;color:#666666;display:inline;line-height:14px;}body.profil #content-right .plus p a{font-size:12px;display:block;margin:0 0 5px 0;}body.profil #content-right .plus p span{font-size:12px;font-style:italic;display:block;margin-top:5px;}
-        body.profil #content-right .rel-doc li{clear:left;margin:10px 0;}body.profil #content-right .rel-doc img{float:left;margin:0 10px 15px 0;}body.profil #content-right .rel-doc p{font-size:12px;color:#4D4D4D;display:inline;line-height:14px;}body.profil #content-right .rel-doc p a{margin:0;}body.profil #content-right .rel-doc p span{display:block;margin-bottom:5px;color:#032649;}body.profil #content-right .rel-doc p span.date{font-weight:bold;color:#4D4D4D;font-size:11px;}body.profil #content-right .rel-doc p.theme a{display:block;text-align:right;}body.profil #content-right .rel-doc p.theme input{float:none;width:113px;margin:20px 0;}
-        #sidebar-right .block{background:url(/sites/all/themes/franceculture/images/leftgris-bg.png) repeat-y 0 0;line-height:14px;}#sidebar-right .block .block-inner{background:url(/sites/all/themes/franceculture/images/leftgris-bg-top.png) no-repeat 0 0;padding:5px 0 0 0;}#sidebar-right .block .title{background:url(/sites/all/themes/franceculture/images/titre-barre.gif) repeat-x 0 2px;color:#773584;font-weight:bold;font-size:13px;padding:0 0 5px 0;text-align:center;}#sidebar-right .block .title{margin:0 10px 5px 10px;}#sidebar-right .block .title span{background-color:#ebebeb;padding:0 5px;letter-spacing:0;}#sidebar-right .block .title a{font-size:12px;font-weight:normal;line-height:12px;letter-spacing:-0.1px;cursor:default;display:block;color:#773584;}#sidebar-right .block .context{padding:0 10px 5px;}#sidebar-right .block label{background:#ebebeb url(/sites/all/themes/franceculture/images/leftgris-bg-bottom.png) no-repeat 0 100%;padding:10px 0;display:block;margin:2px 0 0 0;text-align:center;}#sidebar-right .block .block-content{background:url(/sites/all/themes/franceculture/images/leftgris-ul-top.png) no-repeat 0 0;padding:15px 20px 0;}#sidebar-right .block ol li{list-style-type:decimal;list-style-position:inside;margin-top:10px;font-weight:bold;color:#032649;}#sidebar-right .block li{border-bottom:1px solid #CFCFCF;margin:20px 0px 0 0px;padding:0 0 15px 0;border-top-width:0;}#sidebar-right .block li.first,#sidebar-right .block li.views-row-first{margin-top:0;}#sidebar-right .block .closure{background:url(/sites/all/themes/franceculture/images/leftgris-bg-bottom.png) no-repeat 0 100%;height:30px;display:block;margin:5px 0 0 0;}
-        #sidebar-right .block-ecoute{background:#fff url(/sites/all/themes/franceculture/images/player-noir-bg.png) repeat-y 0 0;margin:0 0 10px 0;line-height:14px;}#sidebar-right .block-ecoute .block-inner{background:url(/sites/all/themes/franceculture/images/player-noir-top.png) no-repeat 0 0;padding:15px 0 0 0;color:#fff;}#sidebar-right .block-ecoute .titre-barre{background:url(/sites/all/themes/franceculture/images/titre-barre-noir.gif) repeat-x 0 2px;margin:0 19px 5px 10px;}#sidebar-right .block-ecoute h2 span{background:#323232 url(/sites/all/themes/franceculture/images/picto-cult-noir.png) no-repeat 5px 0;color:#fff;padding-left:28px;}#sidebar-right .block-ecoute .context{background-color:#fff;margin:0 19px 15px 10px;border-top:1px solid #666666;border-bottom:1px solid #666666;border-right:none;border-left:none;padding:15px 10px;color:#4D4D4D;}#sidebar-right .block-ecoute .context p{padding:0;}#sidebar-right .block-ecoute h3 a{display:block;}#sidebar-right .block-ecoute h3 .timer{font-size:14px;display:block;margin:0 0 2px 0;}#sidebar-right .block-ecoute p{padding-left:10px;padding-right:19px;}#sidebar-right .block-ecoute p a{color:#fff;background-color:#121212;}#sidebar-right .block-ecoute p .timer{font-size:12px;margin:0;}#sidebar-right .block-ecoute p.auteur{background:url(/sites/all/themes/franceculture/images/player-noir-bottom.png) no-repeat 0 100%;padding-bottom:25px;display:block;margin:2px 0 0 0;}#sidebar-right .block-ecoute .closure{background:url(/sites/all/themes/franceculture/images/player-noir-bottom.png) no-repeat 0 100%;height:15px;display:block;margin:2px 0 0 0;border:none;}#sidebar-right .block-ecoute#block-fcbloc-a-tout-hasard .context{height:40px;}#sidebar-right .block-ecoute#block-fcbloc-a-tout-hasard .default{font-weight:bold;margin-top:7px;}#sidebar-right .block-ecoute#block-fcbloc-a-tout-hasard{height:140px;}
-        #sidebar-right .block-list{background:url(/sites/all/themes/franceculture/images/leftgris-bg.png) repeat-y 0 0;line-height:14px;}#sidebar-right .block-list .block-inner{background:url(/sites/all/themes/franceculture/images/leftgris-bg-top.png) no-repeat 0 0;padding:5px 0 0 0;}#sidebar-right .block-list .titre-barre{margin:0 10px 5px 10px;}#sidebar-right .block-list .titre-barre span{background-color:#ebebeb;}#sidebar-right .block-list .context{padding:0 10px 5px;}#sidebar-right .block-list .context a{float:left;margin:10px 10px 0 10px;width:120px;text-align:center;line-height:16px;}#sidebar-right .block-list label{background:#ebebeb url(/sites/all/themes/franceculture/images/leftgris-bg-bottom.png) no-repeat 0 100%;padding:10px 0;display:block;margin:2px 0 0 0;text-align:center;}#sidebar-right .block-list ul,.block-list ol,.block-list .context{background:url(/sites/all/themes/franceculture/images/leftgris-ul-top.png) no-repeat 0 0;padding-top:1px;}#sidebar-right .block-list ol li{list-style-type:decimal;list-style-position:inside;margin-top:10px;font-weight:bold;color:#032649;}#sidebar-right .block-list li{border-bottom:1px solid #CFCFCF;margin:20px 20px 0 20px;padding:0 0 15px 0;}#sidebar-right .block-list .read-more{padding:0 20px 0 0;display:block;margin:5px 0 0 0;clear:left;}#sidebar-right .block-list .closure{background:url(/sites/all/themes/franceculture/images/leftgris-bg-bottom.png) no-repeat 0 100%;height:30px;display:block;margin:5px 0 0 0;}
-        #sidebar-right .block-user{background:url(/sites/all/themes/franceculture/images/leftgris-bg.png) repeat-y 0 0;line-height:14px;}#sidebar-right .block-user .block-inner{background:url(/sites/all/themes/franceculture/images/leftgris-bg-top.png) no-repeat 0 0;padding:5px 0 0 0;}#sidebar-right .block-user .title{background:url(/sites/all/themes/franceculture/images/titre-barre.gif) repeat-x 0 2px;color:#773584;font-weight:bold;font-size:13px;padding:0 0 5px 0;text-align:center;}#sidebar-right .block-user .title{margin:0 10px 5px 10px;}#sidebar-right .block-user .title span{background-color:#ebebeb;padding:0 5px;letter-spacing:0;}#sidebar-right .block-user .context{padding:0 10px 5px;}#sidebar-right .block-user label{background:#ebebeb url(/sites/all/themes/franceculture/images/leftgris-bg-bottom.png) no-repeat 0 100%;padding:10px 0;display:block;margin:2px 0 0 0;text-align:center;}#sidebar-right .block-user .block-content{background:url(/sites/all/themes/franceculture/images/leftgris-ul-top.png) no-repeat 0 0;padding:15px 20px 0;}#sidebar-right .block-user ol li{list-style-type:decimal;list-style-position:inside;margin-top:10px;font-weight:bold;color:#032649;}#sidebar-right .block-user li{border-bottom:1px solid #CFCFCF;margin:2px 0;padding:0;border-top-width:0;}#sidebar-right .block-user li.first{margin-top:0;}#sidebar-right .block-user .closure{background:url(/sites/all/themes/franceculture/images/leftgris-bg-bottom.png) no-repeat 0 100%;height:30px;display:block;margin:5px 0 0 0;}
-        #sidebar-right #block-fcbloc-sur-le-meme-theme{background:url(/sites/all/themes/franceculture/images/leftgris-bg.png) repeat-y 0 0;line-height:14px;}#sidebar-right #block-fcbloc-sur-le-meme-theme .block-inner{background:url(/sites/all/themes/franceculture/images/leftgris-bg-top.png) no-repeat 0 0;padding:5px 0 0 0;}#sidebar-right #block-fcbloc-sur-le-meme-theme h2.title{background:url(/sites/all/themes/franceculture/images/titre-barre.gif) repeat-x 0 2px;color:#773584;font-weight:bold;font-size:13px;padding:0 0 5px 0;text-align:center;margin:0 10px 5px 10px;}#sidebar-right #block-fcbloc-sur-le-meme-theme h2.title span{background:#fff none;padding:0 5px;letter-spacing:0;display:inline-block;background-color:#ebebeb;}#sidebar-right #block-fcbloc-sur-le-meme-theme .context{padding:0 10px 5px;}#sidebar-right #block-fcbloc-sur-le-meme-theme .context a{float:left;margin:10px 10px 0 10px;width:120px;text-align:center;line-height:16px;}#sidebar-right #block-fcbloc-sur-le-meme-theme label{background:#ebebeb url(/sites/all/themes/franceculture/images/leftgris-bg-bottom.png) no-repeat 0 100%;padding:10px 0;display:block;margin:2px 0 0 0;text-align:center;}#sidebar-right #block-fcbloc-sur-le-meme-theme ol li{list-style-type:decimal;list-style-position:inside;margin-top:10px;font-weight:bold;color:#032649;}#sidebar-right #block-fcbloc-sur-le-meme-theme li{border-bottom:1px solid #CFCFCF;margin:20px 0 0 0;padding:0 0 15px 0;}#sidebar-right #block-fcbloc-sur-le-meme-theme li.last{padding:0;border-bottom:0px}#sidebar-right #block-fcbloc-sur-le-meme-theme li.first{margin-top:0;}#sidebar-right #block-fcbloc-sur-le-meme-theme .read-more{padding:0 20px 0 0;display:block;margin:5px 0 0 0;clear:left;}#sidebar-right #block-fcbloc-sur-le-meme-theme .closure{background:url(/sites/all/themes/franceculture/images/leftgris-bg-bottom.png) no-repeat 0 100%;height:30px;display:block;margin:5px 0 0 0;}#sidebar-right #block-fcbloc-sur-le-meme-theme p a{font-weight:normal;}#sidebar-right #block-fcbloc-sur-le-meme-theme h2.title{background:url(/sites/all/themes/franceculture/images/titre-barre.gif) repeat-x 0 2px;color:#773584;font-weight:bold;font-size:13px;padding:0 0 5px 0;text-align:center;margin:0 10px 5px 10px;}
-        #sidebar-right #block-fcbloc-publicite.block .block-inner,#sidebar-right #block-fcbloc-publicite.block .block-content,#sidebar-right #block-fcbloc-publicite.block .closure{background:none;padding:0;margin:0;}#sidebar-right #block-fcbloc-publicite.block .closure{display:none;}#sidebar-right #block-fcbloc-publicite.block .title span{background-color:#FFF;}#sidebar-right #block-fcbloc-publicite.block .title{margin:0;}#sidebar-right #block-fcbloc-publicite.block .pub-inner{width:300px;height:250px;}#sidebar-right #block-fcbloc-publicite.block p.pub-notice{display:block;text-align:center;background-color:#c7c7c7;color:#808080;padding:2px;margin:0;}#sidebar-right #block-fcbloc-publicite.block{margin-bottom:15px;}
-        #sidebar-right #block-views-partenariats_fo_liste-block_1.block,#sidebar-right #block-views-partenariats_fo_liste-block_1.block .block-inner,#sidebar-right #block-views-partenariats_fo_liste-block_1.block .block-content,#sidebar-right #block-views-partenariats_fo_liste-block_1.block .closure{background:none;padding:0;margin:0;}#sidebar-right #block-views-partenariats_fo_liste-block_1.block .title span{background-color:#FFF;}#sidebar-right #block-views-partenariats_fo_liste-block_1.block .title{margin:0;}
-        #sidebar-right #block-views-lesplusconsultes-block_3 h2.title span{background:#ebebeb url(/sites/all/themes/franceculture/images/picto-ecoute-gris.png) no-repeat 3px 50%;padding-left:28px;}
-        #content-right .propos li{border-bottom:none;margin-top:15px;padding-bottom:5px;}#content-right .propos li .date{font-size:12px;display:block;margin-bottom:5px;}
-        #sidebar-right .aide .closure{height:15px;}#sidebar-right .aide li{border-bottom:none;margin-top:10px;padding-bottom:0;}
-        .block-nav a{display:block;margin-bottom:5px;}
-        #content-right .qr .read-more{background:none;padding-bottom:5px;}#content-right .qr .closure{background-color:#ebebeb;padding-top:10px;height:40px;}#content-right .qr .closure a{color:#fff;background:url(/sites/all/themes/franceculture/images/ecoute-bg.png) no-repeat 0 0;display:block;text-align:center;width:280px;height:20px;margin:2px 10px;padding-top:2px;}#content-right .qr .closure a:hover{background-position:0 -22px;text-decoration:none;}#sidebar-right .qr-posezvotrequestion a{color:#fff;background:url(/sites/all/themes/franceculture/images/ecoute-bg.png) no-repeat 0 0;display:block;text-align:center;height:20px;margin:10px 10px -15px;padding-top:2px;}#sidebar-right .qr-posezvotrequestion a:hover{background-position:0 -22px;text-decoration:none;}
-        #sidebar-right .equipe li{border-bottom:none;padding-bottom:5px;margin-top:15px;}
-        #content-right .votre-liste ol li{list-style-position:inside;border-bottom:none;font-weight:normal;color:#4D4D4D;}
-        #content-right .sujet li{margin-bottom:5px;padding-bottom:5px;border-bottom:0;}#content-right .sujet .illustration{float:left;margin-right:5px;}#content-right .sujet .timer{margin-left:0;}
-				#content-right #block-fc_evenement-proposer-un-evenement ul{padding:0 0 0.25em 0;}#content-right #block-fc_evenement-proposer-un-evenement{background:url(/sites/all/themes/franceculture/images/leftgris-bg.png) repeat-y 0 0;line-height:14px;}#content-right #block-fc_evenement-proposer-un-evenement .block-inner{background:url(/sites/all/themes/franceculture/images/leftgris-bg-top.png) no-repeat 0 0;padding:5px 0 0 0;}#content-right #block-fc_evenement-proposer-un-evenement .title{background:url(/sites/all/themes/franceculture/images/titre-barre.gif) repeat-x 0 2px;color:#773584;font-weight:bold;font-size:13px;padding:0 0 5px 0;text-align:center;}#content-right #block-fc_evenement-proposer-un-evenement .title{margin:0 10px 5px 10px;}#content-right #block-fc_evenement-proposer-un-evenement .title span{background-color:#ebebeb;padding:0 5px;letter-spacing:0;}#content-right #block-fc_evenement-proposer-un-evenement .context{padding:0 10px 5px;}#content-right #block-fc_evenement-proposer-un-evenement .block-content{background:url(/sites/all/themes/franceculture/images/leftgris-ul-top.png) no-repeat 0 0;padding:15px 20px 0;}#content-right #block-fc_evenement-proposer-un-evenement li{border-bottom:1px solid #CFCFCF;margin:20px 0px 0 0px;padding:0 0 15px 0;border-top-width:0;}#content-right #block-fc_evenement-proposer-un-evenement li.first{margin-top:0;}#content-right #block-fc_evenement-proposer-un-evenement .closure{background:url(/sites/all/themes/franceculture/images/leftgris-bg-bottom.png) no-repeat 0 100%;height:35px;display:block;}#content-right #block-fc_evenement-proposer-un-evenement .desc .grippie{margin-left:25px;}
-        #content-right #block-fc_evenement-proposer-un-evenement .form-item label{font-weight:normal}#content-right #block-fc_evenement-proposer-un-evenement input.submit{width:100px;}#content-right #block-fc_evenement-proposer-un-evenement input.submit.file-add,#content-right #block-fc_evenement-proposer-un-evenement input.submit.file-remove{width:100px;margin-left:25px;border:2px outset;height:25px;}#content-right #block-fc_evenement-proposer-un-evenement input.submit.suite{background:url(/sites/all/themes/franceculture/images/btn-evenement.png) no-repeat 0 0;margin-left:185px;margin-top:0;text-align:center;width:85px;height:25px;color:#fff;border:none;}#content-right #block-fc_evenement-proposer-un-evenement input.submit.suite:hover{background-position:0 -25px;text-decoration:none;}#content-right #block-fc_evenement-proposer-un-evenement p.connect{height:30px;width:120px;margin-left:125px;padding:5px 20px;background:url(/sites/all/themes/franceculture/images/btn-evenement-connect.png) no-repeat 0 0;}#content-right #block-fc_evenement-proposer-un-evenement p.connect:hover{background-position:0 -39px;}#content-right #block-fc_evenement-proposer-un-evenement p.connect a{font-size:13px;color:#fff}#content-right #block-fc_evenement-proposer-un-evenement p.connect a:hover{text-decoration:none;}#content-right #block-fc_evenement-proposer-un-evenement div.messages{margin:1em;}#content-right #block-fc_evenement-proposer-un-evenement .quand .description{display:none;}#content-right #block-fc_evenement-proposer-un-evenement .quand{margin-left:25px;}#content-right #block-fc_evenement-proposer-un-evenement .quand label{margin-left:5px;}#content-right #block-fc_evenement-proposer-un-evenement .quand .container-inline-date.date-clear-block{clear:none;display:inline;float:left;margin-top:10px;}#content-right #block-fc_evenement-proposer-un-evenement .quand label span.form-required{display:none;}#content-right #block-fc_evenement-proposer-un-evenement .quand label span.form-required{display:none;}#content-right #block-fc_evenement-proposer-un-evenement .desc .form-item .description{margin-left:25px;clear:left;}#content-right #block-fc_evenement-proposer-un-evenement .ahah-progress-throbber{margin-top:-22px;margin-left:145px;}#content-right #block-fc_evenement-proposer-un-evenement .ahah-progress-bar{width:235px;float:left;margin-left:25px;}#content-right #block-fc_evenement-proposer-un-evenement .supl span.field-prefix{margin-left:25px;font-size:13px;}#content-right #block-fc_evenement-proposer-un-evenement .supl input{margin-left:0px;width:195px;}#content-right #block-fc_evenement-proposer-un-evenement .supl #legal-wrapper{margin:10px 25px 5px;}
-        #sidebar-right .form-com p,#content-right .form-com p{background:transparent url(/sites/all/themes/franceculture/images/leftgris-ul-top.png) no-repeat scroll 0 0;padding-top:11px;text-align:center;color:#C1272D;}#sidebar-right .form-com label,#content-right .form-com label{margin:10px 25px 5px 25px;background:none;text-align:left;color:#4D4D4D;font-size:12px;padding:0;}#sidebar-right .form-com label span,#content-right .form-com label span{color:#C1272D;font-size:13px;}#sidebar-right .form-com input,#sidebar-right .form-com textarea,#content-right .form-com input,#content-right .form-com textarea{margin:0 25px;width:230px;padding:3px 5px;}#content-right .form-com select,#sidebar-right .form-com select{margin:0 25px;width:240px;padding:3px 5px;}#sidebar-right .form-com img,#content-right .form-com img{margin:10px 25px;text-align:center;}#sidebar-right .form-com input.submit,#content-right .form-com input.submit{width:80px;margin-top:20px;}#sidebar-right .form-com input.submit,#content-right .form-com input.submit{background-color:#773587;text-align:center;color:#fff;font-size:13px;font-weight:bold;cursor:pointer;padding:2px 5px;width:80px;}#sidebar-right .form-com input.submit:hover,#content-right .form-com input.submit:hover{background-color:#C1272D;}#content-right .form-com .quoi,#content-right .form-com .quand,#content-right .form-com .ou,#sidebar-right .form-com .quoi,#sidebar-right .form-com .quand,#sidebar-right .form-com .ou{margin-bottom:20px;}#content-right .form-com .quand input,#sidebar-right .form-com .quand input{width:75px;float:left;margin:0 0 0 5px;padding:2px 5px;display:inline;}#content-right .form-com .quand input.submit,#sidebar-right .form-com .quand input.submit{width:22px;height:22px;margin:0 0 0 2px;padding:0;border:none;}#content-right .form-com .quand label,#sidebar-right .form-com .quand label{float:left;margin:5px 0 0 25px;display:inline;}#content-right .form-com .ou .cp,#sidebar-right .form-com .ou .cp{float:left;width:90px;margin:15px 0 0 25px;display:inline;}#content-right .form-com .ou .cp input,#sidebar-right .form-com .ou .cp input{width:70px;margin:0;}#content-right .form-com .ou .cp label,#sidebar-right .form-com .ou .cp label{margin:0;}#content-right .form-com .ou .commune,#sidebar-right .form-com .ou .commune{float:left;width:170px;margin:15px 0 0 0;}#content-right .form-com .ou .commune input,#sidebar-right .form-com .ou .commune input{width:140px;margin:0;}#content-right .form-com .ou .commune label,#sidebar-right .form-com .ou .commune label{margin:0;}#content-right .form-com .desc,#sidebar-right .form-com .desc{margin-bottom:20px;}#content-right .form-com .desc input,#sidebar-right .form-com .desc input{width:160px;float:left;margin:0 0 0 25px;padding:2px 5px;display:inline;}#content-right .form-com .desc input.submit,#sidebar-right .form-com .desc input.submit{width:80px;height:22px;margin:0 0 0 2px;padding:0;border:none;}
-        #content-right .plus ul{padding-left:20px;padding-right:20px;}#content-right .plus li{clear:left;margin:20px 0 0 0;}#content-right .plus p{float:right;width:140px;margin-right:10px;font-size:11px;color:#666666;display:inline;line-height:14px;}#content-right .plus p a{font-size:12px;display:block;margin:0 0 5px 0;}#content-right .plus p span{font-size:12px;font-style:italic;display:block;margin-top:5px;}
-         .search-col-right p{background:url(/sites/all/themes/franceculture/images/leftgris-ul-top.png) no-repeat scroll 0 0;padding:20px 0 0 25px;height:30px;margin:0;}.search-col-right input{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:4px 10px 5px 10px;float:left;width:205px;}.search-col-right input.submit{padding:0;border:none;margin:0 0 0 2px;width:26px;height:26px;background-color:#773584;}body.lecture .search-col-right .closure{height:15px;}
-        .writter{padding:0 16px 0 0;border-right:1px solid #CFCFCF;margin:10px 0;}.book{padding:0 0 0 17px;margin:10px 0;}.who{display:block;font-size:16px;margin-bottom:2px;}body.page-accueil div.view-quelisentils img.imagecache-personne_image_liste,body.node-type-rf-personne div.view-quelisentils img.imagecache-personne_image_liste,body.page-taxonomy-term-131 div.view-quelisentils img.imagecache-personne_image_liste{padding:0 16px 0 0;border-right:1px solid #CFCFCF;margin:10px 0;}body.page-accueil div.view-quelisentils img.imagecache-oeuvre_image_liste,body.node-type-rf-personne div.view-quelisentils img.imagecache-oeuvre_image_liste,body.page-taxonomy-term-131 div.view-quelisentils img.imagecache-oeuvre_image_liste{padding:0 0 0 15px;margin:10px 0;}
-        .profil-extra img{margin-bottom:20px;}.profil-extra td{padding-bottom:8px;color:#262626;}.profil-extra .ref{width:85px;}.profil-extra .ref.map{width:225px;}.profil-extra .infos{padding-left:10px;}
-        .oeuvre p{color:#666666;font-size:11px;margin-left:105px;}.oeuvre a.title{display:block;font-size:12px;margin-bottom:3px;}.oeuvre span.format{color:#4D4D4D;font-weight:bold;display:block;margin-bottom:3px;}
-        .rel-emission .position{position:relative;text-align:right;width:235px;margin-bottom:8px;}.rel-emission .position a{display:block;height:45px;}.rel-emission .position p{position:absolute;top:0;left:0;margin:10px 0 0 5px;font-size:13px;font-weight:bold;color:#fff;z-index:10;width:110px;text-align:left;line-height:13px;}.rel-emission .position .opacity{position:absolute;bottom:0;left:0;display:block;width:120px;height:40px;opacity:0.8;}.rel-emission .position .opacity span{display:none;}
-            .position .docks{background-color:#29ABE2;}.position .theme1-131{background-color:#D2D721;}.position .theme1-130{background-color:#47758D;}.position .theme1-135{background-color:#1B97CD;}.position .theme1-132{background-color:#EED7A1;}.position .theme1-133{background-color:#EF6F60;}.position .theme1-289{background-color:#FFED00;}.position .theme1-290{background-color:#8E5698;}.position .theme1-134{background-color:#FBB03B;}
-        
-        
-        .part{position:relative;margin-bottom:10px;width:300px;}.part img{border:10px solid #EBEBEB;}.part .opaque{position:absolute;bottom:0;left:0;margin:0 0 10px 10px;height:30px;width:280px;background-color:#000;opacity:0.7;z-index:10;}.part p{color:#fff;font-size:16px;font-weight:bold;position:absolute;bottom:0;left:0;margin:0 0 15px 15px;z-index:20;}
-        #sidebar-right div#block-fcbloc-votre-liste-decoute .context.playlist{padding-bottom:50px;padding-top:5px;}#sidebar-right div#block-fcbloc-votre-liste-decoute .context.playlist a{float:none;margin:0;text-align:left;}#sidebar-right div#block-fcbloc-votre-liste-decoute .context.playlist .illustration{float:left;margin-right:20px;width:70px;}#sidebar-right div#block-fcbloc-votre-liste-decoute .context.playlist a.submit{background:transparent url(/sites/all/themes/franceculture/images/btn-large.png) no-repeat scroll 0 0;color:#FFFFFF;float:right;padding:4px 10px;text-align:center;width:140px;margin-top:20px;}#sidebar-right div#block-fcbloc-votre-liste-decoute .context.playlist a.submit:hover{background-position:0 -25px;text-decoration:none;}#sidebar-right div#block-fcbloc-votre-liste-decoute .context.playlist div.scrollable-playlist{position:relative;overflow:hidden;height:220px;margin:10px;}#sidebar-right div#block-fcbloc-votre-liste-decoute .context.playlist div.scrollable-playlist div.field-items{position:absolute;height:200em;width:260px;}#sidebar-right div#block-fcbloc-votre-liste-decoute .context.playlist div.scrollable-playlist div.field-items div.field-item{top:5px;border-bottom:1px solid #CFCFCF;padding:7px 0;}#sidebar-right div#block-fcbloc-votre-liste-decoute .context.playlist a.disabled{visibility:hidden !important;}#sidebar-right div#block-fcbloc-votre-liste-decoute .context.playlist a.prev{background:#773584 url(/sites/all/themes/franceculture/images/script-scroll-top.png);cursor:pointer;display:block;height:15px;left:5px;margin:40px 0 0 5px;top:0;position:absolute;width:280px;z-index:10;}#sidebar-right div#block-fcbloc-votre-liste-decoute .context.playlist a.next{background:#773584 url(/sites/all/themes/franceculture/images/script-scroll-bottom.png);cursor:pointer;display:block;width:15px;height:15px;position:absolute;bottom:0;left:0;z-index:10;margin-bottom:75px;margin-left:150px;}
-        
-        #content-bottom{background:url(/sites/all/themes/franceculture/images/bg_bottom.png) repeat-y 0 0;}#content-bottom .clear-close{background:url(/sites/all/themes/franceculture/images/bg-bottom_bottom.png) no-repeat 0 100%;height:32px;clear:both;}#content-bottom .titre-barre span{background-color:#ebebeb;}#content-bottom ol{margin:10px 15px 0 15px;}#content-bottom li{border-bottom:1px solid #CFCFCF;}#cb-left{background:transparent url(/sites/all/themes/franceculture/images/cb-left_top.png) no-repeat 0 0;}#cb-right{background:transparent url(/sites/all/themes/franceculture/images/cb-right_top.png) no-repeat 0 0;}#cb-left li{margin:0 0 15px 0;padding:0 0 15px 0;}#cb-left .auteur{display:block;margin:10px 0 5px 0;}#cb-right li{list-style-type:decimal;list-style-position:inside;font-weight:bold;color:#032649;margin:0 0 6px 0;padding:0 0 6px 0;}#block-views-lesplusconsultes-block_1{background:transparent url(/sites/all/themes/franceculture/images/cb-right_top.png) no-repeat 0 0;}#block-views-lesplusconsultes-block_1 li{list-style-type:decimal;list-style-position:inside;font-weight:bold;color:#032649;margin:0 0 6px 0;padding:0 0 6px 0;}#block-views-lesplusconsultes-block_1 h2.title{background:url(/sites/all/themes/franceculture/images/titre-barre.gif) repeat-x 0 2px;color:#773584;font-weight:bold;font-size:13px;padding:0 0 5px 0;text-align:center;}#block-views-lesplusconsultes-block_1 h2.title span{background-color:#EBEBEB;display:inline-block;padding:0 5px;letter-spacing:0;}
-
-        
-        body.blogs .blog-home{position:absolute;top:0;right:0;margin-top:-12px;margin-right:-12px;z-index:10;}body.blogs .opacity h1{position:absolute;bottom:0;left:0;margin-bottom:5px;margin-left:15px;display:block;opacity:0.8;color:#fff;padding:15px;line-height:20px;background-color:#29ABE2;font-size:30px;}body.blogs .opacity h1 a{color:#FFF;text-decoration:none;}body.blogs .opacity h1 a.le-blog-de{display:block;font-size:12px;color:#032649;}body.blogs .opacity-bottom{position:absolute;bottom:0;left:0;width:990px;height:5px;opacity:0.8;background-color:#29ABE2;}
-        body.blogs .list-article{margin-bottom:40px;}body.blogs .list-article li{margin-top:15px;padding-top:10px;border-top:1px solid #CFCFCF;}body.blogs .item-list ul{margin:0;}body.blogs .item-list li{margin:15px 0 0;padding-top:10px;border-top:1px solid #CFCFCF;list-style:none;}.blog-illu{float:left;position:relative;background:url(/sites/all/themes/franceculture/images/blog-ill-top.png) no-repeat 0 0;padding-top:10px;width:100px;margin-right:20px;}.blog-illu .date{position:absolute;top:0;left:0;z-index:20;margin-top:12px;color:#fff;display:block;text-align:center;width:100px;font-size:14px;}.blog-illu .opaque{position:absolute;top:0;left:0;width:100px;height:20px;background-color:#000;opacity:0.7;margin-top:10px;}.blog-illu span{border-bottom:1px solid #CFCFCF;margin-bottom:2px;padding-bottom:2px;font-size:11px;display:block;font-weight:bold;}.blog-illu span.auteur{border-bottom:none;}.blog-infos{float:left;width:520px;}.view-id-personne_fo_fleuve .blog-infos{width:auto;float:none;}.blog-infos p,body.node-type-rf-billet-blog#tinymce p{font-size:13px;color:#262626;line-height:18px;margin-bottom:10px;}body.blogs .pager{clear:left;}body.blogs .form-com{clear:both;}body.blogs #content .blog-infos .illustration{position:relative;float:left;margin:0 15px 25px 0;}body.blogs #content .blog-infos .large{margin-right:0;}body.blogs #content .blog-infos .illustration .opaque{position:absolute;bottom:0;left:0;width:100%;background-color:#000;opacity:0.7;}body.blogs #content .blog-infos .illustration .opaque p{font-weight:bold;color:#fff;font-size:11px;margin:2px 10px;}
-        #sidebar-right #block-views-864a217bf1f0671a8b7d686e759c3554 .block-content ul.views-summary li{margin-top:0;}#sidebar-right #block-views-864a217bf1f0671a8b7d686e759c3554 .block-content ul.views-summary li ~ li{margin-top:20px;}
-        #sidebar-right #block-fc_widget_twitter-field_twitter .block-content ul li{margin-top:0;}#sidebar-right #block-fc_widget_twitter-field_twitter .block-content ul li ~ li{margin-top:20px;}
-        
-        h1 .more{color:#773584;font-size:12px;font-weight:bold;}h1 .more .result,h1 .more .tag{font-size:24px;margin:0 5px;}.more-infos input{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:4px 10px 5px 10px;float:left;width:270px;display:inline;}.more-infos input.submit{padding:0;border:none;margin:0 0 0 2px;width:77px;height:26px;background-color:#773584;}.more-infos input.box{float:left;margin:6px 0 0 20px;display:inline;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;width:15px;height:15px;}.more-infos label.box{float:left;margin:5px 0 0 5px;display:inline;color:#032649;font-size:11px;font-weight:bold;}.trie{margin-top:30px;color:#032649;font-size:11px;font-weight:bold;}.trie a{color:#032649;margin:0 3px;}.trie a.first{margin-left:0;}.trie a.active{color:#773584;}.result li{border-top:1px solid #CFCFCF;margin:0 0 15px 0;padding:10px 0 0 0;clear:both;}.result .illustration{float:right;margin-left:20px;}.result .tagged{background-color:#FFFF00;}
-        body.page-theme #content-inner .more{color:#773584;font-size:13px;font-weight:bold;margin:10px 0 20px 0;}body.page-theme #content-inner .more select{border-color:#CCCCCC #666666 #666666 #CCCCCC;border-style:solid;border-width:1px;margin-left:10px;padding:2px;width:200px;color:#4D4D4D;font-size:12px;}body.page-theme .list-article li{clear:both;}body.page-theme .list-article li .illustration{float:left;margin-right:10px;}
-        div#grille-programmes #grille-navigation{position:relative;background-color:#EBEBEB;padding:15px 10px 0 10px;margin:0;}div#grille-programmes h1{color:#773584;padding-bottom:20px;margin-bottom:0;}div#grille-programmes .btn-liste-ecoute{color:#fff;background:url(/sites/all/themes/franceculture/images/btn-liste-ecoute.png) no-repeat 0 0;font-weight:bold;font-size:12px;padding:4px 33px;line-height:15px;width:185px;text-align:center;float:right;display:block;}div#grille-programmes .btn-liste-ecoute:hover{background-position:0 -23px;text-decoration:none;}
-        div#grille-programmes .script-prog a.prev,div#grille-programmes  .script-prog a.prevPage{display:block;width:15px;height:15px;background:url(/sites/all/themes/franceculture/images/script-scroll-left.gif) no-repeat;position:absolute;top:0;left:0;cursor:pointer;z-index:10;margin-top:73px;margin-left:6px;}div#grille-programmes .script-prog a.disabled{visibility:hidden !important;}div#grille-programmes .script-prog a.next,div#grille-programmes  .script-read a.nextPage{background:url(/sites/all/themes/franceculture/images/script-scroll-right.gif);display:block;width:15px;height:15px;position:absolute;top:0;right:0;cursor:pointer;z-index:10;margin-top:73px;margin-right:6px;}div#grille-programmes .script-prog div.scrollable{position:relative;overflow:hidden;width:960px;height:31px;margin:0 0 0 5px;background-color:#EBEBEB;}div#grille-programmes #grille-navigation .script-prog ol{margin:0;}div#grille-programmes .script-prog #thumbs{position:absolute;width:10000em;clear:both;left:-1644px;}
-        div#grille-programmes .script-prog #thumbs li{width:137px;height:31px;cursor:pointer;margin:0;float:left;padding:0;position:relative;line-height:15px;text-align:center;background:url(/sites/all/themes/franceculture/images/li-prog.png) no-repeat 0 0;color:#032649;font-size:15px;font-weight:bold;}div#grille-programmes .script-prog #thumbs li.active{background:url(/sites/all/themes/franceculture/images/li-prog-active.png) no-repeat 0 0;}div#grille-programmes .script-prog #thumbs li a{display:block;height:100%;padding-top:7px;text-transform:lowercase;}
-        .plage-horaire a.prev,.plage-horaire a.prevPage{display:block;width:15px;height:15px;background:url(/sites/all/themes/franceculture/images/script-scroll-left.gif) no-repeat;position:absolute;top:0;left:0;cursor:pointer;z-index:10;margin-top:73px;margin-left:1px;}.plage-horaire a.disabled{visibility:hidden !important;}.plage-horaire a.next,.plage-horaire a.nextPage{background:url(/sites/all/themes/franceculture/images/script-scroll-right.gif);display:block;width:15px;height:15px;position:absolute;top:0;right:0;cursor:pointer;z-index:10;margin-top:73px;margin-right:1px;}.plage-horaire{width:960px;background-color:#fff;border-right:1px solid #CFCFCF;border-left:1px solid #CFCFCF;border-top:1px solid #CFCFCF;border-bottom:5px solid #C1272D;margin-top:5px;height:125px;padding:0 14px;position:relative;}.plage-horaire .horaire-inner{overflow:hidden;width:960px;height:125px;position:relative;}div#grille-programmes #thumbs2{position:absolute;width:10000em;clear:both;}.plage-horaire li{width:160px;height:125px;float:left;}.plage-horaire li div{width:140px;height:115px;position:relative;float:left;padding:10px 10px 0;}.plage-horaire li p{color:#032649;font-weight:bold;}.plage-horaire li.col-2{width:348px;}.plage-horaire h2{color:#4D4D4D;font-size:12px;font-weight:normal;}.plage-horaire a{display:block;height:100%;}.plage-horaire a:hover{text-decoration:none;}.plage-horaire span{position:absolute;bottom:0;left:0;height:16px;width:159px;background-color:#F9E9E9;font-size:11px;font-weight:bold;color:#ED1C24;display:block;padding:2px 0 2px 5px;}.plage-horaire span a{color:#ED1C24;}.plage-horaire span.second{margin-left:164px;}.plage-horaire .active span{background-color:#ED1C24;color:#fff;}.plage-horaire .active span a{color:#fff;}
-        .detail-plage{border-left:1px solid #CFCFCF;border-right:1px solid #CFCFCF;border-bottom:1px solid #CFCFCF;background:url(/sites/all/themes/franceculture/images/prog-horaire.png) repeat-x 0 0;padding:2px 15px 20px 15px;margin-bottom:40px;}.detail-plage .heure{color:#C1272D;font-size:18px;font-weight:bold;margin:5px 0 10px 0;}.detail-plage .heure .debut{float:left;}.detail-plage .heure .fin{float:right;}.detail-plage .programme p{padding-top:16px;}.detail-plage .programme img{float:left;margin-right:30px;}.detail-plage .programme h3{color:#C1272D;font-size:11px;font-weight:bold;line-height:11px;}.detail-plage .programme h2{font-size:20px;}.detail-plage .programme .btn-emission{padding:3px 25px 4px;float:right;line-height:15px;}.detail-plage .programme ul{margin:20px 0 0 0;float:left;width:300px;}.detail-plage .programme ul.split{margin-left:30px;}.detail-plage .programme li{border-bottom:1px solid #CFCFCF;margin-bottom:3px;padding-bottom:5px;font-size:11px;line-height:14px;}.detail-plage .programme li a{font-size:12px;}.detail-plage .programme li span{color:#C1272D;font-weight:bold;margin-right:2px;}
-        .detail-arbo{border:1px solid #CFCFCF;padding:30px;margin-top:5px;}.detail-arbo ul{margin-left:120px;}.detail-arbo li.actionnable{border-top:1px solid #CFCFCF;margin-top:10px;padding-top:10px;position:relative;width:810px;cursor:pointer;}.detail-arbo .action{position:absolute;top:0;right:0;margin:10px 0 0 0;cursor:pointer;}.detail-arbo span{color:#C1272D;font-weight:bold;}.detail-arbo span.plage{font-size:16px;display:block;width:50px;float:left;}.detail-arbo h2{margin-left:55px;}.detail-arbo p{margin-left:55px;color:#333333;font-size:12px;}.detail-arbo li ul{margin-left:55px;}.detail-arbo li li span{margin-right:3px;}.detail-arbo li li p{margin:0;}
-        body.section-podcasts .attachment-before .view-display-id-attachment_1{position:relative;background-color:#EBEBEB;padding:15px 10px 0 10px;margin:0;}body.section-podcasts .attachment-before .view-display-id-attachment_1{padding-bottom:0;margin-bottom:0;}body.section-podcasts .attachment-before .view-display-id-attachment_1 .view-content{margin:0 0 15px 30px;}body.section-podcasts .attachment-before .view-display-id-attachment_1 .view-content li{display:block;float:left;margin:0 5px;position:relative;}body.section-podcasts  li div.content{position:absolute;top:0;left:0;width:176px;border-top:1px solid #000;padding-bottom:15px;background:url(/sites/all/themes/franceculture/images/bandeau-podcast-bottom.gif) no-repeat 0 100%;margin-top:-55px;margin-left:-3px;z-index:100;}body.section-podcasts  li div.content p{background:url(/sites/all/themes/franceculture/images/bandeau-podcast-bg.png) repeat-y 0 0;padding:5px 15px;margin:0;font-size:11px;font-weight:bold;line-height:11px;}body.section-podcasts  li div.content p .timer{display:block;margin:0;}
-        body.podcasts .modifier{text-align:right;margin:30px 20px 0 0;height:25px;}body.podcasts .modifier a{color:#fff;background:url(/sites/all/themes/franceculture/images/btn-modifier.png) no-repeat 0 0;padding:5px 18px;float:right;}body.podcasts .modifier a:hover{background-position:0 -25px;text-decoration:none;}body.podcasts .closure{height:60px;background-color:#ebebeb;padding-top:10px;}body.podcasts .closure a{color:#fff;background:url(/sites/all/themes/franceculture/images/ecoute-bg.png) no-repeat 0 0;display:block;text-align:center;width:280px;height:20px;margin:2px 10px;padding-top:2px;}body.podcasts .closure a:hover{background-position:0 -22px;text-decoration:none;}
-        body.section-podcasts h1{color:#773584;padding-bottom:10px;margin-bottom:0;}body.section-podcasts .primary-tabs{width:970px;height:31px;margin:0;margin-top:10px;}body.section-podcasts .primary-tabs span{float:left;}body.section-podcasts .primary-tabs span a{display:block;text-align:center;font-size:16px;padding-top:5px;}body.section-podcasts .primary-tabs span a:hover{text-decoration:none;}body.section-podcasts .primary-tabs span.themes a{background:url(/sites/all/themes/franceculture/images/tab-theme.png) no-repeat 0 0;width:130px;height:26px;}body.section-podcasts .primary-tabs span.themes a.active{background:url(/sites/all/themes/franceculture/images/tab-theme-active.png) no-repeat 0 0;}body.section-podcasts .primary-tabs span.alpha a{background:url(/sites/all/themes/franceculture/images/tab-alpha.png) no-repeat 0 0;width:200px;height:26px;}body.section-podcasts .primary-tabs span.alpha a.active{background:url(/sites/all/themes/franceculture/images/tab-alpha-active.png) no-repeat 0 0;}body.section-podcasts .primary-tabs span.prod a{background:url(/sites/all/themes/franceculture/images/tab-prod.png) no-repeat 0 0;width:150px;height:26px;}body.section-podcasts .primary-tabs span.prod a.active{background:url(/sites/all/themes/franceculture/images/tab-prod-active.png) no-repeat 0 0;}body.section-podcasts .primary-tabs span.cle{background:url(/sites/all/themes/franceculture/images/tab-cle.png) no-repeat 0 0;width:490px;height:31px;color:#fff;font-size:11px;}body.section-podcasts .primary-tabs span.cle input{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:2px 10px 3px 10px;float:left;width:225px;margin:5px 0 0 10px}body.section-podcasts .primary-tabs span.cle input.submit{padding:0;border:none;margin:5px 0 0 2px;width:22px;height:22px;background-color:#773584;}body.section-podcasts .primary-tabs span.cle span{margin:5px 0 0 10px;line-height:12px;}body.section-podcasts .secondary-tabs{margin:10px 0 30px 0;color:#032649;font-weight:bold;}body.section-podcasts .secondary-tabs a{margin:0 5px;letter-spacing:0.2px;}
-        body.section-podcasts .views-view-grid li img{float:right;margin-left:15px;}body.section-podcasts .views-view-grid li .views-field-title{font-size:16px;margin:0 0 5px 0;}body.section-podcasts .views-view-grid li span{display:block;margin-bottom:5px;letter-spacing:-0.2px;}body.section-podcasts .views-view-grid li span.timer{margin:0 0 5px 0;}body.section-podcasts .views-view-grid li .views-field-field-generique-personne-nid .field-content{display:inline;}
-        body.section-podcast .article-full{margin-bottom:30px;}body.section-podcast #content-left h2.titre-barre{margin-bottom:30px;}body.section-podcast .article-full h2{font-size:24px;color:#262626;}body.section-podcast .article-full h3{font-size:16px;color:#773584;margin:10px 0 5px 0;}body.section-podcast .article-full p{margin:10px 0 10px 215px;}body.section-podcast .article-full .illustration{float:left;margin:0 15px 25px 0;}body.section-podcast .article-full .instal{background:url(/sites/all/themes/franceculture/images/instal-bg.png) no-repeat 0  0;height:88px;margin:0 0 5px 215px;}body.section-podcast .article-full .instal a{font-size:11px;float:left;display:block;margin-top:10px;text-align:center;}body.section-podcast .article-full .instal a:hover{text-decoration:none;}body.section-podcast .article-full .instal a.itune{width:88px;}body.section-podcast .article-full .instal a.reader{width:85px;}body.section-podcast .article-full .instal a.yahoo{width:85px;}body.section-podcast .article-full .instal a.netvibes{width:85px;}body.section-podcast .article-full .instal a.netvibes span{margin-top:3px;}body.section-podcast .article-full .instal a.lien-rss{width:75px;}body.section-podcast .article-full .instal a.lien-rss span{margin-top:5px;}body.section-podcast .article-full .instal span{display:block;}
-        body.podcasts .script-vertical h2{margin-bottom:36px;}body.podcasts .script-vertical h2.titre-barre{margin-bottom:5px;}body.podcasts .script-vertical .liste-ecoute{position:relative;}body.podcasts .script-vertical a.prev,body.podcasts .script-vertical a.prevPage{display:block;width:260px;height:15px;background:#773584 url(/sites/all/themes/franceculture/images/script-scroll-top.png) no-repeat;position:absolute;top:0;left:0;cursor:pointer;z-index:10;margin:40px 0 0 20px;}body.podcasts .script-vertical a.disabled{visibility:hidden !important;}body.podcasts .script-vertical a.next,body.podcasts .script-vertical a.nextPage{background:#773584 url(/sites/all/themes/franceculture/images/script-scroll-bottom.png);display:block;width:15px;height:15px;position:absolute;bottom:0;left:0;cursor:pointer;z-index:10;margin-bottom:120px;margin-left:159px;}body.podcasts .script-vertical div.scrollable-vertical{position:relative;overflow:hidden;width:300px;height:421px;margin:0;background:url(/sites/all/themes/franceculture/images/leftgris-ul-top.png) no-repeat scroll 0 0;}body.podcasts .script-vertical #thumbs-vertical{position:absolute;width:10000em;clear:both;background:none;}body.podcasts .script-vertical #thumbs-vertical li{cursor:pointer;padding:15px 0 5px 0;margin:10px 20px 0 20px;clear:left;width:260px;height:109px;}body.podcasts .script-vertical #thumbs-vertical li .illustration{float:left;}body.podcasts .script-vertical #thumbs-vertical li p{margin-left:60px;}body.podcasts .script-vertical #thumbs-vertical li p a{display:block;margin-bottom:5px;line-height:15px;}body.podcasts .script-vertical #thumbs-vertical li p span{display:block;margin-top:5px;}body.podcasts .script-vertical #thumbs-vertical li p span span{display:inline;margin:0 0 0 5px;}
-        
-        
-        body.emissions #content-top{margin-bottom:-30px;}body.section-emissions .view-header{position:relative;background-color:#EBEBEB;padding:15px 10px 0 10px;margin:0;}body.section-emissions #content #content-inner,body.section-grille-des-programmes #content #content-inner,body.section-programmes #content #content-inner{padding-top:0;}body.section-emissions h1{color:#773584;padding-bottom:10px;margin-bottom:0;}
-        body.section-emissions .primary-tabs{width:970px;margin:0;}body.section-emissions .primary-tabs span{float:left;}body.section-emissions .primary-tabs span a{display:block;text-align:center;font-size:16px;padding-top:5px;}body.section-emissions .primary-tabs span a:hover{text-decoration:none;}body.section-emissions .primary-tabs span.themes a{background:url(/sites/all/themes/franceculture/images/tab-theme.png) no-repeat 0 0;width:125px;height:26px;}body.section-emissions .primary-tabs span.themes a.active{background:url(/sites/all/themes/franceculture/images/tab-theme-active.png) no-repeat 0 0;}body.section-emissions .primary-tabs span.alpha a{background:url(/sites/all/themes/franceculture/images/tab-alpha.png) no-repeat 0 0;width:200px;height:26px;}body.section-emissions .primary-tabs span.alpha a.active{background:url(/sites/all/themes/franceculture/images/tab-alpha-active.png) no-repeat 0 0;}body.section-emissions .primary-tabs span.prod a{background:url(/sites/all/themes/franceculture/images/tab-prod.png) no-repeat 0 0;width:150px;height:26px;}body.section-emissions .primary-tabs span.prod a.active{background:url(/sites/all/themes/franceculture/images/tab-prod-active.png) no-repeat 0 0;}body.section-emissions .primary-tabs span.cle{background:url(/sites/all/themes/franceculture/images/tab-cle.png) no-repeat 0 0;width:490px;height:31px;color:#fff;font-size:11px;}body.section-emissions .primary-tabs span.cle input{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:2px 10px 3px 10px;float:left;width:225px;margin:5px 0 0 10px}body.section-emissions .primary-tabs span.cle input.submit{padding:0;border:none;margin:5px 0 0 2px;width:22px;height:22px;background-color:#773584;}body.section-emissions .primary-tabs span.cle span{margin:5px 0 0 10px;line-height:12px;}body.section-emissions .secondary-tabs{margin:10px 0 30px 0;color:#032649;font-weight:bold;}body.section-emissions .secondary-tabs a{margin:0 5px;letter-spacing:0.2px;}
-        body.emissions .list-rubrique li h2{margin-bottom:30px;}body.emissions .list-rubrique li h2.titre-barre{font-size:16px;}body.emissions .list-rubrique li li.clear{float:left;width:100%;height:40px;}body.emissions .list-rubrique li li.clear span{display:none;}body.emissions .list-rubrique li li.first{padding-left:0;margin-left:0;border-left:none;}body.emissions .list-rubrique li li{float:left;width:305px;border-left:1px solid #CFCFCF;margin:0 0 0 15px;padding:0 0 0 15px;color:#4D4D4D;font-size:11px;font-weight:bold;line-height:12px;}body.emissions .list-rubrique li li img{margin-bottom:5px;}body.emissions .list-rubrique li li h3{font-size:16px;margin:0 0 5px 0;}body.emissions .list-rubrique li li span{display:block;margin-bottom:5px;letter-spacing:-0.2px;}body.emissions .list-rubrique li li span.date{display:inline;}body.emissions .list-rubrique li li span.timer{margin:0 0 5px 0;display:inline;}body.emissions .list-rubrique li li span.timer img{margin-bottom:0;}body.emissions .list-rubrique li li p{font-weight:normal;margin-top:5px;}body.emissions .list-rubrique li li .rubrique{height:20px;}ul.views-view-grid li{float:left;width:305px;border-left:1px solid #CFCFCF;margin:0 0 0 15px;padding:0 0 0 15px;color:#4D4D4D;font-size:11px;font-weight:bold;line-height:12px;}ul.views-view-grid li.col-1{padding-left:0;margin-left:0;border-left:none;}ul.views-view-grid li.empty{float:left;width:100%;height:40px;}ul.views-view-grid li .rubrique{height:20px;}ul.views-view-grid li h3{font-size:16px;margin:0 0 5px 0;}ul.views-view-grid li span.date{display:inline;}ul.views-view-grid li span.timer{margin:0 0 5px 0;display:inline;}ul.views-view-grid li span.timer img{margin-bottom:0;}ul.views-view-grid li p{font-weight:normal;margin-top:5px;}div.views-view-grid-title{clear:left;margin-bottom:30px;}div.views-view-grid-title h2.titre-barre{font-size:16px;}
-        body.emissions .article-full{color:#262626;font-size:14px;margin-bottom:40px;}body.emissions .article-full p.theme{font-size:13px;margin-top:30px;}body.emissions .article-full p.theme a{font-size:12px;margin:0 2px;}body.emissions .bandeau{position:relative;margin-bottom:20px;margin-left:15px;}body.emissions .bandeau h1{position:absolute;top:0;left:0;margin-top:10px;margin-left:-10px;display:block;opacity:0.95;height:75px;color:#fff;padding:5px 10px 10px 20px;line-height:20px;max-width:300px;}body.emissions .bandeau h1 span{display:block;font-size:12px;color:#032649;font-weight:bold;}body.emissions .bandeau h1 .site{background:url(/sites/all/themes/franceculture/images/emission.gif) no-repeat 0 0;display:block;font-size:12px;text-align:center;width:132px;height:17px;line-height:15px;}body.emissions .bandeau .illu-small{position:absolute;top:0;right:0;margin:13px 13px 0 0;}body.emissions .bandeau p{background-color:#EBEBEB;color:#032649;padding:2px 10px;font-size:12px;font-weight:bold;}body.emissions .bandeau p span{margin-left:15px;}body.emissions .bandeau h1.docks{background-color:#29ABE2;}body.emissions .bandeau h1.chemins{background-color:#D9E021;}body.emissions .bandeau h1.theme1-131{background-color:#D2D721;}body.emissions .bandeau h1.theme1-130{background-color:#47758D;}body.emissions .bandeau h1.theme1-135{background-color:#1B97CD;}body.emissions .bandeau h1.theme1-132{background-color:#EED7A1;}body.emissions .bandeau h1.theme1-133{background-color:#EF6F60;}body.emissions .bandeau h1.theme1-289{background-color:#FFED00;}body.emissions .bandeau h1.theme1-290{background-color:#8E5698;}body.emissions .bandeau h1.theme1-134{background-color:#FBB03B;}body.emissions .bandeau div.image{height:100px;}
-        
-        
-        .titre-plus{margin:0 0 20px 0;}.titre-plus h2{color:#262626;font-size:24px;line-height:26px;}.titre-plus .date{margin-right:10px;}.titre-plus .listen{float:left;width:90px;text-align:center;}.titre-plus .listen span{color:#C1272D;font-size:11px;display:block;font-weight:bold;}body.emissions #content .rel-doc{margin-bottom:40px;}body.emissions #content .rel-doc li{float:left;width:215px;}body.emissions #content .rel-doc li.clear{float:left;width:100%;height:40px;}body.emissions #content .rel-doc li.clear span{display:none;}body.emissions #content .rel-doc p{float:right;width:110px;margin-right:5px;font-size:12px;color:#666666;display:inline;line-height:14px;}body.emissions #content .rel-doc p a{display:block;}body.emissions #content .rel-doc p span{display:block;margin-bottom:5px;color:#032649;}body.emissions #sidebar-right #block-fcbloc-emission-contact .block-content{padding:15px 0 0;}body.emissions #sidebar-right #block-fcbloc-emission-contact .grippie{width:240px;margin:0 25px;}body.emissions #sidebar-right #block-fcbloc-emission-contact #edit-mollom-captcha-wrapper .description{width:240px;margin:0 25px;}
-        .node-rf_diffusion .rel-sites a{display:block;}.node-rf_diffusion .rel-sites a.timer{margin-left:0;}.node-rf_diffusion .rel-sites li{margin-bottom:20px;}.node-rf_diffusion .rel-sites li.last{margin-bottom:0;}
-        span.views-field-field-diffusion-date-debut-fin-value span.date-display-single{font-size:11px;font-weight:bold;}
-        p.invites{margin-top:15px;}
-        body.mini-site #content-top{position:relative;background-color:#f1ebf3;padding:15px;margin-bottom:30px;}body.mini-site h1{color:#773584;margin-bottom:0;}body.mini-site .biographie{margin-bottom:20px;}body.mini-site .biographie h2{font-size:24px;line-height:26px;letter-spacing:0.2px;color:#262626;}body.mini-site .biographie p.infos{color:#4D4D4D;font-size:12px;margin-bottom:10px;}body.mini-site .biographie p.infos span{color:#808080;font-style:italic;display:block;}body.mini-site .biographie p{color:#262626;font-size:14px;line-height:18px;}
-        body.culture #content-top,body.culture-accueil h1#page-title{position:relative;background-color:#f1ebf3;padding:15px 15px 0;margin:0 0 15px 0;border-top:1px #CFCFCF solid;}body.culture #content-top .block{height:auto;min-height:0;margin-bottom:0;}body.culture #content-top #block-fc_cultureac-culture-module{margin:0 -15px;background:white;}body.culture h1{color:#773584;margin:0 0 15px;}body.culture-accueil h1#page-title{padding:15px;}body.culture-accueil h2,body.culture-accueil h3{font-size:16px;}body.culture-accueil .more{font-size:11px;text-align:right;}body.culture-accueil li p{font-size:12px;line-height:15px;}body.culture .view-id-cultureac_term .view-content p.rubrique{clear:left;}
-        body.section #content-top{position:relative;background-color:#f1ebf3;padding:15px 15px 0 15px;margin:0 0 15px 0;}
-        body.module #content-top{position:relative;background-color:#f1ebf3;padding:15px 15px 0 15px;margin:0 0 15px 0;}
-        body.culture .primary-tabs{width:970px;height:31px;margin:0;}body.culture .primary-tabs span{float:left;}body.culture .primary-tabs span a{display:block;text-align:center;font-size:16px;padding-top:5px;}body.culture .primary-tabs span a:hover{text-decoration:none;}body.culture .primary-tabs span a{background:url(/sites/all/themes/franceculture/images/tab-sec.png) no-repeat 0 0;width:240px;height:26px;}body.culture .primary-tabs span a.active{background:url(/sites/all/themes/franceculture/images/tab-sec-active.png) no-repeat 0 0;}body.culture .secondary-tabs{margin:10px 0 30px 0;color:#032649;font-weight:bold;}body.culture .secondary-tabs a{margin:0 5px;letter-spacing:0.2px;}
-        .first-article{border-right:1px solid #f1ebf3;border-left:1px solid #f1ebf3;border-bottom:1px solid #CFCFCF;margin-bottom:20px;padding:5px 15px 20px;}.first-article img{float:left;margin-right:10px;}.first-article h2{font-size:24px;margin-bottom:10px;color:#262626;}.first-article h3{font-size:14px;margin-bottom:5px;color:#262626;}body.culture .first-article p{font-size:14px;line-height:18px;}body.culture .first-article .sousthemes{margin-bottom:15px;}.first-article p{font-size:12px;color:#262626;line-height:15px;}
-        body.culture .article-teaser{margin-bottom:20px;}body.culture .article-teaser h2{font-size:24px;margin-bottom:5px;color:#262626;}body.culture .article-teaser p{font-weight:bold;}body.culture .article-full .illustration{float:left;margin:0 15px 25px 0;}body.culture .article-full p,body.node-type-fc-cours#tinymce p{font-size:14px;line-height:18px;color:#262626;}
-        body.qr .tri-qr{margin-bottom:60px;color:#262626;font-size:14px;}body.qr .tri-qr h2{font-size:24px;line-height:26px;letter-spacing:0.2px;color:#262626;margin-bottom:30px;}body.qr .tri-qr p{display:block;margin:0 0 5px;}body.qr .tri-qr span.floating-select{float:left;width:300px;margin-right:20px;margin-top:20px;}body.qr .tri-qr label{display:block;color:#262626;font-size:14px;margin-bottom:5px;}body.qr .tri-qr select{border-top:1px solid #CCCCCC;border-left:1px solid #CCCCCC;border-bottom:1px solid #666666;border-right:1px solid #666666;padding:2px 10px 3px 10px;width:250px;margin:0 10px 5px 0;}body.qr .tri-qr input.submit{background:url(/sites/all/themes/franceculture/images/btn-modifier.png) no-repeat 0 0;padding:3px 13px 4px;font-weight:bold;color:#fff;border:none;cursor:pointer;}body.qr .tri-qr input.submit:hover{background-position:0 -25px;text-decoration:none;}
-        body.qr .all-qr{margin-bottom:40px;}body.qr .all-qr .post{margin-bottom:20px;border-bottom:1px solid #CFCFCF;padding-bottom:15px;}body.qr .all-qr .post .submited{color:#000;font-size:12px;margin-bottom:10px;display:block;}body.qr .all-qr .post .submited .quiz{color:#773584;font-size:11px;font-weight:normal;margin-left:10px;}body.qr .all-qr .post .auth{font-weight:bold;color:#032649;}body.qr .all-qr .post .submited .date{margin-left:5px;}body.qr .all-qr .post p{font-size:12px;line-height:15px;color:#262626;margin-left:55px;}body.qr .all-qr .q-r{float:right;margin:00;font-size:12px;font-weight:bold;height:40px;}body.qr .all-qr .q-r span{background:url(/sites/all/themes/franceculture/images/answer-big.png);padding:5px 13px 15px 13px;margin-right:10px;color:#773584;}body.qr .all-qr .q-r a{background:url(/sites/all/themes/franceculture/images/btn-modifier.png) no-repeat 0 0;padding:5px 13px;color:#fff;}body.qr .all-qr .q-r a:hover{background-position:0 -25px;text-decoration:none;}body.qr .all-qr .q-r span.none{background:#e4d7e6 none;padding:5px 13px;}
-        .validation h2{font-size:24px;color:#262626;margin:20px 0 30px 0;}.validation img{float:left;margin-right:10px;}.validation .end{color:#773584;font-size:20px;margin-bottom:15px;}.validation p{color:#262626;font-size:14px;line-height:18px;margin-bottom:15px;}.validation .score span{color:#929497;font-size:19px;}.validation .liens{margin:30px 0 0 0;}.validation .liens a{background:url(/sites/all/themes/franceculture/images/btn-large.png) no-repeat 0 0;padding:5px 23px;text-align:center;color:#fff;}.validation a.facelien{background:url(/sites/all/themes/franceculture/images/facebook.png) no-repeat 0 0;padding:5px 33px 5px 50px;margin-right:20px;}.validation .form-com{margin:50px 0 20px 0;}.validation .form-com span.floating-select{float:left;width:300px;margin-right:20px;margin-top:20px;}.validation .form-com .desc{color:#4D4D4D;font-size:12px;font-style:italic;}
-         .quiz-q{margin:40px 0;position:relative;}.quiz-q fieldset{border:3px solid #773584;padding:20px 20px 10px 20px;}.quiz-q legend{font-size:12px;color:#773584;font-weight:bold;padding:0 0.5em;}.quiz-q img{float:left;margin:0 20px 0 0;}.quiz-q h3{color:#262626;font-size:16px;margin-bottom:10px;}.quiz-q p{font-size:14px;color:#262626;}.quiz-q .date{margin-left:5px;}.quiz-q .q-r{margin:20px 0 0 0;font-size:12px;font-weight:bold;float:right;}.quiz-q .q-r span{background:url(/sites/all/themes/franceculture/images/answer-big.png) no-repeat;padding:5px 13px 15px 13px;margin-right:10px;color:#773584;display:inline-block;height:15px;}.quiz-q .q-r a{background:url(/sites/all/themes/franceculture/images/btn-modifier.png) no-repeat 0 0;padding:5px 13px 5px 13px;color:#fff;display:inline-block;margin-bottom:10px;height:15px;}.quiz-q .q-r a:hover{background-position:0 -25px;text-decoration:none;}
-         .questionnaire{position:relative;margin-left:50px;}.questionnaire h3{color:#4D4D4D;font-size:14px;margin-bottom:10px;}.questionnaire .num{position:absolute;top:0;left:0;margin-left:-50px;color:#A6A8AB;font-size:14px;}.questionnaire img{display:block;margin-bottom:10px;}.questionnaire label{color:#4D4D4D;font-size:12px;}.questionnaire input.form-submit{background:url(/sites/all/themes/franceculture/images/btn-modifier.png) no-repeat scroll 0 0;border:none;color:#FFFFFF;cursor:pointer;font-weight:bold;padding:3px 13px 4px;display:block;margin-top:30px;text-align:center;width:81px;}.questionnaire input.form-submit:hover{background-position:0 -25px;text-decoration:none;}.questionnaire .form-radios,.questionnaire .form-checkboxes,#multichoice-render-question-form .form-radios,#multichoice-render-question-form .form-checkboxes{clear:both;}
-        body.qr .com{margin-bottom:40px;}body.qr .com .post{margin-bottom:20px;border-bottom:1px solid #CFCFCF;padding-bottom:15px;}body.qr .com .post .submited{color:#000;font-size:14px;margin-bottom:10px;display:block;}body.qr .com .post .submited .quiz{color:#773584;font-size:11px;font-weight:normal;margin-left:10px;}body.qr .com .post .auth{font-weight:bold;color:#032649;}body.qr .com .post .submited .date{margin-left:5px;}body.qr .com .post p{font-size:14px;line-height:18px;color:#262626;margin-left:55px;}body.qr .com .quiz-go{float:right;background:url(/sites/all/themes/franceculture/images/quiz-go.png) no-repeat 0 0;display:block;padding:5px 20px;color:#fff;margin-top:15px;}body.qr .com .quiz-go:hover{background-position:0 -25px;text-decoration:none;}body.qr .com .best{background-color:#f6f1f7;padding:15px 25px;}body.qr .com .best .meilleure{color:#773584;font-size:11px;font-weight:normal;}
-        .rubrique-culture li{float:left;width:300px;position:relative;height:435px;margin-bottom:20px;}.rubrique-culture li.left{margin-right:40px;}.rubrique-culture li h2,.rubrique-culture li h3{font-size:16px;}.rubrique-culture li p{color:#4D4D4D;}.rubrique-culture li .more{font-size:11px;position:absolute;bottom:0;right:0;}
-        body.culture .list-rubrique li{margin-top:10px;clear:left;}body.culture .list-rubrique li img.illustration{float:left;margin:0 15px 15px 0;}body.culture .list-rubrique li .auteur{display:block;margin-bottom:15px;}
-        body.culture .list-article li{border-top:1px solid #CFCFCF;margin-top:5px;padding-top:10px;}body.culture .list-article li.first{border-top-width:0;}body.culture .list-article li img{float:left;margin:0 15px 15px 0;}body.culture .list-article li .auteur{display:block;margin-bottom:15px;}
-        .rel-quiz{margin:40px 0;clear:both;}.rel-quiz h3{font-size:14px;}.rel-quiz .quiz-go{float:right;background:url(/sites/all/themes/franceculture/images/quiz-go.png) no-repeat 0 0;display:block;padding:5px 16px;color:#fff;margin-top:15px;}
-        .liste-cours{margin:20px 0;}body.culture .liste-cours li{border-bottom:1px solid #CFCFCF;margin-bottom:15px;padding-bottom:10px;}
-        
-        .profil-infos{margin-bottom:30px;}.profil-infos img{float:left;margin-right:10px;}.profil-infos p{color:#262626;margin-bottom:15px;font-size:14px;}.profil-infos a.submit{float:right;background:url(/sites/all/themes/franceculture/images/btn-large.png) no-repeat 0 0;padding:4px 10px;text-align:center;width:140px;color:#fff;}.profil-infos a.submit.larger{background-image:url(/sites/all/themes/franceculture/images/btn-larger.png);width:180px;}.profil-infos a.submit:hover{background-position:0 -25px;text-decoration:none;}.profil-infos a.facebook-modif{float:right;background:url(/sites/all/themes/franceculture/images/btn-fbconnect-modification.png) no-repeat 0 0;padding:3px 5px 3px 25px;text-align:center;width:170px;color:#fff;font-size:11px;}.profil-infos a.facebook-modif:hover{background-position:0 -23px;text-decoration:none;}
-        .user-lecture{margin-bottom:30px;}.user-lecture img{float:left;margin-right:10px;}.user-lecture h3{font-size:16px;}.user-lecture .date{display:block;}.user-lecture .more{margin:50px 0 0 0;text-align:right;}#fc-quelisentils-que-lisez-vous span.date{display:inline;}.user-lecture .avatars{width:530px;margin:0 0 0 auto;}.user-lecture .avatars li{float:left;width:130px;margin-right:2px;clear:none;padding:0;}.user-lecture .more-review,.user-lecture .more-avatar{clear:both;}.user-lecture .unfold,.view-quelisentils .unfold,#personne-articles .unfold{background:url(/sites/all/themes/franceculture/images/urg-down.png) no-repeat 100% 4px;padding-right:10px;}.user-lecture .fold,.view-quelisentils .fold,#personne-articles .fold{background:url(/sites/all/themes/franceculture/images/urg-up.png) no-repeat 100% 4px;padding-right:10px;}
-        .user-question{margin-bottom:30px;clear:both;}.user-question ul{margin-top:20px;}.user-question li{width:300px;float:left;}.user-question li.border{padding-left:20px;margin-left:19px;border-left:1px solid #CFCFCF;}.user-question li h3 a{display:block;}.user-question .more-link{margin:20px 0 0 0;text-align:right;clear:left;}
-        .user-com{margin-bottom:30px;clear:both;}.user-com li{margin-bottom:20px;}.user-com .date{display:block;}.user-com h3 a{display:block;font-size:14px;}
-        .user-agenda{margin-bottom:30px;}.user-agenda ul{margin-top:20px;}.user-agenda li{width:300px;float:left;padding-bottom:5px;}.user-agenda li.border{padding-left:20px;margin-left:19px;border-left:1px solid #CFCFCF;}.user-agenda li.none{clear:left;}.user-agenda .more{margin:20px 0 0 0;text-align:right;float:right;}
-        .infos-connexion{margin-bottom:30px;}.infos-connexion h2{margin-bottom:20px;}.infos-connexion label{color:#262626;float:left;margin:0 10px 3px 0;line-height:24px;width:330px;text-align:right;font-size:13px;}.infos-connexion input{border-right:1px solid #CCCCCC;padding:3px 10px;width:280px;margin-bottom:3px;}.infos-connexion .description{margin-left:340px;color:#808080;font-size:12px;font-style:italic;}.infos-connexion span.password-strength,.infos-connexion span.password-confirm,.infos-connexion div.password-description{margin-left:340px;display:none;}
-        .infos-vous{margin-bottom:30px;}.infos-vous h2{margin-bottom:20px;}.infos-vous img{margin-bottom:3px;margin-left:340px;}.infos-vous label{color:#262626;float:left;margin:0 10px 3px 0;line-height:24px;width:330px;text-align:right;font-size:13px;}.infos-vous label.option{width:640px;font-size:12px;line-height:12px;margin-right:2px;}.infos-vous label.option input{width:15px;margin:0 0 3px 2px;float:right;}.infos-vous input{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:3px 10px;width:280px;margin-bottom:3px;}.infos-vous input.submit{padding:0;border:none;margin:0 0 3px 3px;width:71px;height:25px;background-color:#773584;}.infos-vous input.submit-v{padding:0;border:none;margin:20px 20px 3px 3px;width:71px;height:25px;background-color:#773584;float:right;}.infos-vous select{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:3px 10px;width:302px;margin-bottom:3px;}.infos-vous textarea{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:3px 10px;width:280px;margin-bottom:20px;}.infos-vous .grippie{width:300px;margin:0 0 3px 340px;display:inline-block;}.infos-vous .resizable-textarea{display:inline;}.infos-vous .resizable-textarea textarea{width:280px!important;}.infos-vous .description{margin-left:320px;color:#808080;font-size:12px;font-style:italic;}.infos-vous #edit-contact-1-wrapper .description{display:inline-block;}
-        .infos-vous fieldset{display:none;}.infos-vous input.focusField{color:#fff;}html.js .infos-vous input.form-autocomplete{background-position:100% 6px}html.js .infos-vous input.throbbing{background-position:100% -14px}
-
-				body.page-contact h1#page-title{display:none;}body.page-contact h1{color:#773584;}.ecrire{float:left;width:405px;}.ecrire{margin-bottom:30px;}.ecrire label{color:#262626;float:left;margin:0 10px 3px 0;line-height:24px;width:150px;text-align:right;font-size:13px;font-weight:normal;}.ecrire label.option{float:right;}.ecrire label.option input{width:12px;height:12px;padding:0;}.ecrire input{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:3px 10px;width:220px;margin-bottom:3px;}.ecrire select{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:3px 10px;width:242px;margin-bottom:3px;}.ecrire textarea{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:3px 10px;width:220px;}.ecrire input.submit-v{padding:0;border:none;margin:10px 3px 0 3px;width:71px;height:25px;background-color:#773584;float:right;}.ecrire-desc{float:left;margin-left:10px;padding-left:19px;width:220px;border-left:1px solid #CFCFCF;}.ecrire-desc p{margin-bottom:10px;}.ecrire-desc li{margin-bottom:10px;list-style-type:disc;list-style-position:inside;}.ecrire .grippie{width:240px;margin:0 0 3px 160px;display:inline-block;}.ecrire .resizable-textarea{display:inline;}.ecrire .resizable-textarea textarea{width:220px!important;height:50px;}.ecrire .form-item{margin-bottom:0;margin-top:0;}.ecrire input.focusField{color:#fff;}
-
-        body.frequence h1{color:#773584;}body.frequence #content-inner p{color:#262626;margin-bottom:10px;}body.frequence #content-inner label{float:left;margin:0 10px 10px 0;line-height:24px;}body.frequence #content-inner input{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:3px 10px 3px 10px;float:left;width:145px;margin-bottom:10px;}body.frequence #content-inner input.submit{padding:0;border:none;margin:0 0 10px 15px;width:103px;height:26px;background-color:#773584;}body.frequence #content-inner p.loc{font-size:14px;border-bottom:1px solid #CFCFCF;padding-bottom:5px;clear:both;}body.frequence #content-inner p.loc span{color:#773584;font-weight:bold;}
-        
-        body.section-votre-agenda #content-top{position:relative;background-color:#f1ebf3;padding:15px;margin-bottom:30px;}body.section-votre-agenda h1{color:#773584;margin-bottom:0;}body.section-votre-agenda .script-read a.prev,body.section-votre-agenda .script-read a.prevPage{display:block;width:15px;height:15px;background:url(/sites/all/themes/franceculture/images/script-scroll-left.png) no-repeat;position:absolute;top:0;left:0;cursor:pointer;z-index:10;margin-top:105px;margin-left:-7px;}body.section-votre-agenda .script-read a.disabled{visibility:hidden !important;}body.section-votre-agenda .script-read a.next,body.section-votre-agenda .script-read a.nextPage{background:url(/sites/all/themes/franceculture/images/script-scroll-right.png);display:block;width:15px;height:15px;position:absolute;top:0;right:0;cursor:pointer;z-index:10;margin-top:105px;margin-right:-7px;}body.section-votre-agenda .script-read div.scrollable{position:relative;overflow:hidden;width:960px;height:165px;margin:10px 0 0 0;background-color:#fff;}body.section-votre-agenda #content-top .script-read ol{margin:0;}body.section-votre-agenda .script-read .thumbs{position:absolute;width:10000em;clear:both;}body.section-votre-agenda .script-read .thumbs li{width:210px;height:150px;cursor:pointer;margin:15px 0 0 0;float:left;padding:0 15px 0 15px;position:relative;line-height:15px;}body.section-votre-agenda .script-read .thumbs li .num{position:absolute;bottom:0;left:0;margin:0 15px;}body.section-votre-agenda .script-read .thumbs li img{float:left;margin-right:10px;}body.section-votre-agenda .script-read .thumbs li h2{font-size:12px;line-height:15px;}body.section-votre-agenda div.agenda_error{background:#FFF3F6 url(/sites/all/themes/franceculture/images/error.png) no-repeat .5em .45em;border:1px solid #C00000;color:#C00000;}body.section-votre-agenda div.agenda_error a{text-decoration:underline;}body.section-votre-agenda form input.focusField{color:#fff;}
-        .board{margin-bottom:60px;}.board form{margin:0;}.board .ou{float:left;width:215px;background-color:#EBEBEB;height:230px;}.board .quand{float:left;width:215px;margin:0 5px;background-color:#EBEBEB;height:230px;}.board .quoi{float:left;width:215px;background-color:#EBEBEB;height:230px;}.board h3{text-align:center;margin-bottom:5px;}.board select{border-top:1px solid #CCCCCC;border-left:1px solid #CCCCCC;border-bottom:1px solid #666666;border-right:1px solid #666666;padding:2px 10px 3px 10px;width:190px;margin:0 10px 5px 10px;}.board label{font-size:14px;color:#4D4D4D;font-weight:normal;}.board .ou img{margin:0 10px;}.board .quand label{float:left;margin:0 3px 10px 10px;}.board .quand input{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:2px 10px;float:left;width:150px;margin-bottom:10px;}.board .quand input.submit{padding:0;border:none;margin:0 0 11px 7px;width:22px;height:22px;background-color:#773584;}.board .quoi input{margin-bottom:5px;}.board .quoi label{margin:0 0 5px 5px;}.board .s-submit{padding:0;border:none;margin:20px 0 0 2px;width:103px;height:26px;background-color:#773584;float:right;}.board .quoi label.option{display:block;}.board .ou .form-item{margin:0;}.board .quand #edit-date-min-value-wrapper div.description,.board .quand #edit-date-max-value-wrapper div.description{display:none;}
-        body.section-votre-agenda .list-article li{border-top:1px solid #CFCFCF;margin-top:5px;padding-top:10px;}body.section-votre-agenda .list-article li img{float:left;margin:0 15px 15px 0;}body.section-votre-agenda .list-article li .auteur{display:block;margin-bottom:15px;}
-				form#views-exposed-form-evenement-fo-liste-block-1 .views-exposed-form .views-exposed-widget{width:100%;}
-        
-        body.node-type-rf-article #content .article-teaser{margin:0 0 20px 0;}body.node-type-rf-article #content .article-teaser p{margin:0 0 10px 0;}body.node-type-rf-article #content .article-teaser .date{display:block;margin:0 0 10px 0;}body.node-type-rf-article #content p{color:#262626;font-size:14px;line-height:18px;}body.node-type-rf-article #content .article-full p,body.node-type-rf-article#tinymce p{margin:0 0 10px 0;}body.node-type-rf-article #content .article-full .large{width:640px;}body.node-type-rf-article #content .article-full .small{width:320px;}body.node-type-rf-article #content .article-full .dnd-drop-wrapper{position:relative;float:left;margin:0 15px 25px 0;}body.node-type-rf-article #content .article-full .opaque p{color:#fff;font-weight:bold;font-style:italic;padding:5px 10px 10px 10px;font-size:12px;margin:0;}body.node-type-rf-article #content .article-full .opaque span{font-style:normal;text-transform:uppercase;font-size:9px;margin-left:5px;}body.node-type-rf-article #content .article-full .video .opaque{margin-bottom:33px;}body.node-type-rf-article #content .article-full p.theme,body.node-type-rf-billet-blog #content p.theme{clear:both;font-size:13px;}body.node-type-rf-article #content .article-full p.theme a,body.node-type-rf-billet-blog #content p.theme a{font-size:12px;margin:0 2px;}body.node-type-rf-article #content .article-full p.auteur{float:right;margin:0 0 8px 0;}
-        body.node-type-rf-article #content .article-full .list-rubrique li{margin-bottom:20px;}body.node-type-rf-article #content .article-full .list-rubrique li p{color:#4D4D4D;font-size:12px;line-height:14px;margin-bottom:20px;}body.node-type-rf-article #content .article-full .list-rubrique li a.title{font-size:12px;display:block;margin-bottom:5px;}body.node-type-rf-article #content .article-full .list-rubrique li a.timer,body.node-type-rf-article #content .article-full .list-rubrique li span.date{display:block;}body.node-type-rf-article #content .article-full .list-rubrique li .timer{margin:0;}body.node-type-rf-article #content .article-full .list-rubrique li .image{margin-bottom:10px;}body.node-type-rf-article #content .article-full .list-rubrique li .image p{margin:0 0 0 110px;}body.node-type-rf-article #content .article-full .field-field-article-image-page div div{line-height:1px;}
-        body.node-type-rf-article #content .rel-liens{margin-bottom:0px;}body.node-type-rf-article #content .rel-liens div{margin-bottom:20px;}body.node-type-rf-article #content .rel-liens div a{font-size:12px;display:block;margin:0 0 5px 0;}
-        body.node-type-rf-article #content .rel-doc{margin-bottom:40px;}body.node-type-rf-article #content .rel-doc li{float:left;width:215px;margin-bottom:20px;}body.node-type-rf-article #content .rel-doc li.clear{float:left;width:100%;height:40px;}body.node-type-rf-article #content .rel-doc p{float:right;width:100px;margin-right:10px;font-size:11px;color:#666666;display:inline;line-height:14px;}body.node-type-rf-article #content .rel-doc p a{font-size:12px;display:block;margin:0 0 5px 0;}body.node-type-rf-article #content .rel-doc p span{font-size:12px;font-style:italic;display:block;margin-top:5px;}.rel-doc .liste-clear{width:100% !important;}
-        body.section-liste-ecoute h1{background:url(/sites/all/themes/franceculture/images/liste-ecoute-title.png) no-repeat 0 0;color:#fff;text-align:center;height:45px;padding:15px 0 0 45px;}body.section-liste-ecoute #content-inner fieldset,body.section-liste-ecoute #edit-title-wrapper,body.section-liste-ecoute .vertical-tabs{display:none!important;}body.section-liste-ecoute #content #content-right{float:right;}body.section-liste-ecoute #content-right .block{background:url(/sites/all/themes/franceculture/images/leftgris-bg.png) repeat-y 0 0;line-height:14px;}body.section-liste-ecoute #content-right .block .block-inner{background:url(/sites/all/themes/franceculture/images/leftgris-bg-top.png) no-repeat 0 0;padding:5px 0 0 0;}body.section-liste-ecoute #content-right .block .title{background:url(/sites/all/themes/franceculture/images/titre-barre.gif) repeat-x 0 2px;color:#773584;font-weight:bold;font-size:13px;padding:0 30px 5px;text-align:center;}body.section-liste-ecoute #content-right .block .title{margin:0 10px 5px 10px;}body.section-liste-ecoute #content-right .block .title span{background-color:#ebebeb;padding:0 5px;letter-spacing:0;}body.section-liste-ecoute #content-right .block label{background:#ebebeb url(/sites/all/themes/franceculture/images/leftgris-bg-bottom.png) no-repeat 0 100%;padding:10px 0;display:block;margin:2px 0 0 0;text-align:center;}body.section-liste-ecoute #content-right .block ol{background:transparent url(/sites/all/themes/franceculture/images/leftgris-ul-top.png) no-repeat scroll 0 0;padding-top:1px;}body.section-liste-ecoute #content-right .block ol li{border-bottom:medium none;color:#4d4d4d;font-weight:normal;list-style-position:inside;list-style-type:decimal;margin-top:10px;}body.section-liste-ecoute #content-right .block li{margin:20px 20px 0;padding:0 0 15px 0;}body.section-liste-ecoute #content-right .block .closure{background:url(/sites/all/themes/franceculture/images/leftgris-bg-bottom.png) no-repeat 0 100%;height:30px;display:block;margin:5px 0 0 0;}
-        body.section-liste-ecoute .list-article li{border-bottom:1px solid #CFCFCF;margin-bottom:15px;padding-bottom:15px;}body.section-liste-ecoute table#field_liste_lecture_son_values tr.odd,body.section-liste-ecoute table#field_liste_lecture_son_values tr.even,body.section-liste-ecoute table#field_liste_lecture_abonnements_values tr.odd,body.section-liste-ecoute table#field_liste_lecture_abonnements_values tr.even{background-color:#FFFFFF;}body.section-liste-ecoute table#field_liste_lecture_son_values tr.odd .form-item,body.section-liste-ecoute table#field_liste_lecture_son_values tr.even .form-item{white-space:normal;}body.section-liste-ecoute table#field_liste_lecture_son_values tr.odd.content-multiple-removed-row,body.section-liste-ecoute table#field_liste_lecture_son_values tr.even.content-multiple-removed-row,body.section-liste-ecoute table#field_liste_lecture_abonnements_values tr.odd.content-multiple-removed-row,body.section-liste-ecoute table#field_liste_lecture_abonnements_values tr.even.content-multiple-removed-row{background-color:#FFFFCC;}body.section-liste-ecoute table#field_liste_lecture_abonnements_values .content-multiple-remove-button,body.section-liste-ecoute table#field_liste_lecture_son_values .content-multiple-remove-button{background-image:url(/sites/all/themes/franceculture/images/picto-supprimer.png);height:18px;width:18px;}body.section-liste-ecoute table#field_liste_lecture_abonnements_values .content-multiple-remove-button:hover,body.section-liste-ecoute table#field_liste_lecture_son_values .content-multiple-remove-button:hover{background-position:0 -18px;}body.section-liste-ecoute table#field_liste_lecture_abonnements_values .content-multiple-removed-row .content-multiple-remove-button,body.section-liste-ecoute table#field_liste_lecture_son_values .content-multiple-removed-row .content-multiple-remove-button{background-position:0 -36px;}body.section-liste-ecoute table#field_liste_lecture_abonnements_values .content-multiple-removed-row .content-multiple-remove-button:hover,body.section-liste-ecoute table#field_liste_lecture_son_values .content-multiple-removed-row .content-multiple-remove-button:hover{background-position:0 -54px;}body.section-liste-ecoute table#field_liste_lecture_son_values thead,body.section-liste-ecoute table#field_liste_lecture_abonnements_values thead{display:none;}body.section-liste-ecoute table#field_liste_lecture_son_values td,body.section-liste-ecoute table#field_liste_lecture_abonnements_values td{width:100%;}body.section-liste-ecoute table#field_liste_lecture_son_values td.content-multiple-drag{width:20px;}body.section-liste-ecoute table#field_liste_lecture_abonnements_values td.content-multiple-drag{display:none;}body.section-liste-ecoute table#field_liste_lecture_son_values .illustration{float:left;margin-right:20px;}body.section-liste-ecoute .form-item #autocomplete .reference-autocomplete{background:url(/sites/all/themes/franceculture/images/more-red.png) no-repeat right;padding:2px;margin:0px 2px;}body.section-liste-ecoute #node-form input.focusField,body.section-liste-ecoute #content-left .baladeur input.focusField{color:#fff;}html.js body.section-liste-ecoute input.form-autocomplete{background-position:100% 7px}html.js body.section-liste-ecoute input.throbbing{background-position:100% -14px}
-        .baladeur{color:#262626;line-height:18px;font-size:14px;width:600px;margin-left:10px;margin-bottom:50px;}body.section-liste-ecoute #content-left .baladeur input{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:4px 10px 5px 10px;float:left;width:125px;}body.section-liste-ecoute #content-left .baladeur input.submit{padding:0;border:none;margin:0 0 0 2px;width:120px;height:27px;background-color:#773584;}
-        body.section-liste-ecoute #content-left input{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:4px 10px 5px 10px;float:left;width:330px;}body.section-liste-ecoute #content-left input.submit{padding:0;border:none;margin:0 0 0 2px;width:26px;height:26px;background-color:#773584;}body.section-liste-ecoute table#field_liste_lecture_abonnements_values{margin:20px 0 40px 0;}body.section-liste-ecoute table#field_liste_lecture_abonnements_values tbody{border-top:none;}body.section-liste-ecoute table#field_liste_lecture_abonnements_values td div.noderef-view-wrapper{margin:5px 0;}body.section-liste-ecoute table#field_liste_lecture_abonnements_values td div.noderef-view-wrapper .form-item{white-space:normal;}body.section-liste-ecoute table#field_liste_lecture_abonnements_values td div.noderef-view-wrapper h3{font-size:16px;}body.section-liste-ecoute table#field_liste_lecture_abonnements_values td div.noderef-view-wrapper h3 span{font-size:11px;margin-left:10px;}body.section-liste-ecoute table#field_liste_lecture_abonnements_values td div.noderef-view-wrapper h3 span.author{color:#032649;font-weight:bold;}
-        
-        body.lecture h1{position:relative;background-color:#f1ebf3;padding:15px;color:#773584;margin-bottom:15px;}body.page-quelisentils h1,body.page-quelisentils-derniers-avis h1{margin-bottom:0;padding-bottom:0;}body.lecture #content-top{background-color:#f1ebf3;padding:1px 15px 15px;margin-bottom:30px;}body.lecture .script-read a.prev,body.lecture .script-read a.prevPage{display:block;width:15px;height:15px;background:url(/sites/all/themes/franceculture/images/script-scroll-left.png) no-repeat;position:absolute;top:0;left:0;cursor:pointer;z-index:7;margin-top:105px;margin-left:-7px;}body.lecture .script-read a.disabled{visibility:hidden !important;}body.lecture .script-read a.next,body.lecture .script-read a.nextPage{background:url(/sites/all/themes/franceculture/images/script-scroll-right.png);display:block;width:15px;height:15px;position:absolute;top:0;right:0;cursor:pointer;z-index:7;margin-top:105px;margin-right:-7px;}body.lecture .script-read div.scrollable{position:relative;overflow:hidden;width:960px;height:330px;margin:10px 0 0 0;background-color:#fff;}body.lecture #content-top .script-read ol{margin:0;}body.lecture .script-read .thumbs{position:absolute;width:10000em;clear:both;}body.lecture .script-read .thumbs li{width:210px;height:285px;cursor:pointer;margin:15px 0;float:left;padding:0 15px 15px 15px;border-right:1px solid #CFCFCF;position:relative;}body.lecture .script-read .thumbs li .num{position:absolute;bottom:0;left:0;margin:0 15px;}body.lecture .script-read .writter{padding:0;border-right:none;margin:0 5px 5px 0;}body.lecture .script-read .book{padding:0;margin:0 0 5px 5px;}body.lecture #content-top .who-read{margin-top:20px;}body.lecture #content-top .who-read input{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:2px 10px 3px 10px;float:left;width:180px}body.lecture #content-top .who-read input.submit{padding:0;border:none;margin:0 0 0 2px;width:22px;height:22px;background-color:#773584;}body.lecture #content-top .who-read label{float:left;margin-right:20px;}body.lecture #content-top .who-read .date{font-size:12px;}body.lecture #content-right .block{background:url(/sites/all/themes/franceculture/images/leftgris-bg.png) repeat-y 0 0;line-height:14px;}body.lecture #content-right .block .block-inner{background:url(/sites/all/themes/franceculture/images/leftgris-bg-top.png) no-repeat 0 0;padding:5px 0 0 0;}body.lecture #content-right .block .title{background:url(/sites/all/themes/franceculture/images/titre-barre.gif) repeat-x 0 2px;color:#773584;font-weight:bold;font-size:13px;padding:0 0 5px 0;text-align:center;}body.lecture #content-right .block .title{margin:0 10px 5px 10px;}body.lecture #content-right .block .title span{background-color:#ebebeb;padding:0 5px;letter-spacing:0;}body.lecture #content-right .block .context{padding:0 10px 5px;}body.lecture #content-right .block label{background:#ebebeb url(/sites/all/themes/franceculture/images/leftgris-bg-bottom.png) no-repeat 0 100%;padding:10px 0;display:block;margin:2px 0 0 0;text-align:center;}body.lecture #content-right .block .block-content{background:url(/sites/all/themes/franceculture/images/leftgris-ul-top.png) no-repeat 0 0;padding:15px 20px 0;}body.lecture #content-right .block ol li{list-style-type:decimal;list-style-position:inside;margin-top:10px;font-weight:bold;color:#032649;}body.lecture #content-right .block li{border-bottom:1px solid #CFCFCF;margin:20px 0px 0 0px;padding:0 0 15px 0;border-top-width:0;}body.lecture #content-right .block li.first,#sidebar-right .block li.views-row-first{margin-top:0;}body.lecture #content-right .block .closure{background:url(/sites/all/themes/franceculture/images/leftgris-bg-bottom.png) no-repeat 0 100%;height:30px;display:block;margin:5px 0 0 0;}
-        body.lecture .node-rf_oeuvre{margin-bottom:20px;}body.lecture .node-rf_oeuvre h2.title{font-size:24px;line-height:26px;letter-spacing:0.2px;color:#262626;}body.lecture .node-rf_oeuvre p.infos{color:#4D4D4D;font-size:12px;margin-bottom:10px;}body.lecture .node-rf_oeuvre p.infos span{color:#808080;font-style:italic;display:block;}body.lecture .node-rf_oeuvre p,body.node-type-rf-oeuvre#tinymce p{color:#262626;font-size:14px;line-height:18px;}body.lecture .node-rf_oeuvre .illustration{margin:0 15px 15px 0;float:left;}body.lecture #content-inner .illustration{margin:0 15px 15px 0;float:left;}body.lecture .node-rf_oeuvre .theme a{float:right;font-size:11px;}.node-rf_oeuvre #quelisentils-oeuvre div.view-display-id-block_2{clear:left;padding-top:8px;}.node-rf_oeuvre #quelisentils-oeuvre div.views-row{clear:left;}.node-rf_oeuvre #quelisentils-oeuvre div.views-row p{margin-left:65px;}.node-rf_oeuvre #quelisentils-oeuvre p a{display:block;text-align:right;}.node-rf_oeuvre #quelisentils-oeuvre a.submit{margin-top:10px;text-align:center;}#quelisentils-oeuvre a.submit,#fc-quelisentils-que-lisez-vous a.submit,body.section-quelisentils a.submit{display:block;background:url(/sites/all/themes/franceculture/images/btn-large.png) no-repeat 0 0;padding:4px 10px;text-align:center;width:140px;color:#fff;}#quelisentils-oeuvre a.submit:hover,#fc-quelisentils-que-lisez-vous a.submit:hover,body.section-quelisentils a.submit:hover{background-position:0 -25px;text-decoration:none;}body.section-quelisentils .node-rf_oeuvre .theme a.submit{float:left;}
-        body.lecture #content .rel-doc{margin-bottom:40px;}body.lecture #content .rel-doc li{float:left;width:215px;padding-left:0;margin-left:0;border-left:0;}body.lecture #content .rel-doc li.clear{float:left;width:100%;height:40px;}body.lecture #content .rel-doc li.clear span{display:none;}body.lecture #content .rel-doc p{margin-right:5px;font-size:12px;color:#666666;line-height:14px;}body.lecture #content .rel-doc p a{display:block;}body.lecture #content .rel-doc p span{display:block;margin-bottom:5px;color:#032649;}
-        body.lecture #content .com{margin-bottom:40px;}body.lecture #content .com .img-float{margin-bottom:20px;}body.lecture #content .com .post{margin-bottom:20px;clear:left;}body.lecture #content .com .post .submited{color:#000;font-size:14px;margin-bottom:2px;display:block;}body.lecture #content .com .post .auth{font-weight:bold;color:#032649;}body.lecture #content .com .post .submited .date{margin-left:5px;}body.lecture #content .com .post p{font-size:12px;color:#4D4D4D;margin-left:55px;}
-        #fc-quelisentils-search-form table{width:100%;}#fc-quelisentils-search-form table .form-item{white-space:normal;}
-        #fc-quelisentils-que-lisez-vous{margin-top:20px;}body.page-accueil #fc-quelisentils-que-lisez-vous #edit-title-wrapper,body.page-accueil #fc-quelisentils-que-lisez-vous #autocomplete{display:block;margin:0;}body.node-type-rf-personne #fc-quelisentils-que-lisez-vous #edit-title-wrapper #edit-title,body.page-accueil #fc-quelisentils-que-lisez-vous #edit-title-wrapper #edit-title,body.page-taxonomy-term-131 #fc-quelisentils-que-lisez-vous #edit-title-wrapper #edit-title{width:178px;}#fc-quelisentils-que-lisez-vous #edit-submit{vertical-align:middle;float:none;border-width:0;width:auto;padding:0 0 0 2px;}#fc-quelisentils-que-lisez-vous #autocomplete img{clear:left;margin-right:5px;}#fc-quelisentils-que-lisez-vous #autocomplete li{height:32px;}#fc-quelisentils-que-lisez-vous #autocomplete{width:auto !important;background:white;}#fc-quelisentils-comment-form #edit-comment{width:650px;}
-        body.lecture .list-article li{border-top:1px solid #CFCFCF;margin-top:5px;padding-top:10px;}body.lecture .list-article li img{float:left;margin:0 15px 15px 0;}body.lecture .list-article li .auteur{display:block;margin-bottom:15px;}
-				body.node-type-rf-page h1{color:#773584;}body.node-type-rf-page #content-inner p{color:#262626;margin-bottom:10px;}
-    body.section-rubrique #content-right h2.title{background:url(/sites/all/themes/franceculture/images/titre-barre.gif) repeat-x 0 2px;color:#773584;font-weight:bold;font-size:13px;padding:0 0 5px 0;text-align:center;}body.section-rubrique #content-right h2.title span{background:#fff none;padding:0 5px;letter-spacing:0;display:inline-block;}body.section-rubrique #content-inner .view-display-id-attachment_1 .list-article{width:400px;}
-.script-vertical h2{margin-bottom:36px;}.script-vertical a.prev,.script-vertical a.prevPage{display:block;width:284px;height:15px;background:#773584 url(/sites/all/themes/franceculture/images/script-scroll-top.png) no-repeat;position:absolute;top:0;left:0;cursor:pointer;z-index:10;margin:42px 0 0 24px;}.script-vertical a.disabled{visibility:hidden !important;}.script-vertical a.next,.script-vertical a.nextPage{background:#773584 url(/sites/all/themes/franceculture/images/script-scroll-bottom.png);display:block;width:15px;height:15px;position:absolute;bottom:0;left:0;cursor:pointer;z-index:10;margin-bottom:-5px;margin-left:159px;}.script-vertical div.scrollable-vertical{position:relative;overflow:hidden;width:284px;height:330px;margin:10px 15px 0 15px;}#content-bottom .script-vertical ol{margin:0;}.script-vertical #thumbs-vertical{position:absolute;width:10000em;clear:both;}.script-vertical #thumbs-vertical li{width:284px;height:150px;padding:0 0 5px 0;}
-
-
-.jcarousel-clip{z-index:2;padding:0;margin:0;overflow:hidden;position:relative;width:658px;}.jcarousel-list{z-index:1;overflow:hidden;position:relative;}
-#wrap{position:relative;border:1px solid #CFCFCF;}.script .target{padding:5px 0;width:658px;background:url(/sites/all/themes/franceculture/images/script-bg.png) repeat-x 0 20px;margin:0 5px;}.script #mycarousel-prev{display:block;width:15px;height:15px;background:#773584 url(/sites/all/themes/franceculture/images/script-scroll-left.png) no-repeat;position:absolute;top:0;left:0;cursor:pointer;z-index:6;margin-left:-10px;text-indent:-10000px;font-size:0;margin-top:265px;}.script #mycarousel-next{background:#773584 url(/sites/all/themes/franceculture/images/script-scroll-right.png);display:block;width:15px;height:15px;position:absolute;top:0;right:0;cursor:pointer;z-index:6;margin-right:-10px;text-indent:-10000px;font-size:0;margin-top:265px;}.script #thumbs{height:240px;}.script #thumbs li h3{color:#032649;font-size:18px;line-height:16px;margin:10px 0 5px 0;}.script #thumbs li{float:left;width:658px;height:235px;cursor:pointer;padding:0 0 5px 0;}.script #thumbs li img{float:left;margin-right:10px;}.script #thumbs li p a{color:#4D4D4D;font-weight:normal;}.script .jcarousel-control{height:72px;}.script .jcarousel-control span{display:none;}.script .jcarousel-control h3{text-decoration:none;color:#032649;font-weight:bold;padding:0;display:inline;float:left;width:164px;height:65px;}.script .jcarousel-control a{cursor:pointer;padding:0 5px;display:block;color:#032649;width:153px;height:65px;border-right:1px solid #CFCFCF;}.script .jcarousel-control a:hover{text-decoration:none;border-bottom:7px solid #28042D;}.script .jcarousel-control .titre4 a{border-right:none;}.up1 .jcarousel-control .titre1 a{border-bottom:7px solid #28042D;}.up2 .jcarousel-control .titre2 a{border-bottom:7px solid #28042D;}.up3 .jcarousel-control .titre3 a{border-bottom:7px solid #28042D;}.up4 .jcarousel-control .titre4 a{border-bottom:7px solid #28042D;border-right:none;}
-.dnd-drop-wrapper{position:relative;float:left;margin:0 15px 25px 0;}.dnd-drop-wrapper .image img{display:block;}.dnd-drop-wrapper .image{display:table;width:1px;}.dnd-drop-wrapper .image .opaque{width:100%;background-color:#000;opacity:0.7;}.dnd-drop-wrapper .image .opaque p{color:#fff;font-weight:bold;font-style:italic;padding:5px 10px 10px 10px;font-size:12px;margin:0;}.dnd-drop-wrapper .image .opaque span{font-style:normal;text-transform:uppercase;font-size:9px;margin-left:5px;}.dnd-library-wrapper div.meta{margin-left:52px;}.node-type-rf-personne .dnd-fields-wrapper .mceLayout,.node-type-rf-personne .dnd-fields-wrapper .mceLayout iframe,.node-type-rf-oeuvre .dnd-fields-wrapper .mceLayout,.node-type-rf-oeuvre .dnd-fields-wrapper .mceLayout iframe,.node-type-rf-evenement .dnd-fields-wrapper .mceLayout,.node-type-rf-evenement .dnd-fields-wrapper .mceLayout iframe{width:400px !important;}.node-type-rf-billet-blog .dnd-fields-wrapper .mceLayout,.node-type-rf-billet-blog .dnd-fields-wrapper .mceLayout iframe{width:520px !important;}.dnd-fields-wrapper .mceLayout,.dnd-fields-wrapper .mceLayout iframe{width:657px !important;}.popups-box .popups-inner .dnd-fields-wrapper .mceLayout,.popups-box .popups-inner .dnd-fields-wrapper .mceLayout iframe{width:100% !important;}.mee-wrap-editor-library{float:none;}body#tinymce p{font-size:14px;}.mee-filter-form fieldset{display:none;}
-.dnd-drop-wrapper .atom-Video{width:480px;height:365px;}.dnd-drop-wrapper .atom-SoundSlide{width:560px;height:489px;}.dnd-drop-wrapper .atom-Audio{min-width:300px;min-height:20px;}#tinymce .dnd-drop-wrapper{position:relative;float:left;margin:0 15px 25px 0;border-bottom:green solid 10px;}
-div.view-dossier-fo-panes li{clear:both;}div.view-dossier-fo-panes img.imagecache-image_liste{margin-bottom:10px;}div.node-panel p.theme{margin-top:20px;}
-form#rf-userregister-form .infos-connexion input,form#fc-userregister-form-userprofile .infos-connexion input{width:200px;margin-bottom:0;}form#rf-userregister-form .infos-connexion input.idleField,form#fc-userregister-form-userprofile .infos-connexion input.idleField{border:1px solid #CCCCCC;}form#rf-userregister-form div.form-item,form#fc-userregister-form-userprofile div.form-item{margin:5px 0;clear:both;}form#rf-userregister-form .infos-connexion label,form#fc-userregister-form-userprofile .infos-connexion label{line-height:13px;width:158px;}form#rf-userregister-form .infos-connexion .description,form#fc-userregister-form-userprofile .infos-connexion .description{clear:both;margin-left:168px;font-size:11px;}form#rf-userregister-form .infos-connexion input.submit-v,form#fc-userregister-form-userprofile .infos-connexion input.submit-v{padding:0;border:none;margin:20px 20px 3px 3px;width:71px;height:25px;background-color:#773584;float:right;}form#rf-userregister-form .infos-connexion label.option,form#fc-userregister-form-userprofile .infos-connexion label.option{width:395px;font-size:12px;line-height:12px;margin-right:2px;display:block;}form#rf-userregister-form .infos-connexion label.option input,form#fc-userregister-form-userprofile .infos-connexion label.option input{width:15px;margin:0 0 3px 2px;float:right;}
-
-#sidebar-right .block-fc_widget_dailymotion,#sidebar-right .block-fc_widget_deezer{background-image:none;}
-#homebox.column-count-2 .homebox-column{width:48%;}#homebox table span a.flag-processed{white-space:nowrap;}#homebox table span.flag-flagged-message{left:-5px;}#homebox table span.flag-unflagged-message{left:-25px;}.portlet-content .views-processed .view-filters{display:none;}#homebox div.view-header{text-align:left;}
-body.section-search form#search-form input.form-text{float:left;height:14px;padding:5px;}body.section-search form#search-form input.submit-lancer{float:left;margin-left:3px;clear:right;}body.section-search div.box{clear:both;padding-top:10px;}body.section-search fieldset.search-advanced{clear:both;padding-top:10px;}
-.shoutbox-msg blockquote{color:#032649;font-weight:bold;font-size:12px;line-height:17px;}
-fieldset.group-mea tr .form-item .description,fieldset.vertical-tabs-group_mea tr .form-item .description{white-space:normal;}
-.node-form span.form-required{font-size:17px;}.node-form .form-item .required{background-color:#EBEBEB;border:1px solid #CCCCFF;}a.popups-reference{font-size:13px;line-height:40px;}#node-form #group-diffusion-generique-items{display:none;}
-.hierarchical-select-wrapper .hierarchical-select option.has-children{padding-right:14px;}
-#fchook-envoyer-diffusion-sms-form input{color:#999999;border-top:1px solid #666666;border-left:1px solid #666666;border-bottom:1px solid #CCCCCC;border-right:1px solid #CCCCCC;padding:4px 10px 5px 10px;float:left;width:125px;}#fchook-envoyer-diffusion-sms-form input.submit{padding:0;border:none;margin:0 0 0 2px;width:120px;height:27px;background-color:#773584;}#fchook-envoyer-diffusion-sms-form input.focusField{color:#fff;}
-.panel-pane.hidden-pane .pane-title:after{content:" statut:masqué";}.panel-pane.changed .pane-title:after{content:" statut:modifications non enregistrées";}.panel-pane.hidden-pane.changed .pane-title:after{content:" statut:masqué & modifié";}
-#ui-datepicker-div{width:200px;}.ui-datepicker-next label,.ui-datepicker-prev label{border:1px solid #d3d3d3;cursor:pointer;display:block;font-size:1em;height:1.4em;text-indent:-999999px;width:1.3em;}
-#edit-profile-commune-wrapper{display:none;}.label-nowrap{white-space:pre;}body{margin:0;padding:0;background:#fff;}body.blogs{margin:0px 0 0 0;background:#fff none;}body#tinymce,body#mceContentBody,body.mceContentBody,body#nodepicker{background:#fff none;}#page{margin:0 0 20px 0;padding:0;}#header{position:relative;height:155px;}#page{background:#fff url(/sites/all/themes/franceculture/images/body.png) no-repeat 50% -40px;margin:0 0 0px 0;padding:0;}body.blogs #page{background:#fff none;}#page-inner{margin:0 auto;padding:0;width:990px;}#main{width:990px;}#content{width:655px;margin-left:0;margin-right:-990px;float:left;overflow:visible;}body #content-bottom{margin:30px 0 0 0;}#content-top{padding:0 0 20px 0;background-color:#fff;}body #cb-left{width:314px;padding:5px 10px 0;float:left;position:relative;}body #block-views-lesplusconsultes-block_1,body #cb-right{width:314px;padding:5px 10px 0;float:left;}#sidebar-right{width:300px;margin-right:0;float:left;margin-left:690px;margin-right:-990px;overflow:visible;}#footer-top{margin:0 0 0 0;padding:0px 0 8px 0;width:990px;}#footer{color:#fff;height:75px;padding:25px 0 0 0;width:990px;}
-body.front #content,body.node-type-panel #content{width:670px;}body.front #content-inner{background:url(/sites/all/themes/franceculture/images/bg-content.png) repeat-y 0 0;}body.front #content-left,body.node-type-panel #content-left{width:400px;padding:0 18px 0 0;float:left;clear:left;}body.front #content-right,body.node-type-panel #content-right{width:235px;padding:0 0 0 17px;float:left;}body.node-type-panel .panel-pane,body.node-type-panel .panel-pane li{clear:both;}
-body.no-sidebars #content{width:990px;}body.no-sidebars #content-left{width:655px;padding:0 18px 0 0;float:left;}body.no-sidebars #content-right{width:300px;padding:0 0 0 17px;float:left;}
-body.not-front #content{padding-top:20px;position:relative;}body.not-front #content-inner{padding-top:15px;border-top:1px solid #CFCFCF;}
-body.section-rubrique #content{width:670px;}body.section-rubrique #content-right{width:234px;padding:0 0 0 35px;float:right;background:#fff url(/sites/all/themes/franceculture/images/bg-content-right.png) repeat-y 0 0;min-height:300px;height:auto !important;height:300px;margin-bottom:20px;}body.section-rubrique #content-inner{border-top-width:0;padding-top:0;}body.section-rubrique h1{border-top:1px solid #CFCFCF;padding-top:15px;}
-body.lecture #content-inner{padding-top:0;border-top-width:0;}body.lecture #content-right{float:right;}
-body.culture #content-inner{padding-top:0;border-top-width:0;}
-body.agenda #content-inner{padding-top:0;}
-body.section-podcasts #content-inner,body.section-podcast #content-inner{padding-top:0;}body.podcasts #content-left,body.podcasts #content-right{margin-top:20px;}
-div#grille-programmes #content-inner{padding-top:0;}
-body.emissions #content-left,body.emissions #content-right{margin-top:20px;}body.emissions #content-inner{padding-top:0;border-top-width:0;}
-body.article .article-full #content-left,body.node-type-panel .article-full #content-left{width:310px;padding:0 18px 0 0;float:left;}body.article .article-full #content-right,body.node-type-panel .article-full #content-right{width:310px;padding:0 0 0 17px;float:left;}
-body.profil #content{width:670px;}body.profil #content-left{width:400px;padding:0 17px 0 0;float:left;border-right:1px solid #CFCFCF;}body.profil #content-right{width:235px;padding:0 0 0 17px;float:left;}body.node-type-rf-personne #content{width:670px;}body.node-type-rf-personne #content-left{width:400px;padding:0 17px 0 0;float:left;border-right:1px solid #CFCFCF;overflow:hidden;}body.node-type-rf-personne #content-right{width:235px;padding:0 0 0 17px;float:left;}body.node-type-rf-personne #content-inner{border-top-width:0;}
-body.node-type-rf-evenement #content{width:670px;}body.node-type-rf-evenement #content-left{width:400px;padding:0 17px 0 0;float:left;border-right:1px solid #CFCFCF;overflow:hidden;}body.node-type-rf-evenement #content-right{width:235px;padding:0 0 0 17px;float:left;}
-body.node-type-rf-oeuvre #content{width:670px;}body.node-type-rf-oeuvre #content-left{width:400px;padding:0 17px 0 0;float:left;border-right:1px solid #CFCFCF;overflow:hidden;}body.node-type-rf-oeuvre #content-right{width:235px;padding:0 0 0 17px;float:left;}
-body.recherche #content{padding-top:0;position:relative;}body.recherche #content-inner{border-top:none;}
-body.mini-site #main{padding-top:90px;position:relative;}body.mini-site #main #content{position:static;padding-top:0;}body.mini-site #main #content #content-inner{border-top:0;}body.mini-site #main #content-top{position:absolute;top:0;left:0;width:960px;margin:20px 0 0 0;}
-body.blogs #header{position:relative;height:165px;margin-bottom:20px;}body.blogs #content-inner{padding-top:0;border-top:none;}
-body.page-node-edit #content,body.page-node-add #content{width:100%;}
-body.section-partenariats #content{width:670px;}body.section-partenariats #content-right{width:234px;padding:0 0 0 35px;float:right;background:#fff url(/sites/all/themes/franceculture/images/bg-content-right.png) repeat-y 0 0;min-height:300px;height:auto !important;height:300px;margin-bottom:20px;}body.section-partenariats #content-inner{border-top-width:0;padding-top:0;}body.section-partenariats h1{border-top:1px solid #CFCFCF;padding-top:15px;}
\ No newline at end of file
Binary file test/emission_fichiers/culture_les_retours_du_dimanche.jpg has changed
Binary file test/emission_fichiers/direct.png has changed
--- a/test/emission_fichiers/drupal.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,290 +0,0 @@
-// $Id: drupal.js,v 1.41.2.4 2009/07/21 08:59:10 goba Exp $
-
-var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'themes': {}, 'locale': {} };
-
-/**
- * Set the variable that indicates if JavaScript behaviors should be applied
- */
-Drupal.jsEnabled = true;
-
-/**
- * Attach all registered behaviors to a page element.
- *
- * Behaviors are event-triggered actions that attach to page elements, enhancing
- * default non-Javascript UIs. Behaviors are registered in the Drupal.behaviors
- * object as follows:
- * @code
- *    Drupal.behaviors.behaviorName = function () {
- *      ...
- *    };
- * @endcode
- *
- * Drupal.attachBehaviors is added below to the jQuery ready event and so
- * runs on initial page load. Developers implementing AHAH/AJAX in their
- * solutions should also call this function after new page content has been
- * loaded, feeding in an element to be processed, in order to attach all
- * behaviors to the new content.
- *
- * Behaviors should use a class in the form behaviorName-processed to ensure
- * the behavior is attached only once to a given element. (Doing so enables
- * the reprocessing of given elements, which may be needed on occasion despite
- * the ability to limit behavior attachment to a particular element.)
- *
- * @param context
- *   An element to attach behaviors to. If none is given, the document element
- *   is used.
- */
-Drupal.attachBehaviors = function(context) {
-  context = context || document;
-  // Execute all of them.
-  jQuery.each(Drupal.behaviors, function() {
-    this(context);
-  });
-};
-
-/**
- * Encode special characters in a plain-text string for display as HTML.
- */
-Drupal.checkPlain = function(str) {
-  str = String(str);
-  var replace = { '&': '&amp;', '"': '&quot;', '<': '&lt;', '>': '&gt;' };
-  for (var character in replace) {
-    var regex = new RegExp(character, 'g');
-    str = str.replace(regex, replace[character]);
-  }
-  return str;
-};
-
-/**
- * Translate strings to the page language or a given language.
- *
- * See the documentation of the server-side t() function for further details.
- *
- * @param str
- *   A string containing the English string to translate.
- * @param args
- *   An object of replacements pairs to make after translation. Incidences
- *   of any key in this array are replaced with the corresponding value.
- *   Based on the first character of the key, the value is escaped and/or themed:
- *    - !variable: inserted as is
- *    - @variable: escape plain text to HTML (Drupal.checkPlain)
- *    - %variable: escape text and theme as a placeholder for user-submitted
- *      content (checkPlain + Drupal.theme('placeholder'))
- * @return
- *   The translated string.
- */
-Drupal.t = function(str, args) {
-  // Fetch the localized version of the string.
-  if (Drupal.locale.strings && Drupal.locale.strings[str]) {
-    str = Drupal.locale.strings[str];
-  }
-
-  if (args) {
-    // Transform arguments before inserting them
-    for (var key in args) {
-      switch (key.charAt(0)) {
-        // Escaped only
-        case '@':
-          args[key] = Drupal.checkPlain(args[key]);
-        break;
-        // Pass-through
-        case '!':
-          break;
-        // Escaped and placeholder
-        case '%':
-        default:
-          args[key] = Drupal.theme('placeholder', args[key]);
-          break;
-      }
-      str = str.replace(key, args[key]);
-    }
-  }
-  return str;
-};
-
-/**
- * Format a string containing a count of items.
- *
- * This function ensures that the string is pluralized correctly. Since Drupal.t() is
- * called by this function, make sure not to pass already-localized strings to it.
- *
- * See the documentation of the server-side format_plural() function for further details.
- *
- * @param count
- *   The item count to display.
- * @param singular
- *   The string for the singular case. Please make sure it is clear this is
- *   singular, to ease translation (e.g. use "1 new comment" instead of "1 new").
- *   Do not use @count in the singular string.
- * @param plural
- *   The string for the plural case. Please make sure it is clear this is plural,
- *   to ease translation. Use @count in place of the item count, as in "@count
- *   new comments".
- * @param args
- *   An object of replacements pairs to make after translation. Incidences
- *   of any key in this array are replaced with the corresponding value.
- *   Based on the first character of the key, the value is escaped and/or themed:
- *    - !variable: inserted as is
- *    - @variable: escape plain text to HTML (Drupal.checkPlain)
- *    - %variable: escape text and theme as a placeholder for user-submitted
- *      content (checkPlain + Drupal.theme('placeholder'))
- *   Note that you do not need to include @count in this array.
- *   This replacement is done automatically for the plural case.
- * @return
- *   A translated string.
- */
-Drupal.formatPlural = function(count, singular, plural, args) {
-  var args = args || {};
-  args['@count'] = count;
-  // Determine the index of the plural form.
-  var index = Drupal.locale.pluralFormula ? Drupal.locale.pluralFormula(args['@count']) : ((args['@count'] == 1) ? 0 : 1);
-
-  if (index == 0) {
-    return Drupal.t(singular, args);
-  }
-  else if (index == 1) {
-    return Drupal.t(plural, args);
-  }
-  else {
-    args['@count['+ index +']'] = args['@count'];
-    delete args['@count'];
-    return Drupal.t(plural.replace('@count', '@count['+ index +']'));
-  }
-};
-
-/**
- * Generate the themed representation of a Drupal object.
- *
- * All requests for themed output must go through this function. It examines
- * the request and routes it to the appropriate theme function. If the current
- * theme does not provide an override function, the generic theme function is
- * called.
- *
- * For example, to retrieve the HTML that is output by theme_placeholder(text),
- * call Drupal.theme('placeholder', text).
- *
- * @param func
- *   The name of the theme function to call.
- * @param ...
- *   Additional arguments to pass along to the theme function.
- * @return
- *   Any data the theme function returns. This could be a plain HTML string,
- *   but also a complex object.
- */
-Drupal.theme = function(func) {
-  for (var i = 1, args = []; i < arguments.length; i++) {
-    args.push(arguments[i]);
-  }
-
-  return (Drupal.theme[func] || Drupal.theme.prototype[func]).apply(this, args);
-};
-
-/**
- * Parse a JSON response.
- *
- * The result is either the JSON object, or an object with 'status' 0 and 'data' an error message.
- */
-Drupal.parseJson = function (data) {
-  if ((data.substring(0, 1) != '{') && (data.substring(0, 1) != '[')) {
-    return { status: 0, data: data.length ? data : Drupal.t('Unspecified error') };
-  }
-  return eval('(' + data + ');');
-};
-
-/**
- * Freeze the current body height (as minimum height). Used to prevent
- * unnecessary upwards scrolling when doing DOM manipulations.
- */
-Drupal.freezeHeight = function () {
-  Drupal.unfreezeHeight();
-  var div = document.createElement('div');
-  $(div).css({
-    position: 'absolute',
-    top: '0px',
-    left: '0px',
-    width: '1px',
-    height: $('body').css('height')
-  }).attr('id', 'freeze-height');
-  $('body').append(div);
-};
-
-/**
- * Unfreeze the body height
- */
-Drupal.unfreezeHeight = function () {
-  $('#freeze-height').remove();
-};
-
-/**
- * Wrapper around encodeURIComponent() which avoids Apache quirks (equivalent of
- * drupal_urlencode() in PHP). This function should only be used on paths, not
- * on query string arguments.
- */
-Drupal.encodeURIComponent = function (item, uri) {
-  uri = uri || location.href;
-  item = encodeURIComponent(item).replace(/%2F/g, '/');
-  return (uri.indexOf('?q=') != -1) ? item : item.replace(/%26/g, '%2526').replace(/%23/g, '%2523').replace(/\/\//g, '/%252F');
-};
-
-/**
- * Get the text selection in a textarea.
- */
-Drupal.getSelection = function (element) {
-  if (typeof(element.selectionStart) != 'number' && document.selection) {
-    // The current selection
-    var range1 = document.selection.createRange();
-    var range2 = range1.duplicate();
-    // Select all text.
-    range2.moveToElementText(element);
-    // Now move 'dummy' end point to end point of original range.
-    range2.setEndPoint('EndToEnd', range1);
-    // Now we can calculate start and end points.
-    var start = range2.text.length - range1.text.length;
-    var end = start + range1.text.length;
-    return { 'start': start, 'end': end };
-  }
-  return { 'start': element.selectionStart, 'end': element.selectionEnd };
-};
-
-/**
- * Build an error message from ahah response.
- */
-Drupal.ahahError = function(xmlhttp, uri) {
-  if (xmlhttp.status == 200) {
-    if (jQuery.trim(xmlhttp.responseText)) {
-      var message = Drupal.t("An error occurred. \n@uri\n@text", {'@uri': uri, '@text': xmlhttp.responseText });
-    }
-    else {
-      var message = Drupal.t("An error occurred. \n@uri\n(no information available).", {'@uri': uri });
-    }
-  }
-  else {
-    var message = Drupal.t("An HTTP error @status occurred. \n@uri", {'@uri': uri, '@status': xmlhttp.status });
-  }
-  return message.replace(/\n/g, '<br />');
-}
-
-// Global Killswitch on the <html> element
-$(document.documentElement).addClass('js');
-// Attach all behaviors.
-$(document).ready(function() {
-  Drupal.attachBehaviors(this);
-});
-
-/**
- * The default themes.
- */
-Drupal.theme.prototype = {
-
-  /**
-   * Formats text for emphasized display in a placeholder inside a sentence.
-   *
-   * @param str
-   *   The text to format (plain-text).
-   * @return
-   *   The formatted text (html).
-   */
-  placeholder: function(str) {
-    return '<em>' + Drupal.checkPlain(str) + '</em>';
-  }
-};
--- a/test/emission_fichiers/fc_antidot_recherche.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,246 +0,0 @@
-// integration du suggest (module antidot)
-Drupal.behaviors.fc_antidot_recherche = function (){
-     
-    // recupère l'adresse du proxy
-    var urlP = Drupal.settings.adresseProxy;
-var as_pos = 0;	   
-var as_pos2 = 0;
- /**
-   * traitement de la sujestion sur le bloc de recherche 
-   * pour économiser des appels à antidot
-   * la requete est lancée si l'utilisateur saisi plus de 3 lettres
-   * elle n'est pas lancée si  :
-   * la dernière requete a retourné 0 ou un resultat et que le mot actuel est semblable au mot précedent+1car 
-   */   
-    var expression = new RegExp("^[\\s!&\"'(\\-\\_)=$^\*!:;,~~#{\\[\\|`\\\\^@\\]}¤£µ%§/.?<>\\+]*$", "g");
-    
-    //
-    $('#search_top_page').keyup(function(e){    	
-	if(e.keyCode>=48 || e.keyCode == 8){
-	    var queryBox = $('#search_top_page').val();
-	   	  // active le bouton de recherche en fonction de la pressence de mot clé
-	    if(expression.test(queryBox)){
-		$('#search_top_page-wrapper #edit-submit').attr('disabled', 'disabled');
-	    }else{
-		$('#search_top_page-wrapper #edit-submit').removeAttr('disabled');
-	    } 
-
-	    
-    	var prec = "";
-    	if(jQuery.trim(queryBox).length > 2){    
-    		if($('#SuggestPopupBox').length == 0){
-    			$('#search_top_page-wrapper').append('<div id="SuggestPopupBox"></div>');  
-    			// pour le stockage de la requete precedente
-    			$('#search_top_page-wrapper').append('<div id="SuggestPrecBox" style="display:none">'+queryBox+'</div>');
-    		}else{
-    			$('#SuggestPopupBox').css("display", 'block');
-    			prec = $('#SuggestPrecBox').text();
-    		}
-    		//si la recerche précédente avait la même racine et moins de 2 reponses on ne lance pas la requete    		
-
-    		if ($('#SuggestPopupBox ul li').length < 2 && prec !="" && queryBox.indexOf(prec) == 0){
-    			
-    			var suj = $('#SuggestPopupBox ul li').text();    			 	
-    			// si la sugestion est vide ou si elle n'est pas conforme au mot on cache la zone
-    			if ( prec == "" || suj=="" || suj.indexOf(queryBox) !=0 ){    				
-    				$('#SuggestPopupBox').css("display", 'none');
-    			} 
-    		} else {
-    			$('#SuggestPrecBox').text(queryBox);
-	    		// récupère le resultat de la sujestion
-			
-	    		$.getJSON(urlP+"?afs:service=254&afs:feed=chaineC&afs:query="+queryBox,function(data){
-	    			// s'il y a des sujestions on les traites puis affiche
-	    			if(data[1].length > 0){
-		    			$('#SuggestPopupBox').text(""); 		    			
-		    			var liste ="";
-		    			$.each(data[1], function(i, item) {	    			
-		    				liste += "<li class='suj-reponse'>"+item+"</li>";
-		    			});
-		    			$('#SuggestPopupBox').append("<ul>"+liste+"</ul>");		    			
-		    			// place dans la barre de recherche au clic sur une suj et reinitialise le bloc de recherche				   		
-					
-		    			 $('#SuggestPopupBox ul li').click(function(){	    			    			    	
-		    			    	var reponse = $(this).text();    			    	
-		    			    	$('#search_top_page').val(reponse);
-		    			    	$('#SuggestPopupBox').text("");
-			    	    		$('#SuggestPopupBox').css("display", 'none');
-			    	    		$('#SuggestPrecBox').text("");
-		    			    });
-		    			 
-	    			}else{
-	    				// sinon on masque le champ
-	    				$('#SuggestPopupBox').text("");
-	    	    		$('#SuggestPopupBox').css("display", 'none');	    	    		
-	    			}
-	    		});    
-    		}
-    		$('#SuggestPrecBox').text(queryBox);	
-   	}else{
-    		$('#SuggestPopupBox').text("");
-    		$('#SuggestPopupBox').css("display", 'none');	
-    		$('#SuggestPrecBox').text("");
-
-    	 }
-   }
-	});
-/* fin traitement de la sujestion sur le bloc de recherche  */ 
-$('#search_top_page').keypress(function(e){
-
-  if($('#SuggestPopupBox').text()!=''){
-   switch(e.keyCode){
-	//down
-    case 40:
-	if(as_pos<$('#SuggestPopupBox ul li').length){
-	   $('#SuggestPopupBox ul li:nth-child('+as_pos+')').removeClass('active');
-	   as_pos++;
-	   $('#SuggestPopupBox ul li:nth-child('+as_pos+')').addClass('active');
-	   var donne = $('#SuggestPopupBox ul li:nth-child('+as_pos+')').text();
-           $('#search_top_page').val(donne);
-	}
-    break;
-	//up
-    case 38:
-      if(as_pos>0){
-	$('#SuggestPopupBox ul li:nth-child('+as_pos+')').removeClass('active');
-        as_pos--;
-        $('#SuggestPopupBox ul li:nth-child('+as_pos+')').addClass('active');
-        var donne = $('#SuggestPopupBox ul li:nth-child('+as_pos+')').text();
-        $('#search_top_page').val(donne);
-      }
-    break;
-   }
-
- }
-});
-//
-$('body').click(function(){
-                $('#SuggestPopupBox').text("");
-                $('#SuggestPopupBox').css("display", 'none');
-                $('#SuggestPrecBox').text("");
-                $('#SuggestPopupPage').text("");
-                $('#SuggestPopupPage').css("display", 'none');
-                $('#SuggestPrecPage').text("");
-		as_pos = 0;
-		as_pos2 = 0;
-});
-
-
-$('#edit-keys').keypress(function(e){
-
-  if($('#SuggestPopupPage').text()!=''){
-   switch(e.keyCode){
-    case 40:
-	if(as_pos2<$('#SuggestPopupPage ul li').length){
-	   $('#SuggestPopupPage ul li:nth-child('+as_pos2+')').removeClass('active');
-	   as_pos2++;
- $('#SuggestPopupPage ul li:nth-child('+as_pos2+')').addClass('active');
-var donne = $('#SuggestPopupPage ul li:nth-child('+as_pos2+')').text();
-  $('#edit-keys').val(donne);
-	}
-    break;
-    case 38:
-      if(as_pos2>0){
-	$('#SuggestPopupPage ul li:nth-child('+as_pos2+')').removeClass('active');
-        as_pos2--;
- $('#SuggestPopupPage ul li:nth-child('+as_pos2+')').addClass('active');
-var donne = $('#SuggestPopupPage ul li:nth-child('+as_pos2+')').text();
-  $('#edit-keys').val(donne);
-      }
-    break;
-   }
- }
-});
-
-    
-/* traitement de la sujestion sur la page de recherche  */     
-    $('#edit-keys').keyup(function(e){    	
-	if(e.keyCode>=48 || e.keyCode == 8){
-    	var queryPage = $('#edit-keys').val();
-	var expression = new RegExp("^[\\s!&\"'(\\-\\_)=$^\*!:;,~~#{\\[\\|`\\\\^@\\]}¤£µ%§/.?<>\\+]*$", "g");
-    
-    	 // active le bouton de recherche en fonction de la pressence de mot clé
-    	if(expression.test(queryPage)){
-	    $('#submit_resultat_page').attr('disabled', 'disabled');		
-	}else{
-	    $('#submit_resultat_page').removeAttr('disabled');
-	    
-	}  
-    	
-    	var precPage = "";
-    	if(jQuery.trim(queryPage).length > 2){   
-    		if($('#SuggestPopupPage').length == 0){
-    			$('#edit-keys-wrapper').append('<div id="SuggestPopupPage"></div>');  
-    			// pour le stockage de la requete precedente
-    			$('#edit-keys-wrapper').append('<div id="SuggestPrecPage" style="display:none">'+queryPage+'</div>');
-    		}else{
-    			$('#SuggestPopupPage').css("display", 'block');
-    			precPage = $('#SuggestPrecPage').text();
-    		}
-    		//si la recerche précédente avait la même racine et moins de 2 reponses on ne lance pas la requete    		
-    		if ($('#SuggestPopupPage ul li').length < 2 && precPage !="" && queryPage.indexOf(precPage) == 0){
-    			
-    			var sujPage = $('#SuggestPopupPage ul li').text();    			 	
-    			// si la sugestion est vide ou si elle n'est pas conforme au mot on cache la zone
-    			if ( precPage == "" || sujPage =="" || suj.indexOf(queryPage) !=0 ){    				
-    				$('#SuggestPopupPage').css("display", 'none');
-    			} 
-    		} else {
-    			$('#SuggestPrecPage').text(queryPage);
-	    		// récupère le resultat de la sujestion
-	    		$.getJSON(urlP+"?afs:service=254&afs:feed=chaineC&afs:query="+queryPage,function(data){
-	    			// s'il y a des sujestions on les traites puis affiche
-	    			if(data[1].length > 0){
-		    			$('#SuggestPopupPage').text(""); 		    			
-		    			var liste ="";
-		    			$.each(data[1], function(i, item) {	    			
-		    				liste += "<li class='suj-reponse'>"+item+"</li>";
-		    			});
-		    			$('#SuggestPopupPage').append("<ul>"+liste+"</ul>");		    			
-		    			// place dans la barre de recherche au clic sur une suj et reinitialise le bloc de recherche				   		
-		    			 $('#SuggestPopupPage ul li').click(function(){	    			    			    	
-		    			    	var reponse = $(this).text();    			    	
-		    			    	$('#edit-keys').val(reponse);
-		    			    	$('#SuggestPopupPage').text("");
-			    	    		$('#SuggestPopupPage').css("display", 'none');
-			    	    		$('#SuggestPrecPage').text("");
-		    			    });
-		    			 
-	    			}else{
-	    				// sinon on masque le champ
-	    				$('#SuggestPopupPage').text("");
-	    	    		$('#SuggestPopupPage').css("display", 'none');	    	    		
-	    			}
-	    		});    
-    		}
-    		$('#SuggestPrecPage').text(queryPage);	
-    	}else{
-    		$('#SuggestPopupPage').text("");
-    		$('#SuggestPopupPage').css("display", 'none');	
-    		$('#SuggestPrecPage').text("");
-    	 }
-}
-    });
-	
-/* fin traitement de la sujestion sur la page de recherche  */ 
-      
-        
-    // surligner les résultats
-    var key = $('#edit-keys').val();
-    if (!key) {
-      return;
-    }
-    var tableau = key.split(' ');
-    var key2 = '';
-    for (var i=0;i<tableau.length;i++){
-      if(tableau[i].length>=3){
-	key2 += tableau[i] + ' ';
-      }
-    }
-    var options = {exact:"exact",style_name_suffix:false,style_name:"tagged",keys:key2};
-    jQuery(document).SearchHighlight(options);
-
-};
-
-
-
--- a/test/emission_fichiers/fc_bloc_direct.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-Drupal.behaviors.fcBlocDirect = function(context) {
-  // Set up interval
-  if (context == document && typeof(Drupal.settings.rf_bloc_suppress) == 'undefined') { // Only one is enough
-    var fcBlocDirectUpdateInterval = setInterval('fcBlocDirectUpdate()', Drupal.settings.fc_bloc_direct.interval);
-    if (Drupal.settings.fc_bloc_direct.refresh_on_load === 1) {
-      fcBlocDirectUpdate();
-    };
-  };
-};
-
-// Interval callback
-function fcBlocDirectUpdate() {
-  var url = Drupal.settings.basePath + 'fc_bloc_direct/refresh';
-  $.ajax({
-    method: 'get',
-    url : url,
-    dataType : 'json',
-    error: function(xhr) {
-      // Do nothing in production mode
-      // Drupal.CTools.AJAX.handleErrors(xhr, url);
-    },
-    success: Drupal.CTools.AJAX.respond
-  });
-};
--- a/test/emission_fichiers/fc_widget_twitter.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-function twitterCallback2(twitters) {
-  var statusHTML = [];
-  var username = "";
-  for (var i=0; i<twitters.length; i++){  
-	username = twitters[i].user.screen_name;
-    var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
-      return '<a href="'+url+'">'+url+'</a>';
-    }).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
-      return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
-    });
-    statusHTML.push('<li><span>'+status+'</span><a style="font-size:85%" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'">'+relative_time(twitters[i].created_at)+'</a></li>');
-  }
-  document.getElementById('twitter_update_list_'+username).innerHTML = statusHTML.join('');
-}
-
-function relative_time(time_value) {
-	  var values = time_value.split(" ");
-	  time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
-	  var parsed_date = Date.parse(time_value);
-	  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
-	  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
-	  delta = delta + (relative_to.getTimezoneOffset() * 60);
-
-	  if (delta < 60) {
-	    return " il y a moins d'une minute";
-	  } else if(delta < 120) {
-	    return ' il y a une minute';
-	  } else if(delta < (60*60)) {
-	    return ' il y a '+(parseInt(delta / 60)).toString() + ' minutes ';
-	  } else if(delta < (120*60)) {
-	    return ' il y a une heure';
-	  } else if(delta < (24*60*60)) {
-	    return ' il y a ' + (parseInt(delta / 3600)).toString() + ' heures';
-	  } else if(delta < (48*60*60)) {
-	    return ' il y a un jour';
-	  } else {
-	    return ' il y a '+(parseInt(delta / 86400)).toString() + ' jours';
-	  }
-	}
\ No newline at end of file
--- a/test/emission_fichiers/fivestar.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,394 +0,0 @@
-/**
- * Modified Star Rating - jQuery plugin
- *
- * Copyright (c) 2006 Wil Stuckey
- *
- * Original source available: http://sandbox.wilstuckey.com/jquery-ratings/
- * Extensively modified by Lullabot: http://www.lullabot.com
- *
- * Dual licensed under the MIT and GPL licenses:
- *   http://www.opensource.org/licenses/mit-license.php
- *   http://www.gnu.org/licenses/gpl.html
- */
-
-/**
- * Create a degradeable star rating interface out of a simple form structure.
- * Returns a modified jQuery object containing the new interface.
- *   
- * @example jQuery('form.rating').fivestar();
- * @cat plugin
- * @type jQuery 
- *
- */
-(function($){ // Create local scope.
-    /**
-     * Takes the form element, builds the rating interface and attaches the proper events.
-     * @param {Object} $obj
-     */
-    var buildRating = function($obj){
-        var $widget = buildInterface($obj),
-            $stars = $('.star', $widget),
-            $cancel = $('.cancel', $widget),
-            $summary = $('.fivestar-summary', $obj),
-            feedbackTimerId = 0,
-            summaryText = $summary.html(),
-            summaryHover = $obj.is('.fivestar-labels-hover'),
-            currentValue = $("select", $obj).val(),
-            cancelTitle = $('label', $obj).html(),
-            voteTitle = cancelTitle != Drupal.settings.fivestar.titleAverage ? cancelTitle : Drupal.settings.fivestar.titleUser,
-            voteChanged = false;
-
-        // Record star display.
-        if ($obj.is('.fivestar-user-stars')) {
-          var starDisplay = 'user';
-        }
-        else if ($obj.is('.fivestar-average-stars')) {
-          var starDisplay = 'average';
-          currentValue = $("input[name=vote_average]", $obj).val();
-        }
-        else if ($obj.is('.fivestar-combo-stars')) {
-          var starDisplay = 'combo';
-        }
-        else {
-          var starDisplay = 'none';
-        }
-
-        // Smart is intentionally separate, so the average will be set if necessary.
-        if ($obj.is('.fivestar-smart-stars')) {
-          var starDisplay = 'smart';
-        }
-
-        // Record text display.
-        if ($summary.size()) {
-          var textDisplay = $summary.attr('class').replace(/.*?fivestar-summary-([^ ]+).*/, '$1').replace(/-/g, '_');
-        }
-        else {
-          var textDisplay = 'none';
-        }
-
-        // Add hover and focus events.
-        $stars
-            .mouseover(function(){
-                event.drain();
-                event.fill(this);
-            })
-            .mouseout(function(){
-                event.drain();
-                event.reset();
-            });
-        $stars.children()
-            .focus(function(){
-                event.drain();
-                event.fill(this.parentNode)
-            })
-            .blur(function(){
-                event.drain();
-                event.reset();
-            }).end();
-
-        // Cancel button events.
-        $cancel
-            .mouseover(function(){
-                event.drain();
-                $(this).addClass('on')
-            })
-            .mouseout(function(){
-                event.reset();
-                $(this).removeClass('on')
-            });
-        $cancel.children()
-            .focus(function(){
-                event.drain();
-                $(this.parentNode).addClass('on')
-            })
-            .blur(function(){
-                event.reset();
-                $(this.parentNode).removeClass('on')
-            }).end();
-
-        // Click events.
-        $cancel.click(function(){
-            currentValue = 0;
-            event.reset();
-            voteChanged = false;
-            // Inform a user that his vote is being processed
-            if ($("input.fivestar-path", $obj).size() && $summary.is('.fivestar-feedback-enabled')) {
-              setFeedbackText(Drupal.settings.fivestar.feedbackDeletingVote);
-            }
-            // Save the currentValue in a hidden field.
-            $("select", $obj).val(0);
-            // Update the title.
-            cancelTitle = starDisplay != 'smart' ? cancelTitle : Drupal.settings.fivestar.titleAverage;
-            $('label', $obj).html(cancelTitle);
-            // Update the smart classes on the widget if needed.
-            if ($obj.is('.fivestar-smart-text')) {
-              $obj.removeClass('fivestar-user-text').addClass('fivestar-average-text');
-              $summary[0].className = $summary[0].className.replace(/-user/, '-average');
-              textDisplay = $summary.attr('class').replace(/.*?fivestar-summary-([^ ]+).*/, '$1').replace(/-/g, '_');
-            }
-            if ($obj.is('.fivestar-smart-stars')) {
-              $obj.removeClass('fivestar-user-stars').addClass('fivestar-average-stars');
-            }
-            // Submit the form if needed.
-            $("input.fivestar-path", $obj).each(function() {
-              var token = $("input.fivestar-token", $obj).val();
-              $.ajax({
-                type: 'GET',
-                data: { token: token },
-                dataType: 'xml',
-                url: this.value + '/' + 0,
-                success: voteHook
-              });
-            });
-            return false;
-        });
-        $stars.click(function(){
-            currentValue = $('select option', $obj).get($stars.index(this) + $cancel.size() + 1).value;
-            // Save the currentValue to the hidden select field.
-            $("select", $obj).val(currentValue);
-            // Update the display of the stars.
-            voteChanged = true;
-            event.reset();
-            // Inform a user that his vote is being processed.
-            if ($("input.fivestar-path", $obj).size() && $summary.is('.fivestar-feedback-enabled')) {
-              setFeedbackText(Drupal.settings.fivestar.feedbackSavingVote);
-            }
-            // Update the smart classes on the widget if needed.
-            if ($obj.is('.fivestar-smart-text')) {
-              $obj.removeClass('fivestar-average-text').addClass('fivestar-user-text');
-              $summary[0].className = $summary[0].className.replace(/-average/, '-user');
-              textDisplay = $summary.attr('class').replace(/.*?fivestar-summary-([^ ]+).*/, '$1').replace(/-/g, '_');
-            }
-            if ($obj.is('.fivestar-smart-stars')) {
-              $obj.removeClass('fivestar-average-stars').addClass('fivestar-user-stars');
-            }
-            // Submit the form if needed.
-            $("input.fivestar-path", $obj).each(function () {
-              var token = $("input.fivestar-token", $obj).val();
-              $.ajax({
-                type: 'GET',
-                data: { token: token },
-                dataType: 'xml',
-                url: this.value + '/' + currentValue,
-                success: voteHook
-              });
-            });
-            return false;
-        });
-
-        var event = {
-            fill: function(el){
-              // Fill to the current mouse position.
-              var index = $stars.index(el) + 1;
-              $stars
-                .children('a').css('width', '100%').end()
-                .filter(':lt(' + index + ')').addClass('hover').end();
-              // Update the description text and label.
-              if (summaryHover && !feedbackTimerId) {
-                var summary = $("select option", $obj)[index + $cancel.size()].text;
-                var value = $("select option", $obj)[index + $cancel.size()].value;
-                $summary.html(summary != index + 1 ? summary : '&nbsp;');
-                $('label', $obj).html(voteTitle);
-              }
-            },
-            drain: function() {
-              // Drain all the stars.
-              $stars
-                .filter('.on').removeClass('on').end()
-                .filter('.hover').removeClass('hover').end();
-              // Update the description text.
-              if (summaryHover && !feedbackTimerId) {
-                var cancelText = $("select option", $obj)[1].text;
-                $summary.html(($cancel.size() && cancelText != 0) ? cancelText : '&nbsp');
-                if (!voteChanged) {
-                  $('label', $obj).html(cancelTitle);
-                }
-              }
-            },
-            reset: function(){
-              // Reset the stars to the default index.
-              var starValue = currentValue/100 * $stars.size();
-              var percent = (starValue - Math.floor(starValue)) * 100;
-              $stars.filter(':lt(' + Math.floor(starValue) + ')').addClass('on').end();
-              if (percent > 0) {
-                $stars.eq(Math.floor(starValue)).addClass('on').children('a').css('width', percent + "%").end().end();
-              }
-              // Restore the summary text and original title.
-              if (summaryHover && !feedbackTimerId) {
-                $summary.html(summaryText ? summaryText : '&nbsp;');
-              }
-              if (voteChanged) {
-                $('label', $obj).html(voteTitle);
-              }
-              else {
-                $('label', $obj).html(cancelTitle);
-              }
-            }
-        };
-
-        var setFeedbackText = function(text) {
-          // Kill previous timer if it isn't finished yet so that the text we
-          // are about to set will not get cleared too early.
-          feedbackTimerId = 1;
-          $summary.html(text);
-        };
-
-        /**
-         * Checks for the presence of a javascript hook 'fivestarResult' to be
-         * called upon completion of a AJAX vote request.
-         */
-        var voteHook = function(data) {
-          var returnObj = {
-            result: {
-              count: $("result > count", data).text(),
-              average: $("result > average", data).text(),
-              summary: {
-                average: $("summary average", data).text(),
-                average_count: $("summary average_count", data).text(),
-                user: $("summary user", data).text(),
-                user_count: $("summary user_count", data).text(),
-                combo: $("summary combo", data).text(),
-                count: $("summary count", data).text()
-              }
-            },
-            vote: {
-              id: $("vote id", data).text(),
-              tag: $("vote tag", data).text(),
-              type: $("vote type", data).text(),
-              value: $("vote value", data).text()
-            },
-            display: {
-              stars: starDisplay,
-              text: textDisplay
-            }
-          };
-          // Check for a custom callback.
-          if (window.fivestarResult) {
-            fivestarResult(returnObj);
-          }
-          // Use the default.
-          else {
-            fivestarDefaultResult(returnObj);
-          }
-          // Update the summary text.
-          summaryText = returnObj.result.summary[returnObj.display.text];
-          if ($(returnObj.result.summary.average).is('.fivestar-feedback-enabled')) {
-            // Inform user that his/her vote has been processed.
-            if (returnObj.vote.value != 0) { // check if vote has been saved or deleted 
-              setFeedbackText(Drupal.settings.fivestar.feedbackVoteSaved);
-            }
-            else {
-              setFeedbackText(Drupal.settings.fivestar.feedbackVoteDeleted);
-            }
-            // Setup a timer to clear the feedback text after 3 seconds.
-            feedbackTimerId = setTimeout(function() { clearTimeout(feedbackTimerId); feedbackTimerId = 0; $summary.html(returnObj.result.summary[returnObj.display.text]); }, 2000);
-          }
-          // Update the current star currentValue to the previous average.
-          if (returnObj.vote.value == 0 && (starDisplay == 'average' || starDisplay == 'smart')) {
-            currentValue = returnObj.result.average;
-            event.reset();
-          }
-        };
-
-        event.reset();
-        return $widget;
-    };
-    
-    /**
-     * Accepts jQuery object containing a single fivestar widget.
-     * Returns the proper div structure for the star interface.
-     * 
-     * @return jQuery
-     * @param {Object} $widget
-     * 
-     */
-    var buildInterface = function($widget){
-        var $container = $('<div class="fivestar-widget clear-block"></div>');
-        var $options = $("select option", $widget);
-        var size = $('option', $widget).size() - 1;
-        var cancel = 1;
-        for (var i = 1, option; option = $options[i]; i++){
-            if (option.value == "0") {
-              cancel = 0;
-              $div = $('<div class="cancel"><a href="#0" title="' + option.text + '">' + option.text + '</a></div>');
-            }
-            else {
-              var zebra = (i + cancel - 1) % 2 == 0 ? 'even' : 'odd';
-              var count = i + cancel - 1;
-              var first = count == 1 ? ' star-first' : '';
-              var last = count == size + cancel - 1 ? ' star-last' : '';
-              $div = $('<div class="star star-' + count + ' star-' + zebra + first + last + '"><a href="#' + option.value + '" title="' + option.text + '">' + option.text + '</a></div>');
-            }
-            $container.append($div[0]);
-        }
-        $container.addClass('fivestar-widget-' + (size + cancel - 1));
-        // Attach the new widget and hide the existing widget.
-        $('select', $widget).after($container).css('display', 'none');
-        return $container;
-    };
-
-    /**
-     * Standard handler to update the average rating when a user changes their
-     * vote. This behavior can be overridden by implementing a fivestarResult
-     * function in your own module or theme.
-     * @param object voteResult
-     * Object containing the following properties from the vote result:
-     * voteResult.result.count The current number of votes for this item.
-     * voteResult.result.average The current average of all votes for this item.
-     * voteResult.result.summary.average The textual description of the average.
-     * voteResult.result.summary.user The textual description of the user's current vote.
-     * voteResult.vote.id The id of the item the vote was placed on (such as the nid)
-     * voteResult.vote.type The type of the item the vote was placed on (such as 'node')
-     * voteResult.vote.tag The multi-axis tag the vote was placed on (such as 'vote')
-     * voteResult.vote.average The average of the new vote saved
-     * voteResult.display.stars The type of star display we're using. Either 'average', 'user', or 'combo'.
-     * voteResult.display.text The type of text display we're using. Either 'average', 'user', or 'combo'.
-     */
-    function fivestarDefaultResult(voteResult) {
-      // Update the summary text.
-      $('div.fivestar-summary-'+voteResult.vote.tag+'-'+voteResult.vote.id).html(voteResult.result.summary[voteResult.display.text]);
-      // If this is a combo display, update the average star display.
-      if (voteResult.display.stars == 'combo') {
-        $('div.fivestar-form-'+voteResult.vote.id).each(function() {
-          // Update stars.
-          var $stars = $('.fivestar-widget-static .star span', this);
-          var average = voteResult.result.average/100 * $stars.size();
-          var index = Math.floor(average);
-          $stars.removeClass('on').addClass('off').css('width', 'auto');
-          $stars.filter(':lt(' + (index + 1) + ')').removeClass('off').addClass('on');
-          $stars.eq(index).css('width', ((average - index) * 100) + "%");
-          // Update summary.
-          var $summary = $('.fivestar-static-form-item .fivestar-summary', this);
-          if ($summary.size()) {
-            var textDisplay = $summary.attr('class').replace(/.*?fivestar-summary-([^ ]+).*/, '$1').replace(/-/g, '_');
-            $summary.html(voteResult.result.summary[textDisplay]);
-          }
-        });
-      }
-    };
-
-    /**
-     * Set up the plugin
-     */
-    $.fn.fivestar = function() {
-      var stack = [];
-      this.each(function() {
-          var ret = buildRating($(this));
-          stack.push(ret);
-      });
-      return stack;
-    };
-
-  // Fix ie6 background flicker problem.
-  if ($.browser.msie == true) {
-    try {
-      document.execCommand('BackgroundImageCache', false, true);
-    } catch(err) {}
-  }
-
-  Drupal.behaviors.fivestar = function(context) {
-    $('div.fivestar-form-item:not(.fivestar-processed)', context).addClass('fivestar-processed').fivestar();
-    $('input.fivestar-submit', context).css('display', 'none');
-  }
-
-})(jQuery);
\ No newline at end of file
--- a/test/emission_fichiers/footer.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-function boutonHautDePage(){
-	$("#top-page").click(function() {
-		var hauteur = 0;
-		$('html,body').animate({scrollTop: hauteur}, 1000);
-	});
-	return false;
-}
-//
-Drupal.behaviors.franceculture_header_footer = function (){
-    boutonHautDePage();
-}
--- a/test/emission_fichiers/fr_4fb8f115d8d263374d07dafa1b2a40b5.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-Drupal.locale = { 'pluralFormula': function($n) { return Number(($n!=1)); }, 'strings': {"Unspecified error":"Erreur non sp\u00e9cifi\u00e9e","Save":"Enregistrer","Cancel":"Annuler","Continue":"Continuer","Required":"Obligatoire","Optional":"Facultatif","Published":"Publi\u00e9","Edit":"Modifier","Promoted to front page":"Promu en page d'accueil","Create new revision":"Cr\u00e9er une r\u00e9vision","Select all rows in this table":"S\u00e9lectionner toutes les lignes du tableau","Deselect all rows in this table":"D\u00e9s\u00e9lectionner toutes les lignes du tableau","None":"Aucun","Removed":"Supprim\u00e9","Drag to re-order":"Cliquer-d\u00e9poser pour r\u00e9-organiser","Changes made in this table will not be saved until the form is submitted.":"Les modifications r\u00e9alis\u00e9es sur cette table ne seront enregistr\u00e9s que lorsque le formulaire sera soumis.","The changes to these blocks will not be saved until the \x3cem\x3eSave blocks\x3c\/em\x3e button is clicked.":"N'oubliez pas de cliquer sur \x3cem\x3eEnregistrer les blocs\x3c\/em\x3e pour confirmer les modifications apport\u00e9es ici.","jQuery UI Tabs: Mismatching fragment identifier.":"Onglets d'interface jQuery : identifiant de fragment ne correspondant pas.","jQuery UI Tabs: Not enough arguments to add tab.":"Onglets d'interface jQuery : pas assez d'arguments pour ajouter l'onglet.","Automatic alias":"Alias automatique","Split summary at cursor":"Cr\u00e9er un r\u00e9sum\u00e9 \u00e0 partir du curseur","Join summary":"Fusionner le r\u00e9sum\u00e9 et le corps du message","The selected file %filename cannot not be uploaded. Only files with the following extensions are allowed: %extensions.":"Le fichier s\u00e9lectionn\u00e9 %filename n'a pas pu \u00eatre t\u00e9l\u00e9vers\u00e9. Seuls les fichiers poss\u00e9dant les extensions suivantes sont autoris\u00e9s : %extensions.","Testing clean URLs...":"Test des URLs simplifi\u00e9es...","Your server has been successfully tested to support this feature.":"Le test a r\u00e9ussi. Votre serveur supporte cette fonctionnalit\u00e9.","Your system configuration does not currently support this feature. The \x3ca href=\"http:\/\/drupal.org\/node\/15365\"\x3ehandbook page on Clean URLs\x3c\/a\x3e has additional troubleshooting information.":"La configuration de votre syst\u00e8me ne supporte pas cette fonctionnalit\u00e9. La \x3ca href=\"http:\/\/drupal.org\/node\/15365\"\x3epage du manuel sur les URLs simplifi\u00e9es\x3c\/a\x3e apporte une aide suppl\u00e9mentaire.","Remove this item":"Supprimer cet \u00e9l\u00e9ment","An error occurred. \n@uri\n@text":"Une erreur s'est produite. \n@uri\n@text","An error occurred. \n@uri\n(no information available).":"Une erreur s'est produite. \n@uri\n(aucune information suppl\u00e9mentaire)","An HTTP error @status occurred. \n@uri":"Une erreur HTTP @status s'est produite. \n@uri","1 attachment":["@count fichier attach\u00e9","@count fichiers attach\u00e9s"],"Close":"Fermer","An error occured while trying to save you settings.":"Une erreur est survenue lors de la sauvegarde de vos param\u00e8tres.","Not in book":"Pas dans le livre","New book":"Nouveau livre","By @name on @date":"Par @name le @date","By @name":"Par @name","Sticky on top of lists":"Epingl\u00e9 en haut des listes","Not in menu":"Pas dans le menu","No attachments":"Aucune pi\u00e8ce jointe","Alias: @alias":"Alias : @alias","No alias":"Aucun alias","No flags":"Aucun flag","No terms":"Aucun terme","An error occurred at ":"Une erreur s'est produite \u00e0","Don't create new revision":"Ne pas cr\u00e9er de nouvelle r\u00e9vision","An error occurred at @path.":"Une erreur est survenu \u00e0 @path.","Save and send":"Sauvegarder et envoyer","Save and send test":"Sauvegarder et envoyer un test","Loading...":"Chargement...","Received an invalid response from the server.":"Nous avons re\u00e7u une r\u00e9ponse non valide de la part du serveur.","The link cannot be inserted because the parent window cannot be found.":"Le lien ne peut \u00eatre ins\u00e9r\u00e9 parce que la fen\u00eatre parente ne peut \u00eatre trouv\u00e9e.","Check all items in this group":"Cocher tous les \u00e9l\u00e9ments de ce groupe","Toggle the values of all items in this group":"Changer les valeurs de tous les \u00e9l\u00e9ments de ce groupe","Uncheck all items in this group":"D\u00e9cocher tous les \u00e9l\u00e9ments de ce groupe","Uncheck all":"D\u00e9cocher tout","Toggle":"Changer","Check all":"Tout cocher","Bad Response form submission":"Le formulaire n'a pu \u00eatre enregistr\u00e9, peut-\u00eatre n'avez-vous pas \"ajouter\" une image ?"} };
\ No newline at end of file
Binary file test/emission_fichiers/franceculture.png has changed
--- a/test/emission_fichiers/high.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(6($){17.2m.27=6(b){4 c=b.2g||1j.22;5(!c&&b.J==Y)x F;j.A=$.2a({E:"E",1h:\'21\',1b:1T},b);5(b.C)j.C.1O(b.C);4 q=b.J!=Y?b.J.K().X(/[\\s,\\+\\.]+/):j.V(c,j.C);5(q&&q.1y("")){j.1v(q);x F.G(6(){4 a=F;5(a==1j)a=$("P")[0];j.1n(a,q)})}1l x F};4 j={A:{},m:[],C:[[/^9:\\/\\/(k\\.)?23\\./i,/q=([^&]+)/i],[/^9:\\/\\/(k\\.)?B\\.1X\\./i,/p=([^&]+)/i],[/^9:\\/\\/(k\\.)?B\\.1S\\./i,/q=([^&]+)/i],[/^9:\\/\\/(k\\.)?B\\.1R\\./i,/1Q=([^&]+)/i],[/^9:\\/\\/(k\\.)?B\\.1P\\./i,/1N=([^&]+)/i],[/^9:\\/\\/(k\\.)?1M\\.Z/i,/q=([^&]+)/i],[/^9:\\/\\/(k\\.)?1L\\./i,/q=([^&]+)/i],[/^9:\\/\\/(k\\.)?1K\\./i,/q=([^&]+)/i],[/^9:\\/\\/(k\\.)?B\\.1H\\./i,/q=([^&]+)/i],[/^9:\\/\\/(k\\.)?1G\\./i,/q=([^&]+)/i],[/^9:\\/\\/(k\\.)?1F\\.Z/i,/([^\\?\\/]+)(?:\\?.*)$/i]],N:{},V:6(b,c){b=1D(b);4 d=1A;$.G(c,6(i,n){5(n[0].1w(b)){4 a=b.v(n[1]);5(a){d=a[1].K();x 2k}}});5(d){d=d.Q(/(\\\'|")/,\'\\$1\');d=d.X(/[\\s,\\+\\.]+/)}x d},H:[[/[\\1r-\\1q\\1s-\\2c]/7,\'a\'],[/[\\1o\\29-\\1m]/7,\'c\'],[/[\\28-\\26]/7,\'e\'],[/[\\25-\\1i]/7,\'i\'],[/\\1g/7,\'n\'],[/[\\24-\\1f\\1t]/7,\'o\'],[/[\\1e-\\20]/7,\'s\'],[/[\\1Y-\\1c]/7,\'t\'],[/[\\1U-\\1a]/7,\'u\'],[/\\19/7,\'y\'],[/[\\16\\15\\14\\13]/7,\'\\\'\']],L:/[\\16\\15\\1r-\\1q\\1o-\\1i\\1g-\\1f\\1t-\\1a\\19\\1s-\\1m\\1e-\\1c\\14\\13]/7,M:6(q){j.L.11=0;5(j.L.1w(q)){12(4 i=0,l=j.H.z;i<l;i++)q=q.Q(j.H[i][0],j.H[i][1])}x q},10:/((?:\\\\{2})*)([[\\]{}*?|])/g,1v:6(a){4 b=[],m;$.G(a,6(i,n){5(n=j.M(n).Q(j.10,"$1\\\\$2"))b.1J(n)});m=b.1y("|");1I(j.A.E){18"E":m=\'\\\\b(?:\'+m+\')\\\\b\';1z;18"1k":m=\'\\\\b\\\\w*(\'+m+\')\\\\w*\\\\b\';1z}j.m=1V 1W(m,"1E");$.G(b,6(i,n){j.N[n]=j.A.1h+(j.A.1b?i+1:\'\')})},W:/s(?:1C|1Z)|1B/i,1n:6(a,b){4 c=j.A,D,U;D=c.1d?$(c.1d):$("P");5(!D.z)D=$("P");U=c.1x?$(c.1x):$([]);D.G(6(){j.T(F,b,U)})},T:6(a,b,c){5(c.r(a)!=-1)x;4 d=j.A.E=="1k"?1:0;12(4 e=0,S=a.R.z;e<S;e++){4 f=a.R[e];5(f.O!=8){5(f.O==3){4 g=f.2j,1u=j.M(g);4 h="",v,r=0;j.m.11=0;2i(v=j.m.2h(1u)){h+=g.1p(r,v.r-r)+\'<I 2f="\'+j.N[v[d].K()]+\'">\'+g.1p(v.r,v[0].z)+"</I>";r=v.r+v[0].z}5(h){h+=g.2e(r);4 i=$.2d([],$("<I>"+h+"</I>")[0].R);S+=i.z-1;e+=i.z-1;$(f).2l(i).2b()}}1l{5(f.O==1&&f.2n.B(j.W)==-1)j.T(f,b,c)}}}}}})(17)',62,148,'||||var|if|function|ig||http|||||||||||www||regex|||||index||||match||return||length|options|search|engines|elHighlight|exact|this|each|regexAccent|span|keys|toLowerCase|matchAccent|replaceAccent|subs|nodeType|body|replace|childNodes|endIndex|hiliteTree|noHighlight|decodeURL|nosearch|split|undefined|com|escapeRegEx|lastIndex|for|u2019|u2018|x92|x91|jQuery|case|xFF|xDC|style_name_suffix|u0167|highlight|u015A|xD6|xD1|style_name|xCF|document|whole|else|u010D|hiliteElement|xC7|substr|xC5|xC0|u0100|xD8|textNoAcc|buildReplaceTools|test|nohighlight|join|break|null|textarea|cript|decodeURIComponent|gi|technorati|alltheweb|lycos|switch|push|feedster|altavista|ask|userQuery|unshift|aol|query|live|msn|true|xD9|new|RegExp|yahoo|u0162|tyle|u0161|hilite|referrer|google|xD2|xCC|xCB|SearchHighlight|xC8|u0106|extend|remove|u0105|merge|substring|class|debug_referrer|exec|while|data|false|before|fn|nodeName'.split('|'),0,{}))
Binary file test/emission_fichiers/inscription.png has changed
--- a/test/emission_fichiers/jquery.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-/**
- * jQuery.timers - Timer abstractions for jQuery
- * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
- * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
- * Date: 2009/02/08
- *
- * @author Blair Mitchelmore
- * @version 1.1.2
- *
- **/
-
-jQuery.fn.extend({
-	everyTime: function(interval, label, fn, times, belay) {
-		return this.each(function() {
-			jQuery.timer.add(this, interval, label, fn, times, belay);
-		});
-	},
-	oneTime: function(interval, label, fn) {
-		return this.each(function() {
-			jQuery.timer.add(this, interval, label, fn, 1);
-		});
-	},
-	stopTime: function(label, fn) {
-		return this.each(function() {
-			jQuery.timer.remove(this, label, fn);
-		});
-	}
-});
-
-jQuery.event.special
-
-jQuery.extend({
-	timer: {
-		global: [],
-		guid: 1,
-		dataKey: "jQuery.timer",
-		regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
-		powers: {
-			// Yeah this is major overkill...
-			'ms': 1,
-			'cs': 10,
-			'ds': 100,
-			's': 1000,
-			'das': 10000,
-			'hs': 100000,
-			'ks': 1000000
-		},
-		timeParse: function(value) {
-			if (value == undefined || value == null)
-				return null;
-			var result = this.regex.exec(jQuery.trim(value.toString()));
-			if (result[2]) {
-				var num = parseFloat(result[1]);
-				var mult = this.powers[result[2]] || 1;
-				return num * mult;
-			} else {
-				return value;
-			}
-		},
-		add: function(element, interval, label, fn, times, belay) {
-			var counter = 0;
-			
-			if (jQuery.isFunction(label)) {
-				if (!times) 
-					times = fn;
-				fn = label;
-				label = interval;
-			}
-			
-			interval = jQuery.timer.timeParse(interval);
-
-			if (typeof interval != 'number' || isNaN(interval) || interval <= 0)
-				return;
-
-			if (times && times.constructor != Number) {
-				belay = !!times;
-				times = 0;
-			}
-			
-			times = times || 0;
-			belay = belay || false;
-			
-			var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
-			
-			if (!timers[label])
-				timers[label] = {};
-			
-			fn.timerID = fn.timerID || this.guid++;
-			
-			var handler = function() {
-				if (belay && this.inProgress) 
-					return;
-				this.inProgress = true;
-				if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
-					jQuery.timer.remove(element, label, fn);
-				this.inProgress = false;
-			};
-			
-			handler.timerID = fn.timerID;
-			
-			if (!timers[label][fn.timerID])
-				timers[label][fn.timerID] = window.setInterval(handler,interval);
-			
-			this.global.push( element );
-			
-		},
-		remove: function(element, label, fn) {
-			var timers = jQuery.data(element, this.dataKey), ret;
-			
-			if ( timers ) {
-				
-				if (!label) {
-					for ( label in timers )
-						this.remove(element, label, fn);
-				} else if ( timers[label] ) {
-					if ( fn ) {
-						if ( fn.timerID ) {
-							window.clearInterval(timers[label][fn.timerID]);
-							delete timers[label][fn.timerID];
-						}
-					} else {
-						for ( var fn in timers[label] ) {
-							window.clearInterval(timers[label][fn]);
-							delete timers[label][fn];
-						}
-					}
-					
-					for ( ret in timers[label] ) break;
-					if ( !ret ) {
-						ret = null;
-						delete timers[label];
-					}
-				}
-				
-				for ( ret in timers ) break;
-				if ( !ret ) 
-					jQuery.removeData(element, this.dataKey);
-			}
-		}
-	}
-});
-
-jQuery(window).bind("unload", function() {
-	jQuery.each(jQuery.timer.global, function(index, item) {
-		jQuery.timer.remove(item);
-	});
-});
\ No newline at end of file
--- a/test/emission_fichiers/jquery_002.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*! Copyright (c) 2009 Brandon Aaron (http://brandonaaron.net)
- * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
- * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
- * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
- * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
- *
- * Version: 3.0.2
- * 
- * Requires: 1.2.2+
- */
-
-(function($) {
-
-var types = ['DOMMouseScroll', 'mousewheel'];
-
-$.event.special.mousewheel = {
-	setup: function() {
-		if ( this.addEventListener )
-			for ( var i=types.length; i; )
-				this.addEventListener( types[--i], handler, false );
-		else
-			this.onmousewheel = handler;
-	},
-	
-	teardown: function() {
-		if ( this.removeEventListener )
-			for ( var i=types.length; i; )
-				this.removeEventListener( types[--i], handler, false );
-		else
-			this.onmousewheel = null;
-	}
-};
-
-$.fn.extend({
-	mousewheel: function(fn) {
-		return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
-	},
-	
-	unmousewheel: function(fn) {
-		return this.unbind("mousewheel", fn);
-	}
-});
-
-
-function handler(event) {
-	var args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true;
-	
-	event = $.event.fix(event || window.event);
-	event.type = "mousewheel";
-	
-	if ( event.wheelDelta ) delta = event.wheelDelta/120;
-	if ( event.detail     ) delta = -event.detail/3;
-	
-	// Add events and delta to the front of the arguments
-	args.unshift(event, delta);
-
-	return $.event.handle.apply(this, args);
-}
-
-})(jQuery);
\ No newline at end of file
--- a/test/emission_fichiers/jquery_003.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,457 +0,0 @@
-/**
- * jquery.scrollable 1.0.2. Put your HTML scroll.
- * 
- * Copyright (c) 2009 Tero Piirainen
- * http://flowplayer.org/tools/scrollable.html
- *
- * Dual licensed under MIT and GPL 2+ licenses
- * http://www.opensource.org/licenses
- *
- * Launch  : March 2008
- * Version : 1.0.2 - Tue Feb 24 2009 10:52:08 GMT-0000 (GMT+00:00)
- */
-(function($) {
-		
-	function fireEvent(opts, name, self, arg) {
-		var fn = opts[name];
-		
-		if ($.isFunction(fn)) { 
-			try {  
-				return fn.call(self, arg);
-				
-			} catch (error) {
-				if (opts.alert) {
-					alert("Error calling scrollable." + name + ": " + error);
-				} else {
-					throw error;	
-				}
-				return false;
-			} 					
-		}
-		return true;			
-	}
-				
-	var current = null;	
-	
-	
-	// constructor
-	function Scrollable(root, conf) {   
-				
-		// current instance
-		var self = this;  
-		if (!current) { current = self; }		
-		
-		// horizontal flag
-		var horizontal = !conf.vertical;		
-		
-		
-		// wrap (root elements for items)
-		var wrap = $(conf.items, root);				
-		
-		// current index
-		var index = 0;
-		
-		
-		// get handle to navigational elements
-		var navi = root.siblings(conf.navi).eq(0);
-		var prev = root.siblings(conf.prev).eq(0);
-		var next = root.siblings(conf.next).eq(0);
-		var prevPage = root.siblings(conf.prevPage).eq(0);
-		var nextPage = root.siblings(conf.nextPage).eq(0);
-		
-		
-		// methods
-		$.extend(self, {
-				
-			getVersion: function() {
-				return [1, 0, 1];	
-			},
-			
-			getIndex: function() {
-				return index;	
-			},
-	
-			getConf: function() {
-				return conf;	
-			},
-			
-			getSize: function() {
-				return self.getItems().size();	
-			},
-	
-			getPageAmount: function() {
-				return Math.ceil(this.getSize() / conf.size); 	
-			},
-			
-			getPageIndex: function() {
-				return Math.ceil(index / conf.size);	
-			},
-
-			getRoot: function() {
-				return root;	
-			},
-			
-			getItemWrap: function() {
-				return wrap;	
-			},
-			
-			getItems: function() {
-				return wrap.children();	
-			},
-			
-			/* all seeking functions depend on this */		
-			seekTo: function(i, time, fn) {
-				
-				// default speed
-				time = time || conf.speed;
-				
-				// function given as second argument
-				if ($.isFunction(time)) {
-					fn = time;
-					time = conf.speed;
-				}
-								
-				if (i < 0) { i = 0; }				
-				if (i > self.getSize() - conf.size) { return self; } 				
-
-				var item = self.getItems().eq(i);					
-				if (!item.length) { return self; }				
-				
-				// onBeforeSeek
-				if (fireEvent(conf, "onBeforeSeek", self, i) === false) {
-					return self;	
-				}									
-				
-				if (horizontal) {					
-					var left = -(item.outerWidth(true) * i);					
-					wrap.animate({left: left}, time, conf.easing, fn ? function() { fn.call(self); } : null);
-					
-				} else {
-					var top = -(item.outerHeight(true) * i); // wrap.offset().top - item.offset().top;					
-					wrap.animate({top: top}, time, conf.easing, fn ? function() { fn.call(self); } : null);							
-				}	
-				
-				
-				// navi status update
-				if (navi.length) {
-					var klass = conf.activeClass;
-					var page = Math.ceil(i / conf.size);
-					page = Math.min(page, navi.children().length - 1);
-					navi.children().removeClass(klass).eq(page).addClass(klass);
-				} 
-				
-				// prev buttons disabled flag
-				if (i === 0) {
-					prev.add(prevPage).addClass(conf.disabledClass);					
-				} else {
-					prev.add(prevPage).removeClass(conf.disabledClass);
-				}
-								
-				// next buttons disabled flag
-				if (i >= self.getSize() - conf.size) {
-					next.add(nextPage).addClass(conf.disabledClass);
-				} else {
-					next.add(nextPage).removeClass(conf.disabledClass);
-				}				
-				
-				current = self;
-				index = i;				
-				
-				// onSeek after index being updated
-				fireEvent(conf, "onSeek", self, i);	
-				
-				return self;
-				
-			},			
-				
-			move: function(offset, time, fn) {
-				var to = index + offset;
-				if (conf.loop && to > (self.getSize() - conf.size)) {
-					to = 0;	
-				}
-				return this.seekTo(to, time, fn);
-			},
-			
-			next: function(time, fn) {
-				return this.move(1, time, fn);	
-			},
-			
-			prev: function(time, fn) {
-				return this.move(-1, time, fn);	
-			},
-			
-			movePage: function(offset, time, fn) {
-				return this.move(conf.size * offset, time, fn);		
-			},
-			
-			setPage: function(page, time, fn) {
-				var size = conf.size;
-				var index = size * page;
-				var lastPage = index + size >= this.getSize(); 
-				if (lastPage) {
-					index = this.getSize() - conf.size;
-				}
-				return this.seekTo(index, time, fn);
-			},
-			
-			prevPage: function(time, fn) {
-				return this.setPage(this.getPageIndex() - 1, time, fn);
-			},  
-	
-			nextPage: function(time, fn) {
-				return this.setPage(this.getPageIndex() + 1, time, fn);
-			}, 
-			
-			begin: function(time, fn) {
-				return this.seekTo(0, time, fn);	
-			},
-			
-			end: function(time, fn) {
-				return this.seekTo(this.getSize() - conf.size, time, fn);	
-			},
-			
-			reload: function() {
-				return load();	
-			},
-			
-			click: function(index, time, fn) {
-				
-				var item = self.getItems().eq(index);
-				var klass = conf.activeClass;			
-				
-				if (!item.hasClass(klass) && (index >= 0 || index < this.getSize())) {				
-					self.getItems().removeClass(klass);
-					item.addClass(klass);
-					var delta = Math.floor(conf.size / 2);
-					var to = index - delta;
-
-					// next to last item must work
-					if (to > self.getSize() - conf.size) { to--;	}
-					
-					if (to !== index) {
-						return this.seekTo(to, time, fn);		
-					}				 
-				}
-				
-				return self;
-			}			
-			
-		});
-	
-		
-		// mousewheel
-		if ($.isFunction($.fn.mousewheel)) { 
-			root.bind("mousewheel.scrollable", function(e, delta)  {
-				// opera goes to opposite direction
-				var step = $.browser.opera ? 1 : -1;
-				
-				self.move(delta > 0 ? step : -step, 50);
-				return false;
-			});
-		}  
-		
-		// prev button		
-		prev.addClass(conf.disabledClass).click(function() { 
-			self.prev(); 
-		});
-		
-
-		// next button
-		next.click(function() { 
-			self.next(); 
-		});
-		
-		// prev page button
-		nextPage.click(function() { 
-			self.nextPage(); 
-		});
-		
-
-		// next page button
-		prevPage.addClass(conf.disabledClass).click(function() { 
-			self.prevPage(); 
-		});		
-
-		
-		// keyboard
-		if (conf.keyboard) {
-			
-			// unfortunately window.keypress does not work on IE.
-			$(window).unbind("keypress.scrollable").bind("keypress.scrollable", function(evt) {
-				
-				var el = current;	
-				if (!el) { return; }
-					
-				if (horizontal && (evt.keyCode == 37 || evt.keyCode == 39)) {					
-					el.move(evt.keyCode == 37 ? -1 : 1);
-					return evt.preventDefault();
-				}	
-				
-				if (!horizontal && (evt.keyCode == 38 || evt.keyCode == 40)) {
-					el.move(evt.keyCode == 38 ? -1 : 1);
-					return evt.preventDefault();
-				}
-				
-				return true;
-				
-			});	 
-		}
-
-		// navi 			
-		function load() {			
-			
-			navi.each(function() {
-				
-				var nav = $(this);
-				
-				// generate new entries
-				if (nav.is(":empty") || nav.data("me") == self) {
-					
-					nav.empty();
-					nav.data("me", self);
-					
-					for (var i = 0; i < self.getPageAmount(); i++) {		
-						
-						var item = $("<" + conf.naviItem + "/>").attr("href", i).click(function(e) {							
-							var el = $(this);
-							el.parent().children().removeClass(conf.activeClass);
-							el.addClass(conf.activeClass);
-							self.setPage(el.attr("href"));
-							return e.preventDefault();
-						});
-						
-						if (i === 0) { item.addClass(conf.activeClass); }
-						nav.append(item);					
-					}
-					
-				// assign onClick events to existing entries
-				} else {
-					
-					// find a entries first -> syntaxically correct
-					var els = nav.children(); 
-					
-					els.each(function(i)  {
-						var item = $(this);
-						item.attr("href", i);
-						if (i === 0) { item.addClass(conf.activeClass); }
-						
-						item.click(function() {
-							nav.find("." + conf.activeClass).removeClass(conf.activeClass);
-							item.addClass(conf.activeClass);
-							self.setPage(item.attr("href"));
-						});
-						
-					});
-				}
-				
-			});
-			
-			
-			// item.click()
-			if (conf.clickable) {
-				self.getItems().each(function(index, arg) {
-					var el = $(this);
-					if (!el.data("set")) {
-						el.bind("click.scrollable", function() {
-							self.click(index);		
-						});
-						el.data("set", true);
-					}
-				});				
-			}
-			
-			
-			// hover
-			if (conf.hoverClass) {
-				self.getItems().hover(function()  {
-					$(this).addClass(conf.hoverClass);		
-				}, function() {
-					$(this).removeClass(conf.hoverClass);	
-				});
-			}			
-			
-			return self;
-		}
-		
-		load();
-		
-		
-		// interval stuff
-		var timer = null;
-
-		function setTimer() {
-			timer = setInterval(function()  {
-				self.next();
-				
-			}, conf.interval);	
-		}	
-		
-		if (conf.interval > 0) {			
-			
-			root.hover(function() {			
-				clearInterval(timer);		
-			}, function() {		
-				setTimer();	
-			});
-			
-			setTimer();	
-		}
-		
-	} 
-
-		
-	// jQuery plugin implementation
-	jQuery.prototype.scrollable = function(conf) { 
-			
-		// already constructed --> return API
-		var api = this.eq(typeof conf == 'number' ? conf : 0).data("scrollable");
-		if (api) { return api; }		
-		
- 
-		var opts = {
-			
-			// basics
-			size: 5,
-			vertical:false,			
-			clickable: true,
-			loop: false,
-			interval: 0,			
-			speed: 400,
-			keyboard: true,			
-			
-			// other
-			activeClass:'active',
-			disabledClass: 'disabled',
-			hoverClass: null,			
-			easing: 'swing',
-			
-			// navigational elements
-			items: '.items',
-			prev: '.prev',
-			next: '.next',
-			prevPage: '.prevPage',
-			nextPage: '.nextPage',			
-			navi: '.navi',
-			naviItem: 'a',
-
-			
-			// callbacks
-			onBeforeSeek: null,
-			onSeek: null,
-			alert: true
-		}; 
-		
-		
-		$.extend(opts, conf);		
-		
-		this.each(function() {			
-			var el = new Scrollable($(this), opts);
-			$(this).data("scrollable", el);	
-		});
-		
-		return this; 
-		
-	};
-			
-	
-})(jQuery);
--- a/test/emission_fichiers/jquery_004.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*!
-* jQuery Form Plugin
-* version: 2.43 (12-MAR-2010)
-* @requires jQuery v1.3.2 or later
-*
-* Examples and documentation at: http://malsup.com/jquery/form/
-* Dual licensed under the MIT and GPL licenses:
-* http://www.opensource.org/licenses/mit-license.php
-* http://www.gnu.org/licenses/gpl.html
-*/
-(function(b){function o(){if(b.fn.ajaxSubmit.debug){var a="[jquery.form] "+Array.prototype.join.call(arguments,"");if(window.console&&window.console.log)window.console.log(a);else window.opera&&window.opera.postError&&window.opera.postError(a)}}b.fn.ajaxSubmit=function(a){function d(){function r(){var p=h.attr("target"),n=h.attr("action");j.setAttribute("target",z);j.getAttribute("method")!="POST"&&j.setAttribute("method","POST");j.getAttribute("action")!=g.url&&j.setAttribute("action",g.url);g.skipEncodingOverride||
-h.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"});g.timeout&&setTimeout(function(){C=true;s()},g.timeout);var m=[];try{if(g.extraData)for(var u in g.extraData)m.push(b('<input type="hidden" name="'+u+'" value="'+g.extraData[u]+'" />').appendTo(j)[0]);t.appendTo("body");t.data("form-plugin-onload",s);j.submit()}finally{j.setAttribute("action",n);p?j.setAttribute("target",p):h.removeAttr("target");b(m).remove()}}function s(){if(!D){var p=true;try{if(C)throw"timeout";var n,m;m=v.contentWindow?
-v.contentWindow.document:v.contentDocument?v.contentDocument:v.document;var u=g.dataType=="xml"||m.XMLDocument||b.isXMLDoc(m);o("isXml="+u);if(!u&&(m.body==null||m.body.innerHTML=="")){if(--G){o("requeing onLoad callback, DOM not available");setTimeout(s,250);return}o("Could not access iframe DOM after 100 tries.");return}o("response detected");D=true;i.responseText=m.body?m.body.innerHTML:null;i.responseXML=m.XMLDocument?m.XMLDocument:m;i.getResponseHeader=function(H){return{"content-type":g.dataType}[H]};
-if(g.dataType=="json"||g.dataType=="script"){var E=m.getElementsByTagName("textarea")[0];if(E)i.responseText=E.value;else{var F=m.getElementsByTagName("pre")[0];if(F)i.responseText=F.innerHTML}}else if(g.dataType=="xml"&&!i.responseXML&&i.responseText!=null)i.responseXML=A(i.responseText);n=b.httpData(i,g.dataType)}catch(B){o("error caught:",B);p=false;i.error=B;b.handleError(g,i,"error",B)}if(p){g.success(n,"success");w&&b.event.trigger("ajaxSuccess",[i,g])}w&&b.event.trigger("ajaxComplete",[i,g]);
-w&&!--b.active&&b.event.trigger("ajaxStop");if(g.complete)g.complete(i,p?"success":"error");setTimeout(function(){t.removeData("form-plugin-onload");t.remove();i.responseXML=null},100)}}function A(p,n){if(window.ActiveXObject){n=new ActiveXObject("Microsoft.XMLDOM");n.async="false";n.loadXML(p)}else n=(new DOMParser).parseFromString(p,"text/xml");return n&&n.documentElement&&n.documentElement.tagName!="parsererror"?n:null}var j=h[0];if(b(":input[name=submit]",j).length)alert('Error: Form elements must not be named "submit".');
-else{var g=b.extend({},b.ajaxSettings,a),q=b.extend(true,{},b.extend(true,{},b.ajaxSettings),g),z="jqFormIO"+(new Date).getTime(),t=b('<iframe id="'+z+'" name="'+z+'" src="'+g.iframeSrc+'" onload="(jQuery(this).data(\'form-plugin-onload\'))()" />'),v=t[0];t.css({position:"absolute",top:"-1000px",left:"-1000px"});var i={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(){this.aborted=
-1;t.attr("src",g.iframeSrc)}},w=g.global;w&&!b.active++&&b.event.trigger("ajaxStart");w&&b.event.trigger("ajaxSend",[i,g]);if(q.beforeSend&&q.beforeSend(i,q)===false)q.global&&b.active--;else if(!i.aborted){var D=false,C=0;if(q=j.clk){var y=q.name;if(y&&!q.disabled){g.extraData=g.extraData||{};g.extraData[y]=q.value;if(q.type=="image"){g.extraData[y+".x"]=j.clk_x;g.extraData[y+".y"]=j.clk_y}}}g.forceSync?r():setTimeout(r,10);var G=100}}}if(!this.length){o("ajaxSubmit: skipping submit process - no element selected");
-return this}if(typeof a=="function")a={success:a};var e=b.trim(this.attr("action"));if(e)e=(e.match(/^([^#]+)/)||[])[1];e=e||window.location.href||"";a=b.extend({url:e,type:this.attr("method")||"GET",iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},a||{});e={};this.trigger("form-pre-serialize",[this,a,e]);if(e.veto){o("ajaxSubmit: submit vetoed via form-pre-serialize trigger");return this}if(a.beforeSerialize&&a.beforeSerialize(this,a)===false){o("ajaxSubmit: submit aborted via beforeSerialize callback");
-return this}var f=this.formToArray(a.semantic);if(a.data){a.extraData=a.data;for(var c in a.data)if(a.data[c]instanceof Array)for(var l in a.data[c])f.push({name:c,value:a.data[c][l]});else f.push({name:c,value:a.data[c]})}if(a.beforeSubmit&&a.beforeSubmit(f,this,a)===false){o("ajaxSubmit: submit aborted via beforeSubmit callback");return this}this.trigger("form-submit-validate",[f,this,a,e]);if(e.veto){o("ajaxSubmit: submit vetoed via form-submit-validate trigger");return this}c=b.param(f);if(a.type.toUpperCase()==
-"GET"){a.url+=(a.url.indexOf("?")>=0?"&":"?")+c;a.data=null}else a.data=c;var h=this,k=[];a.resetForm&&k.push(function(){h.resetForm()});a.clearForm&&k.push(function(){h.clearForm()});if(!a.dataType&&a.target){var x=a.success||function(){};k.push(function(r){var s=a.replaceTarget?"replaceWith":"html";b(a.target)[s](r).each(x,arguments)})}else a.success&&k.push(a.success);a.success=function(r,s,A){for(var j=0,g=k.length;j<g;j++)k[j].apply(a,[r,s,A||h,h])};c=b("input:file",this).fieldValue();l=false;
-for(e=0;e<c.length;e++)if(c[e])l=true;if(c.length&&a.iframe!==false||a.iframe||l||0)a.closeKeepAlive?b.get(a.closeKeepAlive,d):d();else b.ajax(a);this.trigger("form-submit-notify",[this,a]);return this};b.fn.ajaxForm=function(a){return this.ajaxFormUnbind().bind("submit.form-plugin",function(d){d.preventDefault();b(this).ajaxSubmit(a)}).bind("click.form-plugin",function(d){var e=d.target,f=b(e);if(!f.is(":submit,input:image")){e=f.closest(":submit");if(e.length==0)return;e=e[0]}var c=this;c.clk=e;
-if(e.type=="image")if(d.offsetX!=undefined){c.clk_x=d.offsetX;c.clk_y=d.offsetY}else if(typeof b.fn.offset=="function"){f=f.offset();c.clk_x=d.pageX-f.left;c.clk_y=d.pageY-f.top}else{c.clk_x=d.pageX-e.offsetLeft;c.clk_y=d.pageY-e.offsetTop}setTimeout(function(){c.clk=c.clk_x=c.clk_y=null},100)})};b.fn.ajaxFormUnbind=function(){return this.unbind("submit.form-plugin click.form-plugin")};b.fn.formToArray=function(a){var d=[];if(this.length==0)return d;var e=this[0],f=a?e.getElementsByTagName("*"):e.elements;
-if(!f)return d;for(var c=0,l=f.length;c<l;c++){var h=f[c],k=h.name;if(k)if(a&&e.clk&&h.type=="image"){if(!h.disabled&&e.clk==h){d.push({name:k,value:b(h).val()});d.push({name:k+".x",value:e.clk_x},{name:k+".y",value:e.clk_y})}}else if((h=b.fieldValue(h,true))&&h.constructor==Array)for(var x=0,r=h.length;x<r;x++)d.push({name:k,value:h[x]});else h!==null&&typeof h!="undefined"&&d.push({name:k,value:h})}if(!a&&e.clk){a=b(e.clk);f=a[0];if((k=f.name)&&!f.disabled&&f.type=="image"){d.push({name:k,value:a.val()});
-d.push({name:k+".x",value:e.clk_x},{name:k+".y",value:e.clk_y})}}return d};b.fn.formSerialize=function(a){return b.param(this.formToArray(a))};b.fn.fieldSerialize=function(a){var d=[];this.each(function(){var e=this.name;if(e){var f=b.fieldValue(this,a);if(f&&f.constructor==Array)for(var c=0,l=f.length;c<l;c++)d.push({name:e,value:f[c]});else f!==null&&typeof f!="undefined"&&d.push({name:this.name,value:f})}});return b.param(d)};b.fn.fieldValue=function(a){for(var d=[],e=0,f=this.length;e<f;e++){var c=
-b.fieldValue(this[e],a);c===null||typeof c=="undefined"||c.constructor==Array&&!c.length||(c.constructor==Array?b.merge(d,c):d.push(c))}return d};b.fieldValue=function(a,d){var e=a.name,f=a.type,c=a.tagName.toLowerCase();if(typeof d=="undefined")d=true;if(d&&(!e||a.disabled||f=="reset"||f=="button"||(f=="checkbox"||f=="radio")&&!a.checked||(f=="submit"||f=="image")&&a.form&&a.form.clk!=a||c=="select"&&a.selectedIndex==-1))return null;if(c=="select"){c=a.selectedIndex;if(c<0)return null;d=[];a=a.options;
-e=(f=f=="select-one")?c+1:a.length;for(c=f?c:0;c<e;c++){var l=a[c];if(l.selected){var h=l.value;h||(h=l.attributes&&l.attributes.value&&!l.attributes.value.specified?l.text:l.value);if(f)return h;d.push(h)}}return d}return a.value};b.fn.clearForm=function(){return this.each(function(){b("input,select,textarea",this).clearFields()})};b.fn.clearFields=b.fn.clearInputs=function(){return this.each(function(){var a=this.type,d=this.tagName.toLowerCase();if(a=="text"||a=="password"||d=="textarea")this.value=
-"";else if(a=="checkbox"||a=="radio")this.checked=false;else if(d=="select")this.selectedIndex=-1})};b.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=="function"||typeof this.reset=="object"&&!this.reset.nodeType)this.reset()})};b.fn.enable=function(a){if(a==undefined)a=true;return this.each(function(){this.disabled=!a})};b.fn.selected=function(a){if(a==undefined)a=true;return this.each(function(){var d=this.type;if(d=="checkbox"||d=="radio")this.checked=a;else if(this.tagName.toLowerCase()==
-"option"){d=b(this).parent("select");a&&d[0]&&d[0].type=="select-one"&&d.find("option").selected(false);this.selected=a}})}})(jQuery);
--- a/test/emission_fichiers/jquery_005.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4376 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.3.2
- * http://jquery.com/
- *
- * Copyright (c) 2009 John Resig
- * Dual licensed under the MIT and GPL licenses.
- * http://docs.jquery.com/License
- *
- * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
- * Revision: 6246
- */
-(function(){
-
-var 
-	// Will speed up references to window, and allows munging its name.
-	window = this,
-	// Will speed up references to undefined, and allows munging its name.
-	undefined,
-	// Map over jQuery in case of overwrite
-	_jQuery = window.jQuery,
-	// Map over the $ in case of overwrite
-	_$ = window.$,
-
-	jQuery = window.jQuery = window.$ = function( selector, context ) {
-		// The jQuery object is actually just the init constructor 'enhanced'
-		return new jQuery.fn.init( selector, context );
-	},
-
-	// A simple way to check for HTML strings or ID strings
-	// (both of which we optimize for)
-	quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
-	// Is it a simple selector
-	isSimple = /^.[^:#\[\.,]*$/;
-
-jQuery.fn = jQuery.prototype = {
-	init: function( selector, context ) {
-		// Make sure that a selection was provided
-		selector = selector || document;
-
-		// Handle $(DOMElement)
-		if ( selector.nodeType ) {
-			this[0] = selector;
-			this.length = 1;
-			this.context = selector;
-			return this;
-		}
-		// Handle HTML strings
-		if ( typeof selector === "string" ) {
-			// Are we dealing with HTML string or an ID?
-			var match = quickExpr.exec( selector );
-
-			// Verify a match, and that no context was specified for #id
-			if ( match && (match[1] || !context) ) {
-
-				// HANDLE: $(html) -> $(array)
-				if ( match[1] )
-					selector = jQuery.clean( [ match[1] ], context );
-
-				// HANDLE: $("#id")
-				else {
-					var elem = document.getElementById( match[3] );
-
-					// Handle the case where IE and Opera return items
-					// by name instead of ID
-					if ( elem && elem.id != match[3] )
-						return jQuery().find( selector );
-
-					// Otherwise, we inject the element directly into the jQuery object
-					var ret = jQuery( elem || [] );
-					ret.context = document;
-					ret.selector = selector;
-					return ret;
-				}
-
-			// HANDLE: $(expr, [context])
-			// (which is just equivalent to: $(content).find(expr)
-			} else
-				return jQuery( context ).find( selector );
-
-		// HANDLE: $(function)
-		// Shortcut for document ready
-		} else if ( jQuery.isFunction( selector ) )
-			return jQuery( document ).ready( selector );
-
-		// Make sure that old selector state is passed along
-		if ( selector.selector && selector.context ) {
-			this.selector = selector.selector;
-			this.context = selector.context;
-		}
-
-		return this.setArray(jQuery.isArray( selector ) ?
-			selector :
-			jQuery.makeArray(selector));
-	},
-
-	// Start with an empty selector
-	selector: "",
-
-	// The current version of jQuery being used
-	jquery: "1.3.2",
-
-	// The number of elements contained in the matched element set
-	size: function() {
-		return this.length;
-	},
-
-	// Get the Nth element in the matched element set OR
-	// Get the whole matched element set as a clean array
-	get: function( num ) {
-		return num === undefined ?
-
-			// Return a 'clean' array
-			Array.prototype.slice.call( this ) :
-
-			// Return just the object
-			this[ num ];
-	},
-
-	// Take an array of elements and push it onto the stack
-	// (returning the new matched element set)
-	pushStack: function( elems, name, selector ) {
-		// Build a new jQuery matched element set
-		var ret = jQuery( elems );
-
-		// Add the old object onto the stack (as a reference)
-		ret.prevObject = this;
-
-		ret.context = this.context;
-
-		if ( name === "find" )
-			ret.selector = this.selector + (this.selector ? " " : "") + selector;
-		else if ( name )
-			ret.selector = this.selector + "." + name + "(" + selector + ")";
-
-		// Return the newly-formed element set
-		return ret;
-	},
-
-	// Force the current matched set of elements to become
-	// the specified array of elements (destroying the stack in the process)
-	// You should use pushStack() in order to do this, but maintain the stack
-	setArray: function( elems ) {
-		// Resetting the length to 0, then using the native Array push
-		// is a super-fast way to populate an object with array-like properties
-		this.length = 0;
-		Array.prototype.push.apply( this, elems );
-
-		return this;
-	},
-
-	// Execute a callback for every element in the matched set.
-	// (You can seed the arguments with an array of args, but this is
-	// only used internally.)
-	each: function( callback, args ) {
-		return jQuery.each( this, callback, args );
-	},
-
-	// Determine the position of an element within
-	// the matched set of elements
-	index: function( elem ) {
-		// Locate the position of the desired element
-		return jQuery.inArray(
-			// If it receives a jQuery object, the first element is used
-			elem && elem.jquery ? elem[0] : elem
-		, this );
-	},
-
-	attr: function( name, value, type ) {
-		var options = name;
-
-		// Look for the case where we're accessing a style value
-		if ( typeof name === "string" )
-			if ( value === undefined )
-				return this[0] && jQuery[ type || "attr" ]( this[0], name );
-
-			else {
-				options = {};
-				options[ name ] = value;
-			}
-
-		// Check to see if we're setting style values
-		return this.each(function(i){
-			// Set all the styles
-			for ( name in options )
-				jQuery.attr(
-					type ?
-						this.style :
-						this,
-					name, jQuery.prop( this, options[ name ], type, i, name )
-				);
-		});
-	},
-
-	css: function( key, value ) {
-		// ignore negative width and height values
-		if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
-			value = undefined;
-		return this.attr( key, value, "curCSS" );
-	},
-
-	text: function( text ) {
-		if ( typeof text !== "object" && text != null )
-			return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
-
-		var ret = "";
-
-		jQuery.each( text || this, function(){
-			jQuery.each( this.childNodes, function(){
-				if ( this.nodeType != 8 )
-					ret += this.nodeType != 1 ?
-						this.nodeValue :
-						jQuery.fn.text( [ this ] );
-			});
-		});
-
-		return ret;
-	},
-
-	wrapAll: function( html ) {
-		if ( this[0] ) {
-			// The elements to wrap the target around
-			var wrap = jQuery( html, this[0].ownerDocument ).clone();
-
-			if ( this[0].parentNode )
-				wrap.insertBefore( this[0] );
-
-			wrap.map(function(){
-				var elem = this;
-
-				while ( elem.firstChild )
-					elem = elem.firstChild;
-
-				return elem;
-			}).append(this);
-		}
-
-		return this;
-	},
-
-	wrapInner: function( html ) {
-		return this.each(function(){
-			jQuery( this ).contents().wrapAll( html );
-		});
-	},
-
-	wrap: function( html ) {
-		return this.each(function(){
-			jQuery( this ).wrapAll( html );
-		});
-	},
-
-	append: function() {
-		return this.domManip(arguments, true, function(elem){
-			if (this.nodeType == 1)
-				this.appendChild( elem );
-		});
-	},
-
-	prepend: function() {
-		return this.domManip(arguments, true, function(elem){
-			if (this.nodeType == 1)
-				this.insertBefore( elem, this.firstChild );
-		});
-	},
-
-	before: function() {
-		return this.domManip(arguments, false, function(elem){
-			this.parentNode.insertBefore( elem, this );
-		});
-	},
-
-	after: function() {
-		return this.domManip(arguments, false, function(elem){
-			this.parentNode.insertBefore( elem, this.nextSibling );
-		});
-	},
-
-	end: function() {
-		return this.prevObject || jQuery( [] );
-	},
-
-	// For internal use only.
-	// Behaves like an Array's method, not like a jQuery method.
-	push: [].push,
-	sort: [].sort,
-	splice: [].splice,
-
-	find: function( selector ) {
-		if ( this.length === 1 ) {
-			var ret = this.pushStack( [], "find", selector );
-			ret.length = 0;
-			jQuery.find( selector, this[0], ret );
-			return ret;
-		} else {
-			return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){
-				return jQuery.find( selector, elem );
-			})), "find", selector );
-		}
-	},
-
-	clone: function( events ) {
-		// Do the clone
-		var ret = this.map(function(){
-			if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
-				// IE copies events bound via attachEvent when
-				// using cloneNode. Calling detachEvent on the
-				// clone will also remove the events from the orignal
-				// In order to get around this, we use innerHTML.
-				// Unfortunately, this means some modifications to
-				// attributes in IE that are actually only stored
-				// as properties will not be copied (such as the
-				// the name attribute on an input).
-				var html = this.outerHTML;
-				if ( !html ) {
-					var div = this.ownerDocument.createElement("div");
-					div.appendChild( this.cloneNode(true) );
-					html = div.innerHTML;
-				}
-
-				return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0];
-			} else
-				return this.cloneNode(true);
-		});
-
-		// Copy the events from the original to the clone
-		if ( events === true ) {
-			var orig = this.find("*").andSelf(), i = 0;
-
-			ret.find("*").andSelf().each(function(){
-				if ( this.nodeName !== orig[i].nodeName )
-					return;
-
-				var events = jQuery.data( orig[i], "events" );
-
-				for ( var type in events ) {
-					for ( var handler in events[ type ] ) {
-						jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
-					}
-				}
-
-				i++;
-			});
-		}
-
-		// Return the cloned set
-		return ret;
-	},
-
-	filter: function( selector ) {
-		return this.pushStack(
-			jQuery.isFunction( selector ) &&
-			jQuery.grep(this, function(elem, i){
-				return selector.call( elem, i );
-			}) ||
-
-			jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
-				return elem.nodeType === 1;
-			}) ), "filter", selector );
-	},
-
-	closest: function( selector ) {
-		var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null,
-			closer = 0;
-
-		return this.map(function(){
-			var cur = this;
-			while ( cur && cur.ownerDocument ) {
-				if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {
-					jQuery.data(cur, "closest", closer);
-					return cur;
-				}
-				cur = cur.parentNode;
-				closer++;
-			}
-		});
-	},
-
-	not: function( selector ) {
-		if ( typeof selector === "string" )
-			// test special case where just one selector is passed in
-			if ( isSimple.test( selector ) )
-				return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
-			else
-				selector = jQuery.multiFilter( selector, this );
-
-		var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
-		return this.filter(function() {
-			return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
-		});
-	},
-
-	add: function( selector ) {
-		return this.pushStack( jQuery.unique( jQuery.merge(
-			this.get(),
-			typeof selector === "string" ?
-				jQuery( selector ) :
-				jQuery.makeArray( selector )
-		)));
-	},
-
-	is: function( selector ) {
-		return !!selector && jQuery.multiFilter( selector, this ).length > 0;
-	},
-
-	hasClass: function( selector ) {
-		return !!selector && this.is( "." + selector );
-	},
-
-	val: function( value ) {
-		if ( value === undefined ) {			
-			var elem = this[0];
-
-			if ( elem ) {
-				if( jQuery.nodeName( elem, 'option' ) )
-					return (elem.attributes.value || {}).specified ? elem.value : elem.text;
-				
-				// We need to handle select boxes special
-				if ( jQuery.nodeName( elem, "select" ) ) {
-					var index = elem.selectedIndex,
-						values = [],
-						options = elem.options,
-						one = elem.type == "select-one";
-
-					// Nothing was selected
-					if ( index < 0 )
-						return null;
-
-					// Loop through all the selected options
-					for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
-						var option = options[ i ];
-
-						if ( option.selected ) {
-							// Get the specifc value for the option
-							value = jQuery(option).val();
-
-							// We don't need an array for one selects
-							if ( one )
-								return value;
-
-							// Multi-Selects return an array
-							values.push( value );
-						}
-					}
-
-					return values;				
-				}
-
-				// Everything else, we just grab the value
-				return (elem.value || "").replace(/\r/g, "");
-
-			}
-
-			return undefined;
-		}
-
-		if ( typeof value === "number" )
-			value += '';
-
-		return this.each(function(){
-			if ( this.nodeType != 1 )
-				return;
-
-			if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
-				this.checked = (jQuery.inArray(this.value, value) >= 0 ||
-					jQuery.inArray(this.name, value) >= 0);
-
-			else if ( jQuery.nodeName( this, "select" ) ) {
-				var values = jQuery.makeArray(value);
-
-				jQuery( "option", this ).each(function(){
-					this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
-						jQuery.inArray( this.text, values ) >= 0);
-				});
-
-				if ( !values.length )
-					this.selectedIndex = -1;
-
-			} else
-				this.value = value;
-		});
-	},
-
-	html: function( value ) {
-		return value === undefined ?
-			(this[0] ?
-				this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") :
-				null) :
-			this.empty().append( value );
-	},
-
-	replaceWith: function( value ) {
-		return this.after( value ).remove();
-	},
-
-	eq: function( i ) {
-		return this.slice( i, +i + 1 );
-	},
-
-	slice: function() {
-		return this.pushStack( Array.prototype.slice.apply( this, arguments ),
-			"slice", Array.prototype.slice.call(arguments).join(",") );
-	},
-
-	map: function( callback ) {
-		return this.pushStack( jQuery.map(this, function(elem, i){
-			return callback.call( elem, i, elem );
-		}));
-	},
-
-	andSelf: function() {
-		return this.add( this.prevObject );
-	},
-
-	domManip: function( args, table, callback ) {
-		if ( this[0] ) {
-			var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),
-				scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),
-				first = fragment.firstChild;
-
-			if ( first )
-				for ( var i = 0, l = this.length; i < l; i++ )
-					callback.call( root(this[i], first), this.length > 1 || i > 0 ?
-							fragment.cloneNode(true) : fragment );
-		
-			if ( scripts )
-				jQuery.each( scripts, evalScript );
-		}
-
-		return this;
-		
-		function root( elem, cur ) {
-			return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ?
-				(elem.getElementsByTagName("tbody")[0] ||
-				elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
-				elem;
-		}
-	}
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-function evalScript( i, elem ) {
-	if ( elem.src )
-		jQuery.ajax({
-			url: elem.src,
-			async: false,
-			dataType: "script"
-		});
-
-	else
-		jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
-
-	if ( elem.parentNode )
-		elem.parentNode.removeChild( elem );
-}
-
-function now(){
-	return +new Date;
-}
-
-jQuery.extend = jQuery.fn.extend = function() {
-	// copy reference to target object
-	var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
-
-	// Handle a deep copy situation
-	if ( typeof target === "boolean" ) {
-		deep = target;
-		target = arguments[1] || {};
-		// skip the boolean and the target
-		i = 2;
-	}
-
-	// Handle case when target is a string or something (possible in deep copy)
-	if ( typeof target !== "object" && !jQuery.isFunction(target) )
-		target = {};
-
-	// extend jQuery itself if only one argument is passed
-	if ( length == i ) {
-		target = this;
-		--i;
-	}
-
-	for ( ; i < length; i++ )
-		// Only deal with non-null/undefined values
-		if ( (options = arguments[ i ]) != null )
-			// Extend the base object
-			for ( var name in options ) {
-				var src = target[ name ], copy = options[ name ];
-
-				// Prevent never-ending loop
-				if ( target === copy )
-					continue;
-
-				// Recurse if we're merging object values
-				if ( deep && copy && typeof copy === "object" && !copy.nodeType )
-					target[ name ] = jQuery.extend( deep, 
-						// Never move original objects, clone them
-						src || ( copy.length != null ? [ ] : { } )
-					, copy );
-
-				// Don't bring in undefined values
-				else if ( copy !== undefined )
-					target[ name ] = copy;
-
-			}
-
-	// Return the modified object
-	return target;
-};
-
-// exclude the following css properties to add px
-var	exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
-	// cache defaultView
-	defaultView = document.defaultView || {},
-	toString = Object.prototype.toString;
-
-jQuery.extend({
-	noConflict: function( deep ) {
-		window.$ = _$;
-
-		if ( deep )
-			window.jQuery = _jQuery;
-
-		return jQuery;
-	},
-
-	// See test/unit/core.js for details concerning isFunction.
-	// Since version 1.3, DOM methods and functions like alert
-	// aren't supported. They return false on IE (#2968).
-	isFunction: function( obj ) {
-		return toString.call(obj) === "[object Function]";
-	},
-
-	isArray: function( obj ) {
-		return toString.call(obj) === "[object Array]";
-	},
-
-	// check if an element is in a (or is an) XML document
-	isXMLDoc: function( elem ) {
-		return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
-			!!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );
-	},
-
-	// Evalulates a script in a global context
-	globalEval: function( data ) {
-		if ( data && /\S/.test(data) ) {
-			// Inspired by code by Andrea Giammarchi
-			// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
-			var head = document.getElementsByTagName("head")[0] || document.documentElement,
-				script = document.createElement("script");
-
-			script.type = "text/javascript";
-			if ( jQuery.support.scriptEval )
-				script.appendChild( document.createTextNode( data ) );
-			else
-				script.text = data;
-
-			// Use insertBefore instead of appendChild  to circumvent an IE6 bug.
-			// This arises when a base node is used (#2709).
-			head.insertBefore( script, head.firstChild );
-			head.removeChild( script );
-		}
-	},
-
-	nodeName: function( elem, name ) {
-		return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
-	},
-
-	// args is for internal usage only
-	each: function( object, callback, args ) {
-		var name, i = 0, length = object.length;
-
-		if ( args ) {
-			if ( length === undefined ) {
-				for ( name in object )
-					if ( callback.apply( object[ name ], args ) === false )
-						break;
-			} else
-				for ( ; i < length; )
-					if ( callback.apply( object[ i++ ], args ) === false )
-						break;
-
-		// A special, fast, case for the most common use of each
-		} else {
-			if ( length === undefined ) {
-				for ( name in object )
-					if ( callback.call( object[ name ], name, object[ name ] ) === false )
-						break;
-			} else
-				for ( var value = object[0];
-					i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
-		}
-
-		return object;
-	},
-
-	prop: function( elem, value, type, i, name ) {
-		// Handle executable functions
-		if ( jQuery.isFunction( value ) )
-			value = value.call( elem, i );
-
-		// Handle passing in a number to a CSS property
-		return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
-			value + "px" :
-			value;
-	},
-
-	className: {
-		// internal only, use addClass("class")
-		add: function( elem, classNames ) {
-			jQuery.each((classNames || "").split(/\s+/), function(i, className){
-				if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
-					elem.className += (elem.className ? " " : "") + className;
-			});
-		},
-
-		// internal only, use removeClass("class")
-		remove: function( elem, classNames ) {
-			if (elem.nodeType == 1)
-				elem.className = classNames !== undefined ?
-					jQuery.grep(elem.className.split(/\s+/), function(className){
-						return !jQuery.className.has( classNames, className );
-					}).join(" ") :
-					"";
-		},
-
-		// internal only, use hasClass("class")
-		has: function( elem, className ) {
-			return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
-		}
-	},
-
-	// A method for quickly swapping in/out CSS properties to get correct calculations
-	swap: function( elem, options, callback ) {
-		var old = {};
-		// Remember the old values, and insert the new ones
-		for ( var name in options ) {
-			old[ name ] = elem.style[ name ];
-			elem.style[ name ] = options[ name ];
-		}
-
-		callback.call( elem );
-
-		// Revert the old values
-		for ( var name in options )
-			elem.style[ name ] = old[ name ];
-	},
-
-	css: function( elem, name, force, extra ) {
-		if ( name == "width" || name == "height" ) {
-			var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
-
-			function getWH() {
-				val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
-
-				if ( extra === "border" )
-					return;
-
-				jQuery.each( which, function() {
-					if ( !extra )
-						val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
-					if ( extra === "margin" )
-						val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
-					else
-						val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
-				});
-			}
-
-			if ( elem.offsetWidth !== 0 )
-				getWH();
-			else
-				jQuery.swap( elem, props, getWH );
-
-			return Math.max(0, Math.round(val));
-		}
-
-		return jQuery.curCSS( elem, name, force );
-	},
-
-	curCSS: function( elem, name, force ) {
-		var ret, style = elem.style;
-
-		// We need to handle opacity special in IE
-		if ( name == "opacity" && !jQuery.support.opacity ) {
-			ret = jQuery.attr( style, "opacity" );
-
-			return ret == "" ?
-				"1" :
-				ret;
-		}
-
-		// Make sure we're using the right name for getting the float value
-		if ( name.match( /float/i ) )
-			name = styleFloat;
-
-		if ( !force && style && style[ name ] )
-			ret = style[ name ];
-
-		else if ( defaultView.getComputedStyle ) {
-
-			// Only "float" is needed here
-			if ( name.match( /float/i ) )
-				name = "float";
-
-			name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
-
-			var computedStyle = defaultView.getComputedStyle( elem, null );
-
-			if ( computedStyle )
-				ret = computedStyle.getPropertyValue( name );
-
-			// We should always get a number back from opacity
-			if ( name == "opacity" && ret == "" )
-				ret = "1";
-
-		} else if ( elem.currentStyle ) {
-			var camelCase = name.replace(/\-(\w)/g, function(all, letter){
-				return letter.toUpperCase();
-			});
-
-			ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
-
-			// From the awesome hack by Dean Edwards
-			// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
-
-			// If we're not dealing with a regular pixel number
-			// but a number that has a weird ending, we need to convert it to pixels
-			if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
-				// Remember the original values
-				var left = style.left, rsLeft = elem.runtimeStyle.left;
-
-				// Put in the new values to get a computed value out
-				elem.runtimeStyle.left = elem.currentStyle.left;
-				style.left = ret || 0;
-				ret = style.pixelLeft + "px";
-
-				// Revert the changed values
-				style.left = left;
-				elem.runtimeStyle.left = rsLeft;
-			}
-		}
-
-		return ret;
-	},
-
-	clean: function( elems, context, fragment ) {
-		context = context || document;
-
-		// !context.createElement fails in IE with an error but returns typeof 'object'
-		if ( typeof context.createElement === "undefined" )
-			context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
-
-		// If a single string is passed in and it's a single tag
-		// just do a createElement and skip the rest
-		if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
-			var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
-			if ( match )
-				return [ context.createElement( match[1] ) ];
-		}
-
-		var ret = [], scripts = [], div = context.createElement("div");
-
-		jQuery.each(elems, function(i, elem){
-			if ( typeof elem === "number" )
-				elem += '';
-
-			if ( !elem )
-				return;
-
-			// Convert html string into DOM nodes
-			if ( typeof elem === "string" ) {
-				// Fix "XHTML"-style tags in all browsers
-				elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
-					return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
-						all :
-						front + "></" + tag + ">";
-				});
-
-				// Trim whitespace, otherwise indexOf won't work as expected
-				var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase();
-
-				var wrap =
-					// option or optgroup
-					!tags.indexOf("<opt") &&
-					[ 1, "<select multiple='multiple'>", "</select>" ] ||
-
-					!tags.indexOf("<leg") &&
-					[ 1, "<fieldset>", "</fieldset>" ] ||
-
-					tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
-					[ 1, "<table>", "</table>" ] ||
-
-					!tags.indexOf("<tr") &&
-					[ 2, "<table><tbody>", "</tbody></table>" ] ||
-
-				 	// <thead> matched above
-					(!tags.indexOf("<td") || !tags.indexOf("<th")) &&
-					[ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
-
-					!tags.indexOf("<col") &&
-					[ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
-
-					// IE can't serialize <link> and <script> tags normally
-					!jQuery.support.htmlSerialize &&
-					[ 1, "div<div>", "</div>" ] ||
-
-					[ 0, "", "" ];
-
-				// Go to html and back, then peel off extra wrappers
-				div.innerHTML = wrap[1] + elem + wrap[2];
-
-				// Move to the right depth
-				while ( wrap[0]-- )
-					div = div.lastChild;
-
-				// Remove IE's autoinserted <tbody> from table fragments
-				if ( !jQuery.support.tbody ) {
-
-					// String was a <table>, *may* have spurious <tbody>
-					var hasBody = /<tbody/i.test(elem),
-						tbody = !tags.indexOf("<table") && !hasBody ?
-							div.firstChild && div.firstChild.childNodes :
-
-						// String was a bare <thead> or <tfoot>
-						wrap[1] == "<table>" && !hasBody ?
-							div.childNodes :
-							[];
-
-					for ( var j = tbody.length - 1; j >= 0 ; --j )
-						if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
-							tbody[ j ].parentNode.removeChild( tbody[ j ] );
-
-					}
-
-				// IE completely kills leading whitespace when innerHTML is used
-				if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
-					div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
-				
-				elem = jQuery.makeArray( div.childNodes );
-			}
-
-			if ( elem.nodeType )
-				ret.push( elem );
-			else
-				ret = jQuery.merge( ret, elem );
-
-		});
-
-		if ( fragment ) {
-			for ( var i = 0; ret[i]; i++ ) {
-				if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
-					scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
-				} else {
-					if ( ret[i].nodeType === 1 )
-						ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
-					fragment.appendChild( ret[i] );
-				}
-			}
-			
-			return scripts;
-		}
-
-		return ret;
-	},
-
-	attr: function( elem, name, value ) {
-		// don't set attributes on text and comment nodes
-		if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
-			return undefined;
-
-		var notxml = !jQuery.isXMLDoc( elem ),
-			// Whether we are setting (or getting)
-			set = value !== undefined;
-
-		// Try to normalize/fix the name
-		name = notxml && jQuery.props[ name ] || name;
-
-		// Only do all the following if this is a node (faster for style)
-		// IE elem.getAttribute passes even for style
-		if ( elem.tagName ) {
-
-			// These attributes require special treatment
-			var special = /href|src|style/.test( name );
-
-			// Safari mis-reports the default selected property of a hidden option
-			// Accessing the parent's selectedIndex property fixes it
-			if ( name == "selected" && elem.parentNode )
-				elem.parentNode.selectedIndex;
-
-			// If applicable, access the attribute via the DOM 0 way
-			if ( name in elem && notxml && !special ) {
-				if ( set ){
-					// We can't allow the type property to be changed (since it causes problems in IE)
-					if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
-						throw "type property can't be changed";
-
-					elem[ name ] = value;
-				}
-
-				// browsers index elements by id/name on forms, give priority to attributes.
-				if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
-					return elem.getAttributeNode( name ).nodeValue;
-
-				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
-				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
-				if ( name == "tabIndex" ) {
-					var attributeNode = elem.getAttributeNode( "tabIndex" );
-					return attributeNode && attributeNode.specified
-						? attributeNode.value
-						: elem.nodeName.match(/(button|input|object|select|textarea)/i)
-							? 0
-							: elem.nodeName.match(/^(a|area)$/i) && elem.href
-								? 0
-								: undefined;
-				}
-
-				return elem[ name ];
-			}
-
-			if ( !jQuery.support.style && notxml &&  name == "style" )
-				return jQuery.attr( elem.style, "cssText", value );
-
-			if ( set )
-				// convert the value to a string (all browsers do this but IE) see #1070
-				elem.setAttribute( name, "" + value );
-
-			var attr = !jQuery.support.hrefNormalized && notxml && special
-					// Some attributes require a special call on IE
-					? elem.getAttribute( name, 2 )
-					: elem.getAttribute( name );
-
-			// Non-existent attributes return null, we normalize to undefined
-			return attr === null ? undefined : attr;
-		}
-
-		// elem is actually elem.style ... set the style
-
-		// IE uses filters for opacity
-		if ( !jQuery.support.opacity && name == "opacity" ) {
-			if ( set ) {
-				// IE has trouble with opacity if it does not have layout
-				// Force it by setting the zoom level
-				elem.zoom = 1;
-
-				// Set the alpha filter to set the opacity
-				elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
-					(parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
-			}
-
-			return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
-				(parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
-				"";
-		}
-
-		name = name.replace(/-([a-z])/ig, function(all, letter){
-			return letter.toUpperCase();
-		});
-
-		if ( set )
-			elem[ name ] = value;
-
-		return elem[ name ];
-	},
-
-	trim: function( text ) {
-		return (text || "").replace( /^\s+|\s+$/g, "" );
-	},
-
-	makeArray: function( array ) {
-		var ret = [];
-
-		if( array != null ){
-			var i = array.length;
-			// The window, strings (and functions) also have 'length'
-			if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
-				ret[0] = array;
-			else
-				while( i )
-					ret[--i] = array[i];
-		}
-
-		return ret;
-	},
-
-	inArray: function( elem, array ) {
-		for ( var i = 0, length = array.length; i < length; i++ )
-		// Use === because on IE, window == document
-			if ( array[ i ] === elem )
-				return i;
-
-		return -1;
-	},
-
-	merge: function( first, second ) {
-		// We have to loop this way because IE & Opera overwrite the length
-		// expando of getElementsByTagName
-		var i = 0, elem, pos = first.length;
-		// Also, we need to make sure that the correct elements are being returned
-		// (IE returns comment nodes in a '*' query)
-		if ( !jQuery.support.getAll ) {
-			while ( (elem = second[ i++ ]) != null )
-				if ( elem.nodeType != 8 )
-					first[ pos++ ] = elem;
-
-		} else
-			while ( (elem = second[ i++ ]) != null )
-				first[ pos++ ] = elem;
-
-		return first;
-	},
-
-	unique: function( array ) {
-		var ret = [], done = {};
-
-		try {
-
-			for ( var i = 0, length = array.length; i < length; i++ ) {
-				var id = jQuery.data( array[ i ] );
-
-				if ( !done[ id ] ) {
-					done[ id ] = true;
-					ret.push( array[ i ] );
-				}
-			}
-
-		} catch( e ) {
-			ret = array;
-		}
-
-		return ret;
-	},
-
-	grep: function( elems, callback, inv ) {
-		var ret = [];
-
-		// Go through the array, only saving the items
-		// that pass the validator function
-		for ( var i = 0, length = elems.length; i < length; i++ )
-			if ( !inv != !callback( elems[ i ], i ) )
-				ret.push( elems[ i ] );
-
-		return ret;
-	},
-
-	map: function( elems, callback ) {
-		var ret = [];
-
-		// Go through the array, translating each of the items to their
-		// new value (or values).
-		for ( var i = 0, length = elems.length; i < length; i++ ) {
-			var value = callback( elems[ i ], i );
-
-			if ( value != null )
-				ret[ ret.length ] = value;
-		}
-
-		return ret.concat.apply( [], ret );
-	}
-});
-
-// Use of jQuery.browser is deprecated.
-// It's included for backwards compatibility and plugins,
-// although they should work to migrate away.
-
-var userAgent = navigator.userAgent.toLowerCase();
-
-// Figure out what browser is being used
-jQuery.browser = {
-	version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
-	safari: /webkit/.test( userAgent ),
-	opera: /opera/.test( userAgent ),
-	msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
-	mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
-};
-
-jQuery.each({
-	parent: function(elem){return elem.parentNode;},
-	parents: function(elem){return jQuery.dir(elem,"parentNode");},
-	next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
-	prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
-	nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
-	prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
-	siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
-	children: function(elem){return jQuery.sibling(elem.firstChild);},
-	contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
-}, function(name, fn){
-	jQuery.fn[ name ] = function( selector ) {
-		var ret = jQuery.map( this, fn );
-
-		if ( selector && typeof selector == "string" )
-			ret = jQuery.multiFilter( selector, ret );
-
-		return this.pushStack( jQuery.unique( ret ), name, selector );
-	};
-});
-
-jQuery.each({
-	appendTo: "append",
-	prependTo: "prepend",
-	insertBefore: "before",
-	insertAfter: "after",
-	replaceAll: "replaceWith"
-}, function(name, original){
-	jQuery.fn[ name ] = function( selector ) {
-		var ret = [], insert = jQuery( selector );
-
-		for ( var i = 0, l = insert.length; i < l; i++ ) {
-			var elems = (i > 0 ? this.clone(true) : this).get();
-			jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
-			ret = ret.concat( elems );
-		}
-
-		return this.pushStack( ret, name, selector );
-	};
-});
-
-jQuery.each({
-	removeAttr: function( name ) {
-		jQuery.attr( this, name, "" );
-		if (this.nodeType == 1)
-			this.removeAttribute( name );
-	},
-
-	addClass: function( classNames ) {
-		jQuery.className.add( this, classNames );
-	},
-
-	removeClass: function( classNames ) {
-		jQuery.className.remove( this, classNames );
-	},
-
-	toggleClass: function( classNames, state ) {
-		if( typeof state !== "boolean" )
-			state = !jQuery.className.has( this, classNames );
-		jQuery.className[ state ? "add" : "remove" ]( this, classNames );
-	},
-
-	remove: function( selector ) {
-		if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
-			// Prevent memory leaks
-			jQuery( "*", this ).add([this]).each(function(){
-				jQuery.event.remove(this);
-				jQuery.removeData(this);
-			});
-			if (this.parentNode)
-				this.parentNode.removeChild( this );
-		}
-	},
-
-	empty: function() {
-		// Remove element nodes and prevent memory leaks
-		jQuery(this).children().remove();
-
-		// Remove any remaining nodes
-		while ( this.firstChild )
-			this.removeChild( this.firstChild );
-	}
-}, function(name, fn){
-	jQuery.fn[ name ] = function(){
-		return this.each( fn, arguments );
-	};
-});
-
-// Helper function used by the dimensions and offset modules
-function num(elem, prop) {
-	return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
-}
-var expando = "jQuery" + now(), uuid = 0, windowData = {};
-
-jQuery.extend({
-	cache: {},
-
-	data: function( elem, name, data ) {
-		elem = elem == window ?
-			windowData :
-			elem;
-
-		var id = elem[ expando ];
-
-		// Compute a unique ID for the element
-		if ( !id )
-			id = elem[ expando ] = ++uuid;
-
-		// Only generate the data cache if we're
-		// trying to access or manipulate it
-		if ( name && !jQuery.cache[ id ] )
-			jQuery.cache[ id ] = {};
-
-		// Prevent overriding the named cache with undefined values
-		if ( data !== undefined )
-			jQuery.cache[ id ][ name ] = data;
-
-		// Return the named cache data, or the ID for the element
-		return name ?
-			jQuery.cache[ id ][ name ] :
-			id;
-	},
-
-	removeData: function( elem, name ) {
-		elem = elem == window ?
-			windowData :
-			elem;
-
-		var id = elem[ expando ];
-
-		// If we want to remove a specific section of the element's data
-		if ( name ) {
-			if ( jQuery.cache[ id ] ) {
-				// Remove the section of cache data
-				delete jQuery.cache[ id ][ name ];
-
-				// If we've removed all the data, remove the element's cache
-				name = "";
-
-				for ( name in jQuery.cache[ id ] )
-					break;
-
-				if ( !name )
-					jQuery.removeData( elem );
-			}
-
-		// Otherwise, we want to remove all of the element's data
-		} else {
-			// Clean up the element expando
-			try {
-				delete elem[ expando ];
-			} catch(e){
-				// IE has trouble directly removing the expando
-				// but it's ok with using removeAttribute
-				if ( elem.removeAttribute )
-					elem.removeAttribute( expando );
-			}
-
-			// Completely remove the data cache
-			delete jQuery.cache[ id ];
-		}
-	},
-	queue: function( elem, type, data ) {
-		if ( elem ){
-	
-			type = (type || "fx") + "queue";
-	
-			var q = jQuery.data( elem, type );
-	
-			if ( !q || jQuery.isArray(data) )
-				q = jQuery.data( elem, type, jQuery.makeArray(data) );
-			else if( data )
-				q.push( data );
-	
-		}
-		return q;
-	},
-
-	dequeue: function( elem, type ){
-		var queue = jQuery.queue( elem, type ),
-			fn = queue.shift();
-		
-		if( !type || type === "fx" )
-			fn = queue[0];
-			
-		if( fn !== undefined )
-			fn.call(elem);
-	}
-});
-
-jQuery.fn.extend({
-	data: function( key, value ){
-		var parts = key.split(".");
-		parts[1] = parts[1] ? "." + parts[1] : "";
-
-		if ( value === undefined ) {
-			var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
-
-			if ( data === undefined && this.length )
-				data = jQuery.data( this[0], key );
-
-			return data === undefined && parts[1] ?
-				this.data( parts[0] ) :
-				data;
-		} else
-			return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
-				jQuery.data( this, key, value );
-			});
-	},
-
-	removeData: function( key ){
-		return this.each(function(){
-			jQuery.removeData( this, key );
-		});
-	},
-	queue: function(type, data){
-		if ( typeof type !== "string" ) {
-			data = type;
-			type = "fx";
-		}
-
-		if ( data === undefined )
-			return jQuery.queue( this[0], type );
-
-		return this.each(function(){
-			var queue = jQuery.queue( this, type, data );
-			
-			 if( type == "fx" && queue.length == 1 )
-				queue[0].call(this);
-		});
-	},
-	dequeue: function(type){
-		return this.each(function(){
-			jQuery.dequeue( this, type );
-		});
-	}
-});/*!
- * Sizzle CSS Selector Engine - v0.9.3
- *  Copyright 2009, The Dojo Foundation
- *  Released under the MIT, BSD, and GPL Licenses.
- *  More information: http://sizzlejs.com/
- */
-(function(){
-
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
-	done = 0,
-	toString = Object.prototype.toString;
-
-var Sizzle = function(selector, context, results, seed) {
-	results = results || [];
-	context = context || document;
-
-	if ( context.nodeType !== 1 && context.nodeType !== 9 )
-		return [];
-	
-	if ( !selector || typeof selector !== "string" ) {
-		return results;
-	}
-
-	var parts = [], m, set, checkSet, check, mode, extra, prune = true;
-	
-	// Reset the position of the chunker regexp (start from head)
-	chunker.lastIndex = 0;
-	
-	while ( (m = chunker.exec(selector)) !== null ) {
-		parts.push( m[1] );
-		
-		if ( m[2] ) {
-			extra = RegExp.rightContext;
-			break;
-		}
-	}
-
-	if ( parts.length > 1 && origPOS.exec( selector ) ) {
-		if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
-			set = posProcess( parts[0] + parts[1], context );
-		} else {
-			set = Expr.relative[ parts[0] ] ?
-				[ context ] :
-				Sizzle( parts.shift(), context );
-
-			while ( parts.length ) {
-				selector = parts.shift();
-
-				if ( Expr.relative[ selector ] )
-					selector += parts.shift();
-
-				set = posProcess( selector, set );
-			}
-		}
-	} else {
-		var ret = seed ?
-			{ expr: parts.pop(), set: makeArray(seed) } :
-			Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );
-		set = Sizzle.filter( ret.expr, ret.set );
-
-		if ( parts.length > 0 ) {
-			checkSet = makeArray(set);
-		} else {
-			prune = false;
-		}
-
-		while ( parts.length ) {
-			var cur = parts.pop(), pop = cur;
-
-			if ( !Expr.relative[ cur ] ) {
-				cur = "";
-			} else {
-				pop = parts.pop();
-			}
-
-			if ( pop == null ) {
-				pop = context;
-			}
-
-			Expr.relative[ cur ]( checkSet, pop, isXML(context) );
-		}
-	}
-
-	if ( !checkSet ) {
-		checkSet = set;
-	}
-
-	if ( !checkSet ) {
-		throw "Syntax error, unrecognized expression: " + (cur || selector);
-	}
-
-	if ( toString.call(checkSet) === "[object Array]" ) {
-		if ( !prune ) {
-			results.push.apply( results, checkSet );
-		} else if ( context.nodeType === 1 ) {
-			for ( var i = 0; checkSet[i] != null; i++ ) {
-				if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
-					results.push( set[i] );
-				}
-			}
-		} else {
-			for ( var i = 0; checkSet[i] != null; i++ ) {
-				if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
-					results.push( set[i] );
-				}
-			}
-		}
-	} else {
-		makeArray( checkSet, results );
-	}
-
-	if ( extra ) {
-		Sizzle( extra, context, results, seed );
-
-		if ( sortOrder ) {
-			hasDuplicate = false;
-			results.sort(sortOrder);
-
-			if ( hasDuplicate ) {
-				for ( var i = 1; i < results.length; i++ ) {
-					if ( results[i] === results[i-1] ) {
-						results.splice(i--, 1);
-					}
-				}
-			}
-		}
-	}
-
-	return results;
-};
-
-Sizzle.matches = function(expr, set){
-	return Sizzle(expr, null, null, set);
-};
-
-Sizzle.find = function(expr, context, isXML){
-	var set, match;
-
-	if ( !expr ) {
-		return [];
-	}
-
-	for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
-		var type = Expr.order[i], match;
-		
-		if ( (match = Expr.match[ type ].exec( expr )) ) {
-			var left = RegExp.leftContext;
-
-			if ( left.substr( left.length - 1 ) !== "\\" ) {
-				match[1] = (match[1] || "").replace(/\\/g, "");
-				set = Expr.find[ type ]( match, context, isXML );
-				if ( set != null ) {
-					expr = expr.replace( Expr.match[ type ], "" );
-					break;
-				}
-			}
-		}
-	}
-
-	if ( !set ) {
-		set = context.getElementsByTagName("*");
-	}
-
-	return {set: set, expr: expr};
-};
-
-Sizzle.filter = function(expr, set, inplace, not){
-	var old = expr, result = [], curLoop = set, match, anyFound,
-		isXMLFilter = set && set[0] && isXML(set[0]);
-
-	while ( expr && set.length ) {
-		for ( var type in Expr.filter ) {
-			if ( (match = Expr.match[ type ].exec( expr )) != null ) {
-				var filter = Expr.filter[ type ], found, item;
-				anyFound = false;
-
-				if ( curLoop == result ) {
-					result = [];
-				}
-
-				if ( Expr.preFilter[ type ] ) {
-					match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
-
-					if ( !match ) {
-						anyFound = found = true;
-					} else if ( match === true ) {
-						continue;
-					}
-				}
-
-				if ( match ) {
-					for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
-						if ( item ) {
-							found = filter( item, match, i, curLoop );
-							var pass = not ^ !!found;
-
-							if ( inplace && found != null ) {
-								if ( pass ) {
-									anyFound = true;
-								} else {
-									curLoop[i] = false;
-								}
-							} else if ( pass ) {
-								result.push( item );
-								anyFound = true;
-							}
-						}
-					}
-				}
-
-				if ( found !== undefined ) {
-					if ( !inplace ) {
-						curLoop = result;
-					}
-
-					expr = expr.replace( Expr.match[ type ], "" );
-
-					if ( !anyFound ) {
-						return [];
-					}
-
-					break;
-				}
-			}
-		}
-
-		// Improper expression
-		if ( expr == old ) {
-			if ( anyFound == null ) {
-				throw "Syntax error, unrecognized expression: " + expr;
-			} else {
-				break;
-			}
-		}
-
-		old = expr;
-	}
-
-	return curLoop;
-};
-
-var Expr = Sizzle.selectors = {
-	order: [ "ID", "NAME", "TAG" ],
-	match: {
-		ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
-		CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
-		NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
-		ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
-		TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
-		CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
-		POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
-		PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
-	},
-	attrMap: {
-		"class": "className",
-		"for": "htmlFor"
-	},
-	attrHandle: {
-		href: function(elem){
-			return elem.getAttribute("href");
-		}
-	},
-	relative: {
-		"+": function(checkSet, part, isXML){
-			var isPartStr = typeof part === "string",
-				isTag = isPartStr && !/\W/.test(part),
-				isPartStrNotTag = isPartStr && !isTag;
-
-			if ( isTag && !isXML ) {
-				part = part.toUpperCase();
-			}
-
-			for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
-				if ( (elem = checkSet[i]) ) {
-					while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
-
-					checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
-						elem || false :
-						elem === part;
-				}
-			}
-
-			if ( isPartStrNotTag ) {
-				Sizzle.filter( part, checkSet, true );
-			}
-		},
-		">": function(checkSet, part, isXML){
-			var isPartStr = typeof part === "string";
-
-			if ( isPartStr && !/\W/.test(part) ) {
-				part = isXML ? part : part.toUpperCase();
-
-				for ( var i = 0, l = checkSet.length; i < l; i++ ) {
-					var elem = checkSet[i];
-					if ( elem ) {
-						var parent = elem.parentNode;
-						checkSet[i] = parent.nodeName === part ? parent : false;
-					}
-				}
-			} else {
-				for ( var i = 0, l = checkSet.length; i < l; i++ ) {
-					var elem = checkSet[i];
-					if ( elem ) {
-						checkSet[i] = isPartStr ?
-							elem.parentNode :
-							elem.parentNode === part;
-					}
-				}
-
-				if ( isPartStr ) {
-					Sizzle.filter( part, checkSet, true );
-				}
-			}
-		},
-		"": function(checkSet, part, isXML){
-			var doneName = done++, checkFn = dirCheck;
-
-			if ( !part.match(/\W/) ) {
-				var nodeCheck = part = isXML ? part : part.toUpperCase();
-				checkFn = dirNodeCheck;
-			}
-
-			checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
-		},
-		"~": function(checkSet, part, isXML){
-			var doneName = done++, checkFn = dirCheck;
-
-			if ( typeof part === "string" && !part.match(/\W/) ) {
-				var nodeCheck = part = isXML ? part : part.toUpperCase();
-				checkFn = dirNodeCheck;
-			}
-
-			checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
-		}
-	},
-	find: {
-		ID: function(match, context, isXML){
-			if ( typeof context.getElementById !== "undefined" && !isXML ) {
-				var m = context.getElementById(match[1]);
-				return m ? [m] : [];
-			}
-		},
-		NAME: function(match, context, isXML){
-			if ( typeof context.getElementsByName !== "undefined" ) {
-				var ret = [], results = context.getElementsByName(match[1]);
-
-				for ( var i = 0, l = results.length; i < l; i++ ) {
-					if ( results[i].getAttribute("name") === match[1] ) {
-						ret.push( results[i] );
-					}
-				}
-
-				return ret.length === 0 ? null : ret;
-			}
-		},
-		TAG: function(match, context){
-			return context.getElementsByTagName(match[1]);
-		}
-	},
-	preFilter: {
-		CLASS: function(match, curLoop, inplace, result, not, isXML){
-			match = " " + match[1].replace(/\\/g, "") + " ";
-
-			if ( isXML ) {
-				return match;
-			}
-
-			for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
-				if ( elem ) {
-					if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
-						if ( !inplace )
-							result.push( elem );
-					} else if ( inplace ) {
-						curLoop[i] = false;
-					}
-				}
-			}
-
-			return false;
-		},
-		ID: function(match){
-			return match[1].replace(/\\/g, "");
-		},
-		TAG: function(match, curLoop){
-			for ( var i = 0; curLoop[i] === false; i++ ){}
-			return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
-		},
-		CHILD: function(match){
-			if ( match[1] == "nth" ) {
-				// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
-				var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
-					match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
-					!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
-
-				// calculate the numbers (first)n+(last) including if they are negative
-				match[2] = (test[1] + (test[2] || 1)) - 0;
-				match[3] = test[3] - 0;
-			}
-
-			// TODO: Move to normal caching system
-			match[0] = done++;
-
-			return match;
-		},
-		ATTR: function(match, curLoop, inplace, result, not, isXML){
-			var name = match[1].replace(/\\/g, "");
-			
-			if ( !isXML && Expr.attrMap[name] ) {
-				match[1] = Expr.attrMap[name];
-			}
-
-			if ( match[2] === "~=" ) {
-				match[4] = " " + match[4] + " ";
-			}
-
-			return match;
-		},
-		PSEUDO: function(match, curLoop, inplace, result, not){
-			if ( match[1] === "not" ) {
-				// If we're dealing with a complex expression, or a simple one
-				if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
-					match[3] = Sizzle(match[3], null, null, curLoop);
-				} else {
-					var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
-					if ( !inplace ) {
-						result.push.apply( result, ret );
-					}
-					return false;
-				}
-			} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
-				return true;
-			}
-			
-			return match;
-		},
-		POS: function(match){
-			match.unshift( true );
-			return match;
-		}
-	},
-	filters: {
-		enabled: function(elem){
-			return elem.disabled === false && elem.type !== "hidden";
-		},
-		disabled: function(elem){
-			return elem.disabled === true;
-		},
-		checked: function(elem){
-			return elem.checked === true;
-		},
-		selected: function(elem){
-			// Accessing this property makes selected-by-default
-			// options in Safari work properly
-			elem.parentNode.selectedIndex;
-			return elem.selected === true;
-		},
-		parent: function(elem){
-			return !!elem.firstChild;
-		},
-		empty: function(elem){
-			return !elem.firstChild;
-		},
-		has: function(elem, i, match){
-			return !!Sizzle( match[3], elem ).length;
-		},
-		header: function(elem){
-			return /h\d/i.test( elem.nodeName );
-		},
-		text: function(elem){
-			return "text" === elem.type;
-		},
-		radio: function(elem){
-			return "radio" === elem.type;
-		},
-		checkbox: function(elem){
-			return "checkbox" === elem.type;
-		},
-		file: function(elem){
-			return "file" === elem.type;
-		},
-		password: function(elem){
-			return "password" === elem.type;
-		},
-		submit: function(elem){
-			return "submit" === elem.type;
-		},
-		image: function(elem){
-			return "image" === elem.type;
-		},
-		reset: function(elem){
-			return "reset" === elem.type;
-		},
-		button: function(elem){
-			return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
-		},
-		input: function(elem){
-			return /input|select|textarea|button/i.test(elem.nodeName);
-		}
-	},
-	setFilters: {
-		first: function(elem, i){
-			return i === 0;
-		},
-		last: function(elem, i, match, array){
-			return i === array.length - 1;
-		},
-		even: function(elem, i){
-			return i % 2 === 0;
-		},
-		odd: function(elem, i){
-			return i % 2 === 1;
-		},
-		lt: function(elem, i, match){
-			return i < match[3] - 0;
-		},
-		gt: function(elem, i, match){
-			return i > match[3] - 0;
-		},
-		nth: function(elem, i, match){
-			return match[3] - 0 == i;
-		},
-		eq: function(elem, i, match){
-			return match[3] - 0 == i;
-		}
-	},
-	filter: {
-		PSEUDO: function(elem, match, i, array){
-			var name = match[1], filter = Expr.filters[ name ];
-
-			if ( filter ) {
-				return filter( elem, i, match, array );
-			} else if ( name === "contains" ) {
-				return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
-			} else if ( name === "not" ) {
-				var not = match[3];
-
-				for ( var i = 0, l = not.length; i < l; i++ ) {
-					if ( not[i] === elem ) {
-						return false;
-					}
-				}
-
-				return true;
-			}
-		},
-		CHILD: function(elem, match){
-			var type = match[1], node = elem;
-			switch (type) {
-				case 'only':
-				case 'first':
-					while (node = node.previousSibling)  {
-						if ( node.nodeType === 1 ) return false;
-					}
-					if ( type == 'first') return true;
-					node = elem;
-				case 'last':
-					while (node = node.nextSibling)  {
-						if ( node.nodeType === 1 ) return false;
-					}
-					return true;
-				case 'nth':
-					var first = match[2], last = match[3];
-
-					if ( first == 1 && last == 0 ) {
-						return true;
-					}
-					
-					var doneName = match[0],
-						parent = elem.parentNode;
-	
-					if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
-						var count = 0;
-						for ( node = parent.firstChild; node; node = node.nextSibling ) {
-							if ( node.nodeType === 1 ) {
-								node.nodeIndex = ++count;
-							}
-						} 
-						parent.sizcache = doneName;
-					}
-					
-					var diff = elem.nodeIndex - last;
-					if ( first == 0 ) {
-						return diff == 0;
-					} else {
-						return ( diff % first == 0 && diff / first >= 0 );
-					}
-			}
-		},
-		ID: function(elem, match){
-			return elem.nodeType === 1 && elem.getAttribute("id") === match;
-		},
-		TAG: function(elem, match){
-			return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
-		},
-		CLASS: function(elem, match){
-			return (" " + (elem.className || elem.getAttribute("class")) + " ")
-				.indexOf( match ) > -1;
-		},
-		ATTR: function(elem, match){
-			var name = match[1],
-				result = Expr.attrHandle[ name ] ?
-					Expr.attrHandle[ name ]( elem ) :
-					elem[ name ] != null ?
-						elem[ name ] :
-						elem.getAttribute( name ),
-				value = result + "",
-				type = match[2],
-				check = match[4];
-
-			return result == null ?
-				type === "!=" :
-				type === "=" ?
-				value === check :
-				type === "*=" ?
-				value.indexOf(check) >= 0 :
-				type === "~=" ?
-				(" " + value + " ").indexOf(check) >= 0 :
-				!check ?
-				value && result !== false :
-				type === "!=" ?
-				value != check :
-				type === "^=" ?
-				value.indexOf(check) === 0 :
-				type === "$=" ?
-				value.substr(value.length - check.length) === check :
-				type === "|=" ?
-				value === check || value.substr(0, check.length + 1) === check + "-" :
-				false;
-		},
-		POS: function(elem, match, i, array){
-			var name = match[2], filter = Expr.setFilters[ name ];
-
-			if ( filter ) {
-				return filter( elem, i, match, array );
-			}
-		}
-	}
-};
-
-var origPOS = Expr.match.POS;
-
-for ( var type in Expr.match ) {
-	Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
-}
-
-var makeArray = function(array, results) {
-	array = Array.prototype.slice.call( array );
-
-	if ( results ) {
-		results.push.apply( results, array );
-		return results;
-	}
-	
-	return array;
-};
-
-// Perform a simple check to determine if the browser is capable of
-// converting a NodeList to an array using builtin methods.
-try {
-	Array.prototype.slice.call( document.documentElement.childNodes );
-
-// Provide a fallback method if it does not work
-} catch(e){
-	makeArray = function(array, results) {
-		var ret = results || [];
-
-		if ( toString.call(array) === "[object Array]" ) {
-			Array.prototype.push.apply( ret, array );
-		} else {
-			if ( typeof array.length === "number" ) {
-				for ( var i = 0, l = array.length; i < l; i++ ) {
-					ret.push( array[i] );
-				}
-			} else {
-				for ( var i = 0; array[i]; i++ ) {
-					ret.push( array[i] );
-				}
-			}
-		}
-
-		return ret;
-	};
-}
-
-var sortOrder;
-
-if ( document.documentElement.compareDocumentPosition ) {
-	sortOrder = function( a, b ) {
-		var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
-		if ( ret === 0 ) {
-			hasDuplicate = true;
-		}
-		return ret;
-	};
-} else if ( "sourceIndex" in document.documentElement ) {
-	sortOrder = function( a, b ) {
-		var ret = a.sourceIndex - b.sourceIndex;
-		if ( ret === 0 ) {
-			hasDuplicate = true;
-		}
-		return ret;
-	};
-} else if ( document.createRange ) {
-	sortOrder = function( a, b ) {
-		var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
-		aRange.selectNode(a);
-		aRange.collapse(true);
-		bRange.selectNode(b);
-		bRange.collapse(true);
-		var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
-		if ( ret === 0 ) {
-			hasDuplicate = true;
-		}
-		return ret;
-	};
-}
-
-// Check to see if the browser returns elements by name when
-// querying by getElementById (and provide a workaround)
-(function(){
-	// We're going to inject a fake input element with a specified name
-	var form = document.createElement("form"),
-		id = "script" + (new Date).getTime();
-	form.innerHTML = "<input name='" + id + "'/>";
-
-	// Inject it into the root element, check its status, and remove it quickly
-	var root = document.documentElement;
-	root.insertBefore( form, root.firstChild );
-
-	// The workaround has to do additional checks after a getElementById
-	// Which slows things down for other browsers (hence the branching)
-	if ( !!document.getElementById( id ) ) {
-		Expr.find.ID = function(match, context, isXML){
-			if ( typeof context.getElementById !== "undefined" && !isXML ) {
-				var m = context.getElementById(match[1]);
-				return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
-			}
-		};
-
-		Expr.filter.ID = function(elem, match){
-			var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
-			return elem.nodeType === 1 && node && node.nodeValue === match;
-		};
-	}
-
-	root.removeChild( form );
-})();
-
-(function(){
-	// Check to see if the browser returns only elements
-	// when doing getElementsByTagName("*")
-
-	// Create a fake element
-	var div = document.createElement("div");
-	div.appendChild( document.createComment("") );
-
-	// Make sure no comments are found
-	if ( div.getElementsByTagName("*").length > 0 ) {
-		Expr.find.TAG = function(match, context){
-			var results = context.getElementsByTagName(match[1]);
-
-			// Filter out possible comments
-			if ( match[1] === "*" ) {
-				var tmp = [];
-
-				for ( var i = 0; results[i]; i++ ) {
-					if ( results[i].nodeType === 1 ) {
-						tmp.push( results[i] );
-					}
-				}
-
-				results = tmp;
-			}
-
-			return results;
-		};
-	}
-
-	// Check to see if an attribute returns normalized href attributes
-	div.innerHTML = "<a href='#'></a>";
-	if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
-			div.firstChild.getAttribute("href") !== "#" ) {
-		Expr.attrHandle.href = function(elem){
-			return elem.getAttribute("href", 2);
-		};
-	}
-})();
-
-if ( document.querySelectorAll ) (function(){
-	var oldSizzle = Sizzle, div = document.createElement("div");
-	div.innerHTML = "<p class='TEST'></p>";
-
-	// Safari can't handle uppercase or unicode characters when
-	// in quirks mode.
-	if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
-		return;
-	}
-	
-	Sizzle = function(query, context, extra, seed){
-		context = context || document;
-
-		// Only use querySelectorAll on non-XML documents
-		// (ID selectors don't work in non-HTML documents)
-		if ( !seed && context.nodeType === 9 && !isXML(context) ) {
-			try {
-				return makeArray( context.querySelectorAll(query), extra );
-			} catch(e){}
-		}
-		
-		return oldSizzle(query, context, extra, seed);
-	};
-
-	Sizzle.find = oldSizzle.find;
-	Sizzle.filter = oldSizzle.filter;
-	Sizzle.selectors = oldSizzle.selectors;
-	Sizzle.matches = oldSizzle.matches;
-})();
-
-if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
-	var div = document.createElement("div");
-	div.innerHTML = "<div class='test e'></div><div class='test'></div>";
-
-	// Opera can't find a second classname (in 9.6)
-	if ( div.getElementsByClassName("e").length === 0 )
-		return;
-
-	// Safari caches class attributes, doesn't catch changes (in 3.2)
-	div.lastChild.className = "e";
-
-	if ( div.getElementsByClassName("e").length === 1 )
-		return;
-
-	Expr.order.splice(1, 0, "CLASS");
-	Expr.find.CLASS = function(match, context, isXML) {
-		if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
-			return context.getElementsByClassName(match[1]);
-		}
-	};
-})();
-
-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
-	var sibDir = dir == "previousSibling" && !isXML;
-	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
-		var elem = checkSet[i];
-		if ( elem ) {
-			if ( sibDir && elem.nodeType === 1 ){
-				elem.sizcache = doneName;
-				elem.sizset = i;
-			}
-			elem = elem[dir];
-			var match = false;
-
-			while ( elem ) {
-				if ( elem.sizcache === doneName ) {
-					match = checkSet[elem.sizset];
-					break;
-				}
-
-				if ( elem.nodeType === 1 && !isXML ){
-					elem.sizcache = doneName;
-					elem.sizset = i;
-				}
-
-				if ( elem.nodeName === cur ) {
-					match = elem;
-					break;
-				}
-
-				elem = elem[dir];
-			}
-
-			checkSet[i] = match;
-		}
-	}
-}
-
-function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
-	var sibDir = dir == "previousSibling" && !isXML;
-	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
-		var elem = checkSet[i];
-		if ( elem ) {
-			if ( sibDir && elem.nodeType === 1 ) {
-				elem.sizcache = doneName;
-				elem.sizset = i;
-			}
-			elem = elem[dir];
-			var match = false;
-
-			while ( elem ) {
-				if ( elem.sizcache === doneName ) {
-					match = checkSet[elem.sizset];
-					break;
-				}
-
-				if ( elem.nodeType === 1 ) {
-					if ( !isXML ) {
-						elem.sizcache = doneName;
-						elem.sizset = i;
-					}
-					if ( typeof cur !== "string" ) {
-						if ( elem === cur ) {
-							match = true;
-							break;
-						}
-
-					} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
-						match = elem;
-						break;
-					}
-				}
-
-				elem = elem[dir];
-			}
-
-			checkSet[i] = match;
-		}
-	}
-}
-
-var contains = document.compareDocumentPosition ?  function(a, b){
-	return a.compareDocumentPosition(b) & 16;
-} : function(a, b){
-	return a !== b && (a.contains ? a.contains(b) : true);
-};
-
-var isXML = function(elem){
-	return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
-		!!elem.ownerDocument && isXML( elem.ownerDocument );
-};
-
-var posProcess = function(selector, context){
-	var tmpSet = [], later = "", match,
-		root = context.nodeType ? [context] : context;
-
-	// Position selectors must be done after the filter
-	// And so must :not(positional) so we move all PSEUDOs to the end
-	while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
-		later += match[0];
-		selector = selector.replace( Expr.match.PSEUDO, "" );
-	}
-
-	selector = Expr.relative[selector] ? selector + "*" : selector;
-
-	for ( var i = 0, l = root.length; i < l; i++ ) {
-		Sizzle( selector, root[i], tmpSet );
-	}
-
-	return Sizzle.filter( later, tmpSet );
-};
-
-// EXPOSE
-jQuery.find = Sizzle;
-jQuery.filter = Sizzle.filter;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.filters;
-
-Sizzle.selectors.filters.hidden = function(elem){
-	return elem.offsetWidth === 0 || elem.offsetHeight === 0;
-};
-
-Sizzle.selectors.filters.visible = function(elem){
-	return elem.offsetWidth > 0 || elem.offsetHeight > 0;
-};
-
-Sizzle.selectors.filters.animated = function(elem){
-	return jQuery.grep(jQuery.timers, function(fn){
-		return elem === fn.elem;
-	}).length;
-};
-
-jQuery.multiFilter = function( expr, elems, not ) {
-	if ( not ) {
-		expr = ":not(" + expr + ")";
-	}
-
-	return Sizzle.matches(expr, elems);
-};
-
-jQuery.dir = function( elem, dir ){
-	var matched = [], cur = elem[dir];
-	while ( cur && cur != document ) {
-		if ( cur.nodeType == 1 )
-			matched.push( cur );
-		cur = cur[dir];
-	}
-	return matched;
-};
-
-jQuery.nth = function(cur, result, dir, elem){
-	result = result || 1;
-	var num = 0;
-
-	for ( ; cur; cur = cur[dir] )
-		if ( cur.nodeType == 1 && ++num == result )
-			break;
-
-	return cur;
-};
-
-jQuery.sibling = function(n, elem){
-	var r = [];
-
-	for ( ; n; n = n.nextSibling ) {
-		if ( n.nodeType == 1 && n != elem )
-			r.push( n );
-	}
-
-	return r;
-};
-
-return;
-
-window.Sizzle = Sizzle;
-
-})();
-/*
- * A number of helper functions used for managing events.
- * Many of the ideas behind this code originated from
- * Dean Edwards' addEvent library.
- */
-jQuery.event = {
-
-	// Bind an event to an element
-	// Original by Dean Edwards
-	add: function(elem, types, handler, data) {
-		if ( elem.nodeType == 3 || elem.nodeType == 8 )
-			return;
-
-		// For whatever reason, IE has trouble passing the window object
-		// around, causing it to be cloned in the process
-		if ( elem.setInterval && elem != window )
-			elem = window;
-
-		// Make sure that the function being executed has a unique ID
-		if ( !handler.guid )
-			handler.guid = this.guid++;
-
-		// if data is passed, bind to handler
-		if ( data !== undefined ) {
-			// Create temporary function pointer to original handler
-			var fn = handler;
-
-			// Create unique handler function, wrapped around original handler
-			handler = this.proxy( fn );
-
-			// Store data in unique handler
-			handler.data = data;
-		}
-
-		// Init the element's event structure
-		var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
-			handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
-				// Handle the second event of a trigger and when
-				// an event is called after a page has unloaded
-				return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
-					jQuery.event.handle.apply(arguments.callee.elem, arguments) :
-					undefined;
-			});
-		// Add elem as a property of the handle function
-		// This is to prevent a memory leak with non-native
-		// event in IE.
-		handle.elem = elem;
-
-		// Handle multiple events separated by a space
-		// jQuery(...).bind("mouseover mouseout", fn);
-		jQuery.each(types.split(/\s+/), function(index, type) {
-			// Namespaced event handlers
-			var namespaces = type.split(".");
-			type = namespaces.shift();
-			handler.type = namespaces.slice().sort().join(".");
-
-			// Get the current list of functions bound to this event
-			var handlers = events[type];
-			
-			if ( jQuery.event.specialAll[type] )
-				jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
-
-			// Init the event handler queue
-			if (!handlers) {
-				handlers = events[type] = {};
-
-				// Check for a special event handler
-				// Only use addEventListener/attachEvent if the special
-				// events handler returns false
-				if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
-					// Bind the global event handler to the element
-					if (elem.addEventListener)
-						elem.addEventListener(type, handle, false);
-					else if (elem.attachEvent)
-						elem.attachEvent("on" + type, handle);
-				}
-			}
-
-			// Add the function to the element's handler list
-			handlers[handler.guid] = handler;
-
-			// Keep track of which events have been used, for global triggering
-			jQuery.event.global[type] = true;
-		});
-
-		// Nullify elem to prevent memory leaks in IE
-		elem = null;
-	},
-
-	guid: 1,
-	global: {},
-
-	// Detach an event or set of events from an element
-	remove: function(elem, types, handler) {
-		// don't do events on text and comment nodes
-		if ( elem.nodeType == 3 || elem.nodeType == 8 )
-			return;
-
-		var events = jQuery.data(elem, "events"), ret, index;
-
-		if ( events ) {
-			// Unbind all events for the element
-			if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
-				for ( var type in events )
-					this.remove( elem, type + (types || "") );
-			else {
-				// types is actually an event object here
-				if ( types.type ) {
-					handler = types.handler;
-					types = types.type;
-				}
-
-				// Handle multiple events seperated by a space
-				// jQuery(...).unbind("mouseover mouseout", fn);
-				jQuery.each(types.split(/\s+/), function(index, type){
-					// Namespaced event handlers
-					var namespaces = type.split(".");
-					type = namespaces.shift();
-					var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
-
-					if ( events[type] ) {
-						// remove the given handler for the given type
-						if ( handler )
-							delete events[type][handler.guid];
-
-						// remove all handlers for the given type
-						else
-							for ( var handle in events[type] )
-								// Handle the removal of namespaced events
-								if ( namespace.test(events[type][handle].type) )
-									delete events[type][handle];
-									
-						if ( jQuery.event.specialAll[type] )
-							jQuery.event.specialAll[type].teardown.call(elem, namespaces);
-
-						// remove generic event handler if no more handlers exist
-						for ( ret in events[type] ) break;
-						if ( !ret ) {
-							if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
-								if (elem.removeEventListener)
-									elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
-								else if (elem.detachEvent)
-									elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
-							}
-							ret = null;
-							delete events[type];
-						}
-					}
-				});
-			}
-
-			// Remove the expando if it's no longer used
-			for ( ret in events ) break;
-			if ( !ret ) {
-				var handle = jQuery.data( elem, "handle" );
-				if ( handle ) handle.elem = null;
-				jQuery.removeData( elem, "events" );
-				jQuery.removeData( elem, "handle" );
-			}
-		}
-	},
-
-	// bubbling is internal
-	trigger: function( event, data, elem, bubbling ) {
-		// Event object or event type
-		var type = event.type || event;
-
-		if( !bubbling ){
-			event = typeof event === "object" ?
-				// jQuery.Event object
-				event[expando] ? event :
-				// Object literal
-				jQuery.extend( jQuery.Event(type), event ) :
-				// Just the event type (string)
-				jQuery.Event(type);
-
-			if ( type.indexOf("!") >= 0 ) {
-				event.type = type = type.slice(0, -1);
-				event.exclusive = true;
-			}
-
-			// Handle a global trigger
-			if ( !elem ) {
-				// Don't bubble custom events when global (to avoid too much overhead)
-				event.stopPropagation();
-				// Only trigger if we've ever bound an event for it
-				if ( this.global[type] )
-					jQuery.each( jQuery.cache, function(){
-						if ( this.events && this.events[type] )
-							jQuery.event.trigger( event, data, this.handle.elem );
-					});
-			}
-
-			// Handle triggering a single element
-
-			// don't do events on text and comment nodes
-			if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
-				return undefined;
-			
-			// Clean up in case it is reused
-			event.result = undefined;
-			event.target = elem;
-			
-			// Clone the incoming data, if any
-			data = jQuery.makeArray(data);
-			data.unshift( event );
-		}
-
-		event.currentTarget = elem;
-
-		// Trigger the event, it is assumed that "handle" is a function
-		var handle = jQuery.data(elem, "handle");
-		if ( handle )
-			handle.apply( elem, data );
-
-		// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
-		if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
-			event.result = false;
-
-		// Trigger the native events (except for clicks on links)
-		if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
-			this.triggered = true;
-			try {
-				elem[ type ]();
-			// prevent IE from throwing an error for some hidden elements
-			} catch (e) {}
-		}
-
-		this.triggered = false;
-
-		if ( !event.isPropagationStopped() ) {
-			var parent = elem.parentNode || elem.ownerDocument;
-			if ( parent )
-				jQuery.event.trigger(event, data, parent, true);
-		}
-	},
-
-	handle: function(event) {
-		// returned undefined or false
-		var all, handlers;
-
-		event = arguments[0] = jQuery.event.fix( event || window.event );
-		event.currentTarget = this;
-		
-		// Namespaced event handlers
-		var namespaces = event.type.split(".");
-		event.type = namespaces.shift();
-
-		// Cache this now, all = true means, any handler
-		all = !namespaces.length && !event.exclusive;
-		
-		var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
-
-		handlers = ( jQuery.data(this, "events") || {} )[event.type];
-
-		for ( var j in handlers ) {
-			var handler = handlers[j];
-
-			// Filter the functions by class
-			if ( all || namespace.test(handler.type) ) {
-				// Pass in a reference to the handler function itself
-				// So that we can later remove it
-				event.handler = handler;
-				event.data = handler.data;
-
-				var ret = handler.apply(this, arguments);
-
-				if( ret !== undefined ){
-					event.result = ret;
-					if ( ret === false ) {
-						event.preventDefault();
-						event.stopPropagation();
-					}
-				}
-
-				if( event.isImmediatePropagationStopped() )
-					break;
-
-			}
-		}
-	},
-
-	props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-
-	fix: function(event) {
-		if ( event[expando] )
-			return event;
-
-		// store a copy of the original event object
-		// and "clone" to set read-only properties
-		var originalEvent = event;
-		event = jQuery.Event( originalEvent );
-
-		for ( var i = this.props.length, prop; i; ){
-			prop = this.props[ --i ];
-			event[ prop ] = originalEvent[ prop ];
-		}
-
-		// Fix target property, if necessary
-		if ( !event.target )
-			event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
-
-		// check if target is a textnode (safari)
-		if ( event.target.nodeType == 3 )
-			event.target = event.target.parentNode;
-
-		// Add relatedTarget, if necessary
-		if ( !event.relatedTarget && event.fromElement )
-			event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
-
-		// Calculate pageX/Y if missing and clientX/Y available
-		if ( event.pageX == null && event.clientX != null ) {
-			var doc = document.documentElement, body = document.body;
-			event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
-			event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
-		}
-
-		// Add which for key events
-		if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
-			event.which = event.charCode || event.keyCode;
-
-		// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
-		if ( !event.metaKey && event.ctrlKey )
-			event.metaKey = event.ctrlKey;
-
-		// Add which for click: 1 == left; 2 == middle; 3 == right
-		// Note: button is not normalized, so don't use it
-		if ( !event.which && event.button )
-			event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
-
-		return event;
-	},
-
-	proxy: function( fn, proxy ){
-		proxy = proxy || function(){ return fn.apply(this, arguments); };
-		// Set the guid of unique handler to the same of original handler, so it can be removed
-		proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
-		// So proxy can be declared as an argument
-		return proxy;
-	},
-
-	special: {
-		ready: {
-			// Make sure the ready event is setup
-			setup: bindReady,
-			teardown: function() {}
-		}
-	},
-	
-	specialAll: {
-		live: {
-			setup: function( selector, namespaces ){
-				jQuery.event.add( this, namespaces[0], liveHandler );
-			},
-			teardown:  function( namespaces ){
-				if ( namespaces.length ) {
-					var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
-					
-					jQuery.each( (jQuery.data(this, "events").live || {}), function(){
-						if ( name.test(this.type) )
-							remove++;
-					});
-					
-					if ( remove < 1 )
-						jQuery.event.remove( this, namespaces[0], liveHandler );
-				}
-			}
-		}
-	}
-};
-
-jQuery.Event = function( src ){
-	// Allow instantiation without the 'new' keyword
-	if( !this.preventDefault )
-		return new jQuery.Event(src);
-	
-	// Event object
-	if( src && src.type ){
-		this.originalEvent = src;
-		this.type = src.type;
-	// Event type
-	}else
-		this.type = src;
-
-	// timeStamp is buggy for some events on Firefox(#3843)
-	// So we won't rely on the native value
-	this.timeStamp = now();
-	
-	// Mark it as fixed
-	this[expando] = true;
-};
-
-function returnFalse(){
-	return false;
-}
-function returnTrue(){
-	return true;
-}
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
-	preventDefault: function() {
-		this.isDefaultPrevented = returnTrue;
-
-		var e = this.originalEvent;
-		if( !e )
-			return;
-		// if preventDefault exists run it on the original event
-		if (e.preventDefault)
-			e.preventDefault();
-		// otherwise set the returnValue property of the original event to false (IE)
-		e.returnValue = false;
-	},
-	stopPropagation: function() {
-		this.isPropagationStopped = returnTrue;
-
-		var e = this.originalEvent;
-		if( !e )
-			return;
-		// if stopPropagation exists run it on the original event
-		if (e.stopPropagation)
-			e.stopPropagation();
-		// otherwise set the cancelBubble property of the original event to true (IE)
-		e.cancelBubble = true;
-	},
-	stopImmediatePropagation:function(){
-		this.isImmediatePropagationStopped = returnTrue;
-		this.stopPropagation();
-	},
-	isDefaultPrevented: returnFalse,
-	isPropagationStopped: returnFalse,
-	isImmediatePropagationStopped: returnFalse
-};
-// Checks if an event happened on an element within another element
-// Used in jQuery.event.special.mouseenter and mouseleave handlers
-var withinElement = function(event) {
-	// Check if mouse(over|out) are still within the same parent element
-	var parent = event.relatedTarget;
-	// Traverse up the tree
-	while ( parent && parent != this )
-		try { parent = parent.parentNode; }
-		catch(e) { parent = this; }
-	
-	if( parent != this ){
-		// set the correct event type
-		event.type = event.data;
-		// handle event if we actually just moused on to a non sub-element
-		jQuery.event.handle.apply( this, arguments );
-	}
-};
-	
-jQuery.each({ 
-	mouseover: 'mouseenter', 
-	mouseout: 'mouseleave'
-}, function( orig, fix ){
-	jQuery.event.special[ fix ] = {
-		setup: function(){
-			jQuery.event.add( this, orig, withinElement, fix );
-		},
-		teardown: function(){
-			jQuery.event.remove( this, orig, withinElement );
-		}
-	};			   
-});
-
-jQuery.fn.extend({
-	bind: function( type, data, fn ) {
-		return type == "unload" ? this.one(type, data, fn) : this.each(function(){
-			jQuery.event.add( this, type, fn || data, fn && data );
-		});
-	},
-
-	one: function( type, data, fn ) {
-		var one = jQuery.event.proxy( fn || data, function(event) {
-			jQuery(this).unbind(event, one);
-			return (fn || data).apply( this, arguments );
-		});
-		return this.each(function(){
-			jQuery.event.add( this, type, one, fn && data);
-		});
-	},
-
-	unbind: function( type, fn ) {
-		return this.each(function(){
-			jQuery.event.remove( this, type, fn );
-		});
-	},
-
-	trigger: function( type, data ) {
-		return this.each(function(){
-			jQuery.event.trigger( type, data, this );
-		});
-	},
-
-	triggerHandler: function( type, data ) {
-		if( this[0] ){
-			var event = jQuery.Event(type);
-			event.preventDefault();
-			event.stopPropagation();
-			jQuery.event.trigger( event, data, this[0] );
-			return event.result;
-		}		
-	},
-
-	toggle: function( fn ) {
-		// Save reference to arguments for access in closure
-		var args = arguments, i = 1;
-
-		// link all the functions, so any of them can unbind this click handler
-		while( i < args.length )
-			jQuery.event.proxy( fn, args[i++] );
-
-		return this.click( jQuery.event.proxy( fn, function(event) {
-			// Figure out which function to execute
-			this.lastToggle = ( this.lastToggle || 0 ) % i;
-
-			// Make sure that clicks stop
-			event.preventDefault();
-
-			// and execute the function
-			return args[ this.lastToggle++ ].apply( this, arguments ) || false;
-		}));
-	},
-
-	hover: function(fnOver, fnOut) {
-		return this.mouseenter(fnOver).mouseleave(fnOut);
-	},
-
-	ready: function(fn) {
-		// Attach the listeners
-		bindReady();
-
-		// If the DOM is already ready
-		if ( jQuery.isReady )
-			// Execute the function immediately
-			fn.call( document, jQuery );
-
-		// Otherwise, remember the function for later
-		else
-			// Add the function to the wait list
-			jQuery.readyList.push( fn );
-
-		return this;
-	},
-	
-	live: function( type, fn ){
-		var proxy = jQuery.event.proxy( fn );
-		proxy.guid += this.selector + type;
-
-		jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
-
-		return this;
-	},
-	
-	die: function( type, fn ){
-		jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
-		return this;
-	}
-});
-
-function liveHandler( event ){
-	var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
-		stop = true,
-		elems = [];
-
-	jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
-		if ( check.test(fn.type) ) {
-			var elem = jQuery(event.target).closest(fn.data)[0];
-			if ( elem )
-				elems.push({ elem: elem, fn: fn });
-		}
-	});
-
-	elems.sort(function(a,b) {
-		return jQuery.data(a.elem, "closest") - jQuery.data(b.elem, "closest");
-	});
-	
-	jQuery.each(elems, function(){
-		if ( this.fn.call(this.elem, event, this.fn.data) === false )
-			return (stop = false);
-	});
-
-	return stop;
-}
-
-function liveConvert(type, selector){
-	return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
-}
-
-jQuery.extend({
-	isReady: false,
-	readyList: [],
-	// Handle when the DOM is ready
-	ready: function() {
-		// Make sure that the DOM is not already loaded
-		if ( !jQuery.isReady ) {
-			// Remember that the DOM is ready
-			jQuery.isReady = true;
-
-			// If there are functions bound, to execute
-			if ( jQuery.readyList ) {
-				// Execute all of them
-				jQuery.each( jQuery.readyList, function(){
-					this.call( document, jQuery );
-				});
-
-				// Reset the list of functions
-				jQuery.readyList = null;
-			}
-
-			// Trigger any bound ready events
-			jQuery(document).triggerHandler("ready");
-		}
-	}
-});
-
-var readyBound = false;
-
-function bindReady(){
-	if ( readyBound ) return;
-	readyBound = true;
-
-	// Mozilla, Opera and webkit nightlies currently support this event
-	if ( document.addEventListener ) {
-		// Use the handy event callback
-		document.addEventListener( "DOMContentLoaded", function(){
-			document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
-			jQuery.ready();
-		}, false );
-
-	// If IE event model is used
-	} else if ( document.attachEvent ) {
-		// ensure firing before onload,
-		// maybe late but safe also for iframes
-		document.attachEvent("onreadystatechange", function(){
-			if ( document.readyState === "complete" ) {
-				document.detachEvent( "onreadystatechange", arguments.callee );
-				jQuery.ready();
-			}
-		});
-
-		// If IE and not an iframe
-		// continually check to see if the document is ready
-		if ( document.documentElement.doScroll && window == window.top ) (function(){
-			if ( jQuery.isReady ) return;
-
-			try {
-				// If IE is used, use the trick by Diego Perini
-				// http://javascript.nwbox.com/IEContentLoaded/
-				document.documentElement.doScroll("left");
-			} catch( error ) {
-				setTimeout( arguments.callee, 0 );
-				return;
-			}
-
-			// and execute any waiting functions
-			jQuery.ready();
-		})();
-	}
-
-	// A fallback to window.onload, that will always work
-	jQuery.event.add( window, "load", jQuery.ready );
-}
-
-jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
-	"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
-	"change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){
-
-	// Handle event binding
-	jQuery.fn[name] = function(fn){
-		return fn ? this.bind(name, fn) : this.trigger(name);
-	};
-});
-
-// Prevent memory leaks in IE
-// And prevent errors on refresh with events like mouseover in other browsers
-// Window isn't included so as not to unbind existing unload events
-jQuery( window ).bind( 'unload', function(){ 
-	for ( var id in jQuery.cache )
-		// Skip the window
-		if ( id != 1 && jQuery.cache[ id ].handle )
-			jQuery.event.remove( jQuery.cache[ id ].handle.elem );
-}); 
-(function(){
-
-	jQuery.support = {};
-
-	var root = document.documentElement,
-		script = document.createElement("script"),
-		div = document.createElement("div"),
-		id = "script" + (new Date).getTime();
-
-	div.style.display = "none";
-	div.innerHTML = '   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
-
-	var all = div.getElementsByTagName("*"),
-		a = div.getElementsByTagName("a")[0];
-
-	// Can't get basic test support
-	if ( !all || !all.length || !a ) {
-		return;
-	}
-
-	jQuery.support = {
-		// IE strips leading whitespace when .innerHTML is used
-		leadingWhitespace: div.firstChild.nodeType == 3,
-		
-		// Make sure that tbody elements aren't automatically inserted
-		// IE will insert them into empty tables
-		tbody: !div.getElementsByTagName("tbody").length,
-		
-		// Make sure that you can get all elements in an <object> element
-		// IE 7 always returns no results
-		objectAll: !!div.getElementsByTagName("object")[0]
-			.getElementsByTagName("*").length,
-		
-		// Make sure that link elements get serialized correctly by innerHTML
-		// This requires a wrapper element in IE
-		htmlSerialize: !!div.getElementsByTagName("link").length,
-		
-		// Get the style information from getAttribute
-		// (IE uses .cssText insted)
-		style: /red/.test( a.getAttribute("style") ),
-		
-		// Make sure that URLs aren't manipulated
-		// (IE normalizes it by default)
-		hrefNormalized: a.getAttribute("href") === "/a",
-		
-		// Make sure that element opacity exists
-		// (IE uses filter instead)
-		opacity: a.style.opacity === "0.5",
-		
-		// Verify style float existence
-		// (IE uses styleFloat instead of cssFloat)
-		cssFloat: !!a.style.cssFloat,
-
-		// Will be defined later
-		scriptEval: false,
-		noCloneEvent: true,
-		boxModel: null
-	};
-	
-	script.type = "text/javascript";
-	try {
-		script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
-	} catch(e){}
-
-	root.insertBefore( script, root.firstChild );
-	
-	// Make sure that the execution of code works by injecting a script
-	// tag with appendChild/createTextNode
-	// (IE doesn't support this, fails, and uses .text instead)
-	if ( window[ id ] ) {
-		jQuery.support.scriptEval = true;
-		delete window[ id ];
-	}
-
-	root.removeChild( script );
-
-	if ( div.attachEvent && div.fireEvent ) {
-		div.attachEvent("onclick", function(){
-			// Cloning a node shouldn't copy over any
-			// bound event handlers (IE does this)
-			jQuery.support.noCloneEvent = false;
-			div.detachEvent("onclick", arguments.callee);
-		});
-		div.cloneNode(true).fireEvent("onclick");
-	}
-
-	// Figure out if the W3C box model works as expected
-	// document.body must exist before we can do this
-	jQuery(function(){
-		var div = document.createElement("div");
-		div.style.width = div.style.paddingLeft = "1px";
-
-		document.body.appendChild( div );
-		jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
-		document.body.removeChild( div ).style.display = 'none';
-	});
-})();
-
-var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";
-
-jQuery.props = {
-	"for": "htmlFor",
-	"class": "className",
-	"float": styleFloat,
-	cssFloat: styleFloat,
-	styleFloat: styleFloat,
-	readonly: "readOnly",
-	maxlength: "maxLength",
-	cellspacing: "cellSpacing",
-	rowspan: "rowSpan",
-	tabindex: "tabIndex"
-};
-jQuery.fn.extend({
-	// Keep a copy of the old load
-	_load: jQuery.fn.load,
-
-	load: function( url, params, callback ) {
-		if ( typeof url !== "string" )
-			return this._load( url );
-
-		var off = url.indexOf(" ");
-		if ( off >= 0 ) {
-			var selector = url.slice(off, url.length);
-			url = url.slice(0, off);
-		}
-
-		// Default to a GET request
-		var type = "GET";
-
-		// If the second parameter was provided
-		if ( params )
-			// If it's a function
-			if ( jQuery.isFunction( params ) ) {
-				// We assume that it's the callback
-				callback = params;
-				params = null;
-
-			// Otherwise, build a param string
-			} else if( typeof params === "object" ) {
-				params = jQuery.param( params );
-				type = "POST";
-			}
-
-		var self = this;
-
-		// Request the remote document
-		jQuery.ajax({
-			url: url,
-			type: type,
-			dataType: "html",
-			data: params,
-			complete: function(res, status){
-				// If successful, inject the HTML into all the matched elements
-				if ( status == "success" || status == "notmodified" )
-					// See if a selector was specified
-					self.html( selector ?
-						// Create a dummy div to hold the results
-						jQuery("<div/>")
-							// inject the contents of the document in, removing the scripts
-							// to avoid any 'Permission Denied' errors in IE
-							.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
-
-							// Locate the specified elements
-							.find(selector) :
-
-						// If not, just inject the full result
-						res.responseText );
-
-				if( callback )
-					self.each( callback, [res.responseText, status, res] );
-			}
-		});
-		return this;
-	},
-
-	serialize: function() {
-		return jQuery.param(this.serializeArray());
-	},
-	serializeArray: function() {
-		return this.map(function(){
-			return this.elements ? jQuery.makeArray(this.elements) : this;
-		})
-		.filter(function(){
-			return this.name && !this.disabled &&
-				(this.checked || /select|textarea/i.test(this.nodeName) ||
-					/text|hidden|password|search/i.test(this.type));
-		})
-		.map(function(i, elem){
-			var val = jQuery(this).val();
-			return val == null ? null :
-				jQuery.isArray(val) ?
-					jQuery.map( val, function(val, i){
-						return {name: elem.name, value: val};
-					}) :
-					{name: elem.name, value: val};
-		}).get();
-	}
-});
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
-	jQuery.fn[o] = function(f){
-		return this.bind(o, f);
-	};
-});
-
-var jsc = now();
-
-jQuery.extend({
-  
-	get: function( url, data, callback, type ) {
-		// shift arguments if data argument was ommited
-		if ( jQuery.isFunction( data ) ) {
-			callback = data;
-			data = null;
-		}
-
-		return jQuery.ajax({
-			type: "GET",
-			url: url,
-			data: data,
-			success: callback,
-			dataType: type
-		});
-	},
-
-	getScript: function( url, callback ) {
-		return jQuery.get(url, null, callback, "script");
-	},
-
-	getJSON: function( url, data, callback ) {
-		return jQuery.get(url, data, callback, "json");
-	},
-
-	post: function( url, data, callback, type ) {
-		if ( jQuery.isFunction( data ) ) {
-			callback = data;
-			data = {};
-		}
-
-		return jQuery.ajax({
-			type: "POST",
-			url: url,
-			data: data,
-			success: callback,
-			dataType: type
-		});
-	},
-
-	ajaxSetup: function( settings ) {
-		jQuery.extend( jQuery.ajaxSettings, settings );
-	},
-
-	ajaxSettings: {
-		url: location.href,
-		global: true,
-		type: "GET",
-		contentType: "application/x-www-form-urlencoded",
-		processData: true,
-		async: true,
-		/*
-		timeout: 0,
-		data: null,
-		username: null,
-		password: null,
-		*/
-		// Create the request object; Microsoft failed to properly
-		// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
-		// This function can be overriden by calling jQuery.ajaxSetup
-		xhr:function(){
-			return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
-		},
-		accepts: {
-			xml: "application/xml, text/xml",
-			html: "text/html",
-			script: "text/javascript, application/javascript",
-			json: "application/json, text/javascript",
-			text: "text/plain",
-			_default: "*/*"
-		}
-	},
-
-	// Last-Modified header cache for next request
-	lastModified: {},
-
-	ajax: function( s ) {
-		// Extend the settings, but re-extend 's' so that it can be
-		// checked again later (in the test suite, specifically)
-		s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
-
-		var jsonp, jsre = /=\?(&|$)/g, status, data,
-			type = s.type.toUpperCase();
-
-		// convert data if not already a string
-		if ( s.data && s.processData && typeof s.data !== "string" )
-			s.data = jQuery.param(s.data);
-
-		// Handle JSONP Parameter Callbacks
-		if ( s.dataType == "jsonp" ) {
-			if ( type == "GET" ) {
-				if ( !s.url.match(jsre) )
-					s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
-			} else if ( !s.data || !s.data.match(jsre) )
-				s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
-			s.dataType = "json";
-		}
-
-		// Build temporary JSONP function
-		if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
-			jsonp = "jsonp" + jsc++;
-
-			// Replace the =? sequence both in the query string and the data
-			if ( s.data )
-				s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
-			s.url = s.url.replace(jsre, "=" + jsonp + "$1");
-
-			// We need to make sure
-			// that a JSONP style response is executed properly
-			s.dataType = "script";
-
-			// Handle JSONP-style loading
-			window[ jsonp ] = function(tmp){
-				data = tmp;
-				success();
-				complete();
-				// Garbage collect
-				window[ jsonp ] = undefined;
-				try{ delete window[ jsonp ]; } catch(e){}
-				if ( head )
-					head.removeChild( script );
-			};
-		}
-
-		if ( s.dataType == "script" && s.cache == null )
-			s.cache = false;
-
-		if ( s.cache === false && type == "GET" ) {
-			var ts = now();
-			// try replacing _= if it is there
-			var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
-			// if nothing was replaced, add timestamp to the end
-			s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
-		}
-
-		// If data is available, append data to url for get requests
-		if ( s.data && type == "GET" ) {
-			s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
-
-			// IE likes to send both get and post data, prevent this
-			s.data = null;
-		}
-
-		// Watch for a new set of requests
-		if ( s.global && ! jQuery.active++ )
-			jQuery.event.trigger( "ajaxStart" );
-
-		// Matches an absolute URL, and saves the domain
-		var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );
-
-		// If we're requesting a remote document
-		// and trying to load JSON or Script with a GET
-		if ( s.dataType == "script" && type == "GET" && parts
-			&& ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){
-
-			var head = document.getElementsByTagName("head")[0];
-			var script = document.createElement("script");
-			script.src = s.url;
-			if (s.scriptCharset)
-				script.charset = s.scriptCharset;
-
-			// Handle Script loading
-			if ( !jsonp ) {
-				var done = false;
-
-				// Attach handlers for all browsers
-				script.onload = script.onreadystatechange = function(){
-					if ( !done && (!this.readyState ||
-							this.readyState == "loaded" || this.readyState == "complete") ) {
-						done = true;
-						success();
-						complete();
-
-						// Handle memory leak in IE
-						script.onload = script.onreadystatechange = null;
-						head.removeChild( script );
-					}
-				};
-			}
-
-			head.appendChild(script);
-
-			// We handle everything using the script element injection
-			return undefined;
-		}
-
-		var requestDone = false;
-
-		// Create the request object
-		var xhr = s.xhr();
-
-		// Open the socket
-		// Passing null username, generates a login popup on Opera (#2865)
-		if( s.username )
-			xhr.open(type, s.url, s.async, s.username, s.password);
-		else
-			xhr.open(type, s.url, s.async);
-
-		// Need an extra try/catch for cross domain requests in Firefox 3
-		try {
-			// Set the correct header, if data is being sent
-			if ( s.data )
-				xhr.setRequestHeader("Content-Type", s.contentType);
-
-			// Set the If-Modified-Since header, if ifModified mode.
-			if ( s.ifModified )
-				xhr.setRequestHeader("If-Modified-Since",
-					jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
-
-			// Set header so the called script knows that it's an XMLHttpRequest
-			xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
-
-			// Set the Accepts header for the server, depending on the dataType
-			xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
-				s.accepts[ s.dataType ] + ", */*" :
-				s.accepts._default );
-		} catch(e){}
-
-		// Allow custom headers/mimetypes and early abort
-		if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
-			// Handle the global AJAX counter
-			if ( s.global && ! --jQuery.active )
-				jQuery.event.trigger( "ajaxStop" );
-			// close opended socket
-			xhr.abort();
-			return false;
-		}
-
-		if ( s.global )
-			jQuery.event.trigger("ajaxSend", [xhr, s]);
-
-		// Wait for a response to come back
-		var onreadystatechange = function(isTimeout){
-			// The request was aborted, clear the interval and decrement jQuery.active
-			if (xhr.readyState == 0) {
-				if (ival) {
-					// clear poll interval
-					clearInterval(ival);
-					ival = null;
-					// Handle the global AJAX counter
-					if ( s.global && ! --jQuery.active )
-						jQuery.event.trigger( "ajaxStop" );
-				}
-			// The transfer is complete and the data is available, or the request timed out
-			} else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
-				requestDone = true;
-
-				// clear poll interval
-				if (ival) {
-					clearInterval(ival);
-					ival = null;
-				}
-
-				status = isTimeout == "timeout" ? "timeout" :
-					!jQuery.httpSuccess( xhr ) ? "error" :
-					s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
-					"success";
-
-				if ( status == "success" ) {
-					// Watch for, and catch, XML document parse errors
-					try {
-						// process the data (runs the xml through httpData regardless of callback)
-						data = jQuery.httpData( xhr, s.dataType, s );
-					} catch(e) {
-						status = "parsererror";
-					}
-				}
-
-				// Make sure that the request was successful or notmodified
-				if ( status == "success" ) {
-					// Cache Last-Modified header, if ifModified mode.
-					var modRes;
-					try {
-						modRes = xhr.getResponseHeader("Last-Modified");
-					} catch(e) {} // swallow exception thrown by FF if header is not available
-
-					if ( s.ifModified && modRes )
-						jQuery.lastModified[s.url] = modRes;
-
-					// JSONP handles its own success callback
-					if ( !jsonp )
-						success();
-				} else
-					jQuery.handleError(s, xhr, status);
-
-				// Fire the complete handlers
-				complete();
-
-				if ( isTimeout )
-					xhr.abort();
-
-				// Stop memory leaks
-				if ( s.async )
-					xhr = null;
-			}
-		};
-
-		if ( s.async ) {
-			// don't attach the handler to the request, just poll it instead
-			var ival = setInterval(onreadystatechange, 13);
-
-			// Timeout checker
-			if ( s.timeout > 0 )
-				setTimeout(function(){
-					// Check to see if the request is still happening
-					if ( xhr && !requestDone )
-						onreadystatechange( "timeout" );
-				}, s.timeout);
-		}
-
-		// Send the data
-		try {
-			xhr.send(s.data);
-		} catch(e) {
-			jQuery.handleError(s, xhr, null, e);
-		}
-
-		// firefox 1.5 doesn't fire statechange for sync requests
-		if ( !s.async )
-			onreadystatechange();
-
-		function success(){
-			// If a local callback was specified, fire it and pass it the data
-			if ( s.success )
-				s.success( data, status );
-
-			// Fire the global callback
-			if ( s.global )
-				jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
-		}
-
-		function complete(){
-			// Process result
-			if ( s.complete )
-				s.complete(xhr, status);
-
-			// The request was completed
-			if ( s.global )
-				jQuery.event.trigger( "ajaxComplete", [xhr, s] );
-
-			// Handle the global AJAX counter
-			if ( s.global && ! --jQuery.active )
-				jQuery.event.trigger( "ajaxStop" );
-		}
-
-		// return XMLHttpRequest to allow aborting the request etc.
-		return xhr;
-	},
-
-	handleError: function( s, xhr, status, e ) {
-		// If a local callback was specified, fire it
-		if ( s.error ) s.error( xhr, status, e );
-
-		// Fire the global callback
-		if ( s.global )
-			jQuery.event.trigger( "ajaxError", [xhr, s, e] );
-	},
-
-	// Counter for holding the number of active queries
-	active: 0,
-
-	// Determines if an XMLHttpRequest was successful or not
-	httpSuccess: function( xhr ) {
-		try {
-			// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
-			return !xhr.status && location.protocol == "file:" ||
-				( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
-		} catch(e){}
-		return false;
-	},
-
-	// Determines if an XMLHttpRequest returns NotModified
-	httpNotModified: function( xhr, url ) {
-		try {
-			var xhrRes = xhr.getResponseHeader("Last-Modified");
-
-			// Firefox always returns 200. check Last-Modified date
-			return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
-		} catch(e){}
-		return false;
-	},
-
-	httpData: function( xhr, type, s ) {
-		var ct = xhr.getResponseHeader("content-type"),
-			xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
-			data = xml ? xhr.responseXML : xhr.responseText;
-
-		if ( xml && data.documentElement.tagName == "parsererror" )
-			throw "parsererror";
-			
-		// Allow a pre-filtering function to sanitize the response
-		// s != null is checked to keep backwards compatibility
-		if( s && s.dataFilter )
-			data = s.dataFilter( data, type );
-
-		// The filter can actually parse the response
-		if( typeof data === "string" ){
-
-			// If the type is "script", eval it in global context
-			if ( type == "script" )
-				jQuery.globalEval( data );
-
-			// Get the JavaScript object, if JSON is used.
-			if ( type == "json" )
-				data = window["eval"]("(" + data + ")");
-		}
-		
-		return data;
-	},
-
-	// Serialize an array of form elements or a set of
-	// key/values into a query string
-	param: function( a ) {
-		var s = [ ];
-
-		function add( key, value ){
-			s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
-		};
-
-		// If an array was passed in, assume that it is an array
-		// of form elements
-		if ( jQuery.isArray(a) || a.jquery )
-			// Serialize the form elements
-			jQuery.each( a, function(){
-				add( this.name, this.value );
-			});
-
-		// Otherwise, assume that it's an object of key/value pairs
-		else
-			// Serialize the key/values
-			for ( var j in a )
-				// If the value is an array then the key names need to be repeated
-				if ( jQuery.isArray(a[j]) )
-					jQuery.each( a[j], function(){
-						add( j, this );
-					});
-				else
-					add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
-
-		// Return the resulting serialization
-		return s.join("&").replace(/%20/g, "+");
-	}
-
-});
-var elemdisplay = {},
-	timerId,
-	fxAttrs = [
-		// height animations
-		[ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
-		// width animations
-		[ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
-		// opacity animations
-		[ "opacity" ]
-	];
-
-function genFx( type, num ){
-	var obj = {};
-	jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
-		obj[ this ] = type;
-	});
-	return obj;
-}
-
-jQuery.fn.extend({
-	show: function(speed,callback){
-		if ( speed ) {
-			return this.animate( genFx("show", 3), speed, callback);
-		} else {
-			for ( var i = 0, l = this.length; i < l; i++ ){
-				var old = jQuery.data(this[i], "olddisplay");
-				
-				this[i].style.display = old || "";
-				
-				if ( jQuery.css(this[i], "display") === "none" ) {
-					var tagName = this[i].tagName, display;
-					
-					if ( elemdisplay[ tagName ] ) {
-						display = elemdisplay[ tagName ];
-					} else {
-						var elem = jQuery("<" + tagName + " />").appendTo("body");
-						
-						display = elem.css("display");
-						if ( display === "none" )
-							display = "block";
-						
-						elem.remove();
-						
-						elemdisplay[ tagName ] = display;
-					}
-					
-					jQuery.data(this[i], "olddisplay", display);
-				}
-			}
-
-			// Set the display of the elements in a second loop
-			// to avoid the constant reflow
-			for ( var i = 0, l = this.length; i < l; i++ ){
-				this[i].style.display = jQuery.data(this[i], "olddisplay") || "";
-			}
-			
-			return this;
-		}
-	},
-
-	hide: function(speed,callback){
-		if ( speed ) {
-			return this.animate( genFx("hide", 3), speed, callback);
-		} else {
-			for ( var i = 0, l = this.length; i < l; i++ ){
-				var old = jQuery.data(this[i], "olddisplay");
-				if ( !old && old !== "none" )
-					jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
-			}
-
-			// Set the display of the elements in a second loop
-			// to avoid the constant reflow
-			for ( var i = 0, l = this.length; i < l; i++ ){
-				this[i].style.display = "none";
-			}
-
-			return this;
-		}
-	},
-
-	// Save the old toggle function
-	_toggle: jQuery.fn.toggle,
-
-	toggle: function( fn, fn2 ){
-		var bool = typeof fn === "boolean";
-
-		return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
-			this._toggle.apply( this, arguments ) :
-			fn == null || bool ?
-				this.each(function(){
-					var state = bool ? fn : jQuery(this).is(":hidden");
-					jQuery(this)[ state ? "show" : "hide" ]();
-				}) :
-				this.animate(genFx("toggle", 3), fn, fn2);
-	},
-
-	fadeTo: function(speed,to,callback){
-		return this.animate({opacity: to}, speed, callback);
-	},
-
-	animate: function( prop, speed, easing, callback ) {
-		var optall = jQuery.speed(speed, easing, callback);
-
-		return this[ optall.queue === false ? "each" : "queue" ](function(){
-		
-			var opt = jQuery.extend({}, optall), p,
-				hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
-				self = this;
-	
-			for ( p in prop ) {
-				if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
-					return opt.complete.call(this);
-
-				if ( ( p == "height" || p == "width" ) && this.style ) {
-					// Store display property
-					opt.display = jQuery.css(this, "display");
-
-					// Make sure that nothing sneaks out
-					opt.overflow = this.style.overflow;
-				}
-			}
-
-			if ( opt.overflow != null )
-				this.style.overflow = "hidden";
-
-			opt.curAnim = jQuery.extend({}, prop);
-
-			jQuery.each( prop, function(name, val){
-				var e = new jQuery.fx( self, opt, name );
-
-				if ( /toggle|show|hide/.test(val) )
-					e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
-				else {
-					var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
-						start = e.cur(true) || 0;
-
-					if ( parts ) {
-						var end = parseFloat(parts[2]),
-							unit = parts[3] || "px";
-
-						// We need to compute starting value
-						if ( unit != "px" ) {
-							self.style[ name ] = (end || 1) + unit;
-							start = ((end || 1) / e.cur(true)) * start;
-							self.style[ name ] = start + unit;
-						}
-
-						// If a +=/-= token was provided, we're doing a relative animation
-						if ( parts[1] )
-							end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
-
-						e.custom( start, end, unit );
-					} else
-						e.custom( start, val, "" );
-				}
-			});
-
-			// For JS strict compliance
-			return true;
-		});
-	},
-
-	stop: function(clearQueue, gotoEnd){
-		var timers = jQuery.timers;
-
-		if (clearQueue)
-			this.queue([]);
-
-		this.each(function(){
-			// go in reverse order so anything added to the queue during the loop is ignored
-			for ( var i = timers.length - 1; i >= 0; i-- )
-				if ( timers[i].elem == this ) {
-					if (gotoEnd)
-						// force the next step to be the last
-						timers[i](true);
-					timers.splice(i, 1);
-				}
-		});
-
-		// start the next in the queue if the last step wasn't forced
-		if (!gotoEnd)
-			this.dequeue();
-
-		return this;
-	}
-
-});
-
-// Generate shortcuts for custom animations
-jQuery.each({
-	slideDown: genFx("show", 1),
-	slideUp: genFx("hide", 1),
-	slideToggle: genFx("toggle", 1),
-	fadeIn: { opacity: "show" },
-	fadeOut: { opacity: "hide" }
-}, function( name, props ){
-	jQuery.fn[ name ] = function( speed, callback ){
-		return this.animate( props, speed, callback );
-	};
-});
-
-jQuery.extend({
-
-	speed: function(speed, easing, fn) {
-		var opt = typeof speed === "object" ? speed : {
-			complete: fn || !fn && easing ||
-				jQuery.isFunction( speed ) && speed,
-			duration: speed,
-			easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
-		};
-
-		opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
-			jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
-
-		// Queueing
-		opt.old = opt.complete;
-		opt.complete = function(){
-			if ( opt.queue !== false )
-				jQuery(this).dequeue();
-			if ( jQuery.isFunction( opt.old ) )
-				opt.old.call( this );
-		};
-
-		return opt;
-	},
-
-	easing: {
-		linear: function( p, n, firstNum, diff ) {
-			return firstNum + diff * p;
-		},
-		swing: function( p, n, firstNum, diff ) {
-			return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
-		}
-	},
-
-	timers: [],
-
-	fx: function( elem, options, prop ){
-		this.options = options;
-		this.elem = elem;
-		this.prop = prop;
-
-		if ( !options.orig )
-			options.orig = {};
-	}
-
-});
-
-jQuery.fx.prototype = {
-
-	// Simple function for setting a style value
-	update: function(){
-		if ( this.options.step )
-			this.options.step.call( this.elem, this.now, this );
-
-		(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
-
-		// Set display property to block for height/width animations
-		if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
-			this.elem.style.display = "block";
-	},
-
-	// Get the current size
-	cur: function(force){
-		if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
-			return this.elem[ this.prop ];
-
-		var r = parseFloat(jQuery.css(this.elem, this.prop, force));
-		return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
-	},
-
-	// Start an animation from one number to another
-	custom: function(from, to, unit){
-		this.startTime = now();
-		this.start = from;
-		this.end = to;
-		this.unit = unit || this.unit || "px";
-		this.now = this.start;
-		this.pos = this.state = 0;
-
-		var self = this;
-		function t(gotoEnd){
-			return self.step(gotoEnd);
-		}
-
-		t.elem = this.elem;
-
-		if ( t() && jQuery.timers.push(t) && !timerId ) {
-			timerId = setInterval(function(){
-				var timers = jQuery.timers;
-
-				for ( var i = 0; i < timers.length; i++ )
-					if ( !timers[i]() )
-						timers.splice(i--, 1);
-
-				if ( !timers.length ) {
-					clearInterval( timerId );
-					timerId = undefined;
-				}
-			}, 13);
-		}
-	},
-
-	// Simple 'show' function
-	show: function(){
-		// Remember where we started, so that we can go back to it later
-		this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
-		this.options.show = true;
-
-		// Begin the animation
-		// Make sure that we start at a small width/height to avoid any
-		// flash of content
-		this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
-
-		// Start by showing the element
-		jQuery(this.elem).show();
-	},
-
-	// Simple 'hide' function
-	hide: function(){
-		// Remember where we started, so that we can go back to it later
-		this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
-		this.options.hide = true;
-
-		// Begin the animation
-		this.custom(this.cur(), 0);
-	},
-
-	// Each step of an animation
-	step: function(gotoEnd){
-		var t = now();
-
-		if ( gotoEnd || t >= this.options.duration + this.startTime ) {
-			this.now = this.end;
-			this.pos = this.state = 1;
-			this.update();
-
-			this.options.curAnim[ this.prop ] = true;
-
-			var done = true;
-			for ( var i in this.options.curAnim )
-				if ( this.options.curAnim[i] !== true )
-					done = false;
-
-			if ( done ) {
-				if ( this.options.display != null ) {
-					// Reset the overflow
-					this.elem.style.overflow = this.options.overflow;
-
-					// Reset the display
-					this.elem.style.display = this.options.display;
-					if ( jQuery.css(this.elem, "display") == "none" )
-						this.elem.style.display = "block";
-				}
-
-				// Hide the element if the "hide" operation was done
-				if ( this.options.hide )
-					jQuery(this.elem).hide();
-
-				// Reset the properties, if the item has been hidden or shown
-				if ( this.options.hide || this.options.show )
-					for ( var p in this.options.curAnim )
-						jQuery.attr(this.elem.style, p, this.options.orig[p]);
-					
-				// Execute the complete function
-				this.options.complete.call( this.elem );
-			}
-
-			return false;
-		} else {
-			var n = t - this.startTime;
-			this.state = n / this.options.duration;
-
-			// Perform the easing function, defaults to swing
-			this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
-			this.now = this.start + ((this.end - this.start) * this.pos);
-
-			// Perform the next step of the animation
-			this.update();
-		}
-
-		return true;
-	}
-
-};
-
-jQuery.extend( jQuery.fx, {
-	speeds:{
-		slow: 600,
- 		fast: 200,
- 		// Default speed
- 		_default: 400
-	},
-	step: {
-
-		opacity: function(fx){
-			jQuery.attr(fx.elem.style, "opacity", fx.now);
-		},
-
-		_default: function(fx){
-			if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
-				fx.elem.style[ fx.prop ] = fx.now + fx.unit;
-			else
-				fx.elem[ fx.prop ] = fx.now;
-		}
-	}
-});
-if ( document.documentElement["getBoundingClientRect"] )
-	jQuery.fn.offset = function() {
-		if ( !this[0] ) return { top: 0, left: 0 };
-		if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
-		var box  = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
-			clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
-			top  = box.top  + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,
-			left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
-		return { top: top, left: left };
-	};
-else 
-	jQuery.fn.offset = function() {
-		if ( !this[0] ) return { top: 0, left: 0 };
-		if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
-		jQuery.offset.initialized || jQuery.offset.initialize();
-
-		var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
-			doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
-			body = doc.body, defaultView = doc.defaultView,
-			prevComputedStyle = defaultView.getComputedStyle(elem, null),
-			top = elem.offsetTop, left = elem.offsetLeft;
-
-		while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
-			computedStyle = defaultView.getComputedStyle(elem, null);
-			top -= elem.scrollTop, left -= elem.scrollLeft;
-			if ( elem === offsetParent ) {
-				top += elem.offsetTop, left += elem.offsetLeft;
-				if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
-					top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
-					left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
-				prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
-			}
-			if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
-				top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
-				left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
-			prevComputedStyle = computedStyle;
-		}
-
-		if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
-			top  += body.offsetTop,
-			left += body.offsetLeft;
-
-		if ( prevComputedStyle.position === "fixed" )
-			top  += Math.max(docElem.scrollTop, body.scrollTop),
-			left += Math.max(docElem.scrollLeft, body.scrollLeft);
-
-		return { top: top, left: left };
-	};
-
-jQuery.offset = {
-	initialize: function() {
-		if ( this.initialized ) return;
-		var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
-			html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
-
-		rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
-		for ( prop in rules ) container.style[prop] = rules[prop];
-
-		container.innerHTML = html;
-		body.insertBefore(container, body.firstChild);
-		innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;
-
-		this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
-		this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
-
-		innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
-		this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
-
-		body.style.marginTop = '1px';
-		this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
-		body.style.marginTop = bodyMarginTop;
-
-		body.removeChild(container);
-		this.initialized = true;
-	},
-
-	bodyOffset: function(body) {
-		jQuery.offset.initialized || jQuery.offset.initialize();
-		var top = body.offsetTop, left = body.offsetLeft;
-		if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
-			top  += parseInt( jQuery.curCSS(body, 'marginTop',  true), 10 ) || 0,
-			left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
-		return { top: top, left: left };
-	}
-};
-
-
-jQuery.fn.extend({
-	position: function() {
-		var left = 0, top = 0, results;
-
-		if ( this[0] ) {
-			// Get *real* offsetParent
-			var offsetParent = this.offsetParent(),
-
-			// Get correct offsets
-			offset       = this.offset(),
-			parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();
-
-			// Subtract element margins
-			// note: when an element has margin: auto the offsetLeft and marginLeft 
-			// are the same in Safari causing offset.left to incorrectly be 0
-			offset.top  -= num( this, 'marginTop'  );
-			offset.left -= num( this, 'marginLeft' );
-
-			// Add offsetParent borders
-			parentOffset.top  += num( offsetParent, 'borderTopWidth'  );
-			parentOffset.left += num( offsetParent, 'borderLeftWidth' );
-
-			// Subtract the two offsets
-			results = {
-				top:  offset.top  - parentOffset.top,
-				left: offset.left - parentOffset.left
-			};
-		}
-
-		return results;
-	},
-
-	offsetParent: function() {
-		var offsetParent = this[0].offsetParent || document.body;
-		while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
-			offsetParent = offsetParent.offsetParent;
-		return jQuery(offsetParent);
-	}
-});
-
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( ['Left', 'Top'], function(i, name) {
-	var method = 'scroll' + name;
-	
-	jQuery.fn[ method ] = function(val) {
-		if (!this[0]) return null;
-
-		return val !== undefined ?
-
-			// Set the scroll offset
-			this.each(function() {
-				this == window || this == document ?
-					window.scrollTo(
-						!i ? val : jQuery(window).scrollLeft(),
-						 i ? val : jQuery(window).scrollTop()
-					) :
-					this[ method ] = val;
-			}) :
-
-			// Return the scroll offset
-			this[0] == window || this[0] == document ?
-				self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
-					jQuery.boxModel && document.documentElement[ method ] ||
-					document.body[ method ] :
-				this[0][ method ];
-	};
-});
-// Create innerHeight, innerWidth, outerHeight and outerWidth methods
-jQuery.each([ "Height", "Width" ], function(i, name){
-
-	var tl = i ? "Left"  : "Top",  // top or left
-		br = i ? "Right" : "Bottom", // bottom or right
-		lower = name.toLowerCase();
-
-	// innerHeight and innerWidth
-	jQuery.fn["inner" + name] = function(){
-		return this[0] ?
-			jQuery.css( this[0], lower, false, "padding" ) :
-			null;
-	};
-
-	// outerHeight and outerWidth
-	jQuery.fn["outer" + name] = function(margin) {
-		return this[0] ?
-			jQuery.css( this[0], lower, false, margin ? "margin" : "border" ) :
-			null;
-	};
-	
-	var type = name.toLowerCase();
-
-	jQuery.fn[ type ] = function( size ) {
-		// Get window width or height
-		return this[0] == window ?
-			// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
-			document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
-			document.body[ "client" + name ] :
-
-			// Get document width or height
-			this[0] == document ?
-				// Either scroll[Width/Height] or offset[Width/Height], whichever is greater
-				Math.max(
-					document.documentElement["client" + name],
-					document.body["scroll" + name], document.documentElement["scroll" + name],
-					document.body["offset" + name], document.documentElement["offset" + name]
-				) :
-
-				// Get or set width or height on the element
-				size === undefined ?
-					// Get width or height on the element
-					(this.length ? jQuery.css( this[0], type ) : null) :
-
-					// Set the width or height on the element (default to pixels if value is unitless)
-					this.css( type, typeof size === "string" ? size : size + "px" );
-	};
-
-});
-})();
--- a/test/emission_fichiers/jquery_006.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-
-
-(function($){
-	$.fn.popupWindow = function(instanceSettings){
-		var myWin = null;
-		return this.each(function(){
-		
-		$(this).click(function(){
-		
-		$.fn.popupWindow.defaultSettings = {
-			centerBrowser:0, // center window over browser window? {1 (YES) or 0 (NO)}. overrides top and left
-			centerScreen:0, // center window over entire screen? {1 (YES) or 0 (NO)}. overrides top and left
-			height:500, // sets the height in pixels of the window.
-			left:0, // left position when the window appears.
-			location:0, // determines whether the address bar is displayed {1 (YES) or 0 (NO)}.
-			menubar:0, // determines whether the menu bar is displayed {1 (YES) or 0 (NO)}.
-			resizable:0, // whether the window can be resized {1 (YES) or 0 (NO)}. Can also be overloaded using resizable.
-			scrollbars:0, // determines whether scrollbars appear on the window {1 (YES) or 0 (NO)}.
-			status:0, // whether a status line appears at the bottom of the window {1 (YES) or 0 (NO)}.
-			width:500, // sets the width in pixels of the window.
-			windowName:null, // name of window set from the name attribute of the element that invokes the click
-			windowURL:null, // url used for the popup
-			top:0, // top position when the window appears.
-			toolbar:0 // determines whether a toolbar (includes the forward and back buttons) is displayed {1 (YES) or 0 (NO)}.
-		};
-		
-		settings = $.extend({}, $.fn.popupWindow.defaultSettings, instanceSettings || {});
-		
-		var windowFeatures =    'height=' + settings.height +
-								',width=' + settings.width +
-								',toolbar=' + settings.toolbar +
-								',scrollbars=' + settings.scrollbars +
-								',status=' + settings.status + 
-								',resizable=' + settings.resizable +
-								',location=' + settings.location +
-								',menuBar=' + settings.menubar;
-
-				settings.windowName = this.name || settings.windowName;
-				settings.windowURL = this.href || settings.windowURL;
-				var centeredY,centeredX;
-				if(settings.centerBrowser){
-						
-					if ($.browser.msie) {//hacked together for IE browsers
-						centeredY = (window.screenTop - 120) + ((((document.documentElement.clientHeight + 120)/2) - (settings.height/2)));
-						centeredX = window.screenLeft + ((((document.body.offsetWidth + 20)/2) - (settings.width/2)));
-					}else{
-						centeredY = window.screenY + (((window.outerHeight/2) - (settings.height/2)));
-						centeredX = window.screenX + (((window.outerWidth/2) - (settings.width/2)));
-					}
-					if (myWin == null || myWin.closed) {
-					  myWin = window.open(settings.windowURL, settings.windowName, windowFeatures+',left=' + centeredX +',top=' + centeredY);
-					}
-				}else if(settings.centerScreen){
-					centeredY = (screen.height - settings.height)/2;
-					centeredX = (screen.width - settings.width)/2;
-					if (myWin == null || myWin.closed) {
-					  myWin = window.open(settings.windowURL, settings.windowName, windowFeatures+',left=' + centeredX +',top=' + centeredY);
-				  }
-				}else{
-				  if (myWin == null || myWin.closed) {
-					  myWin = window.open(settings.windowURL, settings.windowName, windowFeatures+',left=' + settings.left +',top=' + settings.top);	
-					}
-				}
-				myWin.focus();
-				return false;
-			});
-			
-		});	
-	};
-})(jQuery);
\ No newline at end of file
Binary file test/emission_fichiers/la_nuit_du_monde20100423.jpg has changed
Binary file test/emission_fichiers/le_mal_du_pays_autobiographie_de_la_belgique20100424.jpg has changed
Binary file test/emission_fichiers/les_lites_contre_la_rpublique_histoire_et_mutations_de_scien.jpg has changed
Binary file test/emission_fichiers/listen.png has changed
Binary file test/emission_fichiers/logo.png has changed
Binary file test/emission_fichiers/more-red.png has changed
--- a/test/emission_fichiers/panels.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-// $Id: panels.js,v 1.2.4.1 2009/10/05 22:40:35 merlinofchaos Exp $
-
-(function ($) {
-  Drupal.Panels = {};
-
-  Drupal.Panels.autoAttach = function() {
-    if ($.browser.msie) {
-      // If IE, attach a hover event so we can see our admin links.
-      $("div.panel-pane").hover(
-        function() {
-          $('div.panel-hide', this).addClass("panel-hide-hover"); return true;
-        },
-        function() {
-          $('div.panel-hide', this).removeClass("panel-hide-hover"); return true;
-        }
-      );
-      $("div.admin-links").hover(
-        function() {
-          $(this).addClass("admin-links-hover"); return true;
-        },
-        function(){
-          $(this).removeClass("admin-links-hover"); return true;
-        }
-      );
-    }
-  };
-
-  $(Drupal.Panels.autoAttach);
-})(jQuery);
Binary file test/emission_fichiers/picto-ecoute-rouge.png has changed
Binary file test/emission_fichiers/picto-mobile.png has changed
Binary file test/emission_fichiers/picto-rss.gif has changed
--- a/test/emission_fichiers/popups.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-Drupal.theme.popupTemplate = function(popupId) {
-  var template;
-  template += '<div id="'+ popupId + '" class="popups-box">';
-  template += "  <div class='popups-inner'>";
-  template += '    <div class="popups-title">';
-  template += '      <div class="popups-close"><a href="#">' + Drupal.t('Close') + '</a></div>';
-  template += '      <div class="title">%title</div>';
-  template += '      <div class="clear-block"></div>';
-  template += '    </div>';
-  template += '    <div class="popups-body">%body</div>';
-  template += '    <div class="popups-buttons">%buttons</div>';
-  template += '    <div class="popups-footer"></div>';
-  template += '  </div>';
-  template += '</div>';
-  return template;
-};
--- a/test/emission_fichiers/popups_002.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1161 +0,0 @@
-// $Id: popups.js,v 1.9.8.12 2009/03/21 00:57:15 starbow Exp $
-
-/**
- * Popup Modal Dialog API
- *
- * Provide an API for building and displaying JavaScript, in-page, popups modal dialogs.
- * Modality is provided by a fixed, semi-opaque div, positioned in front of the page contents.
- *
- */
-
-/*
- * TODO
- * * Return key in add node form not working.
- * * Tabledrag breaking after ahah reload.
- */
-
-// ***************************************************************************
-// DRUPAL Namespace
-// ***************************************************************************
-
-/**
- * Attach the popups bevior to the all the requested links on the page.
- *
- * @param context
- *   The jQuery object to apply the behaviors to.
- */
-
-Drupal.behaviors.popups = function(context) {
-  Popups.saveSettings();
-  
-  var $body = $('body');
-  if(!$body.hasClass('popups-processed')) {
-    $body.addClass('popups-processed');
-    $(document).bind('keydown', Popups.keyHandle);
-    var $popit = $('#popit');
-    if ($popit.length) {
-      $popit.remove();
-      Popups.message($popit.html());
-    }
-  }
-  
-  // Add the popups-link-in-dialog behavior to links defined in Drupal.settings.popups.links array.
-  // Get these from current Drupal.settings, not Popups.originalSettings, as each page has it's own hooks.
-  if (Drupal.settings.popups && Drupal.settings.popups.links) {
-    jQuery.each(Drupal.settings.popups.links, function (link, options) { 
-      Popups.attach(context, link, Popups.options(options));
-    });
-  }
-  
-  Popups.attach(context, '.popups', Popups.options({updateMethod: 'none'}));  
-  Popups.attach(context, '.popups-form', Popups.options({updateMethod: 'ajax'})); // ajax reload.
-  Popups.attach(context, '.popups-form-reload', Popups.options({updateMethod: 'reload'})); // whole page reload. 
-  Popups.attach(context, '.popups-form-noupdate', Popups.options({updateMethod: 'none'}));  // no reload at all.
-};
-
-// ***************************************************************************
-// Popups Namespace **********************************************************
-// ***************************************************************************
-/**
- * The Popups namespace contains:
- * * An ordered stack of Popup objects,
- * * The state of the original page,
- * * Functions for managing both of the above.
- */
-Popups = function(){};
-
-/**
- * Static variables in the Popups namespace.
- */
-Popups.popupStack = []; 
-Popups.addedCSS = [];
-Popups.addedJS = [];
-Popups.originalSettings = null; // The initial popup options of the page.
-/**
- * Each popup object gets it's own set of options.
- * These are the defaults.
- */
-Popups.defaultOptions = {
-  doneTest: null, // null, *path*, *regexp*. how do we know when a multiform flow is done?
-  updateMethod: 'ajax', // none, ajax, reload, callback
-  updateSource: 'initial', // initial, final. Only used if updateMethod != none.
-  href: null, 
-  width: null, // Override the width specified in the css.
-  targetSelectors: null, // Hash of jQuery selectors that define the content to be swapped out.
-  titleSelectors: null, // Array of jQuery selectors to place the new page title.
-  reloadOnError: false, // Force the entire page to reload if the popup href is unaccessable.
-  noMessage: false, // Don't show drupal_set_message messages.   
-  skipDirtyCheck: false, // If true, this popup will not check for edits on the originating page.  
-  hijackDestination: true, // Use the destiination param to force a form submit to return to the originating page. 
-  onUpdate: null // Callback used for the updateMethod: 'callback' type
-};
-
-// ***************************************************************************
-// Popups.Popup Object *******************************************************
-// ***************************************************************************
-/**
- * A Popup is a single modal dialog.
- * The popup object encapslated all the info about a single popup.
- */
-Popups.Popup = function() {
-  this.id = 'popups-' + Popups.nextCounter();
-  
-  // These properties are needed if the popup contains a form that will be ajax submitted.
-  this.parent = null; // The popup that spawned this one. If parent is null, this popup was spawned by the original page.
-  this.path = null; // If popup is showing content from a url, this is that path.
-  this.element = null; // The DOM element that was clicked to launch this popup.
-  this.options = null; // An option array that control how the popup behaves.  See Popups.defaultOptions for explainations.
-};
-Popups.Popup.prototype.$popup = function() {
-  return $('#' + this.id);
-};
-Popups.Popup.prototype.$popupBody = function() {
-  return $('#' + this.id + ' .popups-body');
-};
-Popups.Popup.prototype.$popupClose = function() {
-  return $('#' + this.id + ' .popups-close');
-};
-Popups.Popup.prototype.$popupTitle = function() {
-  return $('#' + this.id + ' .popups-title');
-};
-Popups.Popup.prototype.$popupButtons = function() {
-  return $('#' + this.id + ' .popups-buttons');
-};
-Popups.Popup.prototype.$popupFooter = function() {
-  return $('#' + this.id + ' .popups-footer');
-};
-
-/**
- * Create the jQuery wrapped html at the heart of the popup object.
- * 
- * @param title
- *   String
- * @param body
- *   String/HTML
- * @param buttons
- *   Hash/Object
- * @return
- *   The $popup.
- */
-Popups.Popup.prototype.fill = function(title, body, buttons) {
-  return $(Drupal.theme('popupDialog', this.id, title, body, buttons));
-}
-
-/**
- * Hide the popup by pushing it off to the side. 
- * Just making it display:none causes flash in FF2.
- */
-Popups.Popup.prototype.hide = function() {
-  this.$popup().css('left', '-9999px');
-};
-
-Popups.Popup.prototype.show = function() {
-  Popups.resizeAndCenter(this);
-};
-
-Popups.Popup.prototype.open = function(title, body, buttons, width){
-  return Popups.open(this, title, body, buttons, width);
-};
-
-Popups.Popup.prototype.removePopup = function() { 
-  Popups.removePopup(this);
-}; 
-
-/**
- * Remove everything.
- */
-Popups.Popup.prototype.close = function() {
-  return Popups.close(this);
-};
-
-/**
- * Set the focus on the popups to the first visible, enabled form element, or the close link.
- */
-Popups.Popup.prototype.refocus = function() {
-  // Select the first visible enabled input element.
-  var $popup = this.$popup();
-  var $focus = $popup.find(':input:visible:enabled:first');
-  if (!$focus.length) {
-    // There is no visible enabled input element, so select the close link.
-    $focus = $popup.find('.popups-close a');
-  }
-  $focus.focus();
-};
-
-/**
- * Return a selector that will find target content on the layer that spawned this popup.
- * This is needed for the popup to do ajax updates. 
- */
-Popups.Popup.prototype.targetLayerSelector = function() {
-  if (this.parent === null) {
-    return 'body'; // Select content in the original page.
-  }
-  else {
-    return '#' + this.parent.id; // Select content in the parent popup.
-  } 
-};
-
-/**
- * Determine if we are at an end point of a form flow, or just moving from one popups to another.
- * 
- * @param path
- *   The path of the page that the form flow has moved to.
- *   This path is relative to the base_path.  
- *   Ex: node/add/story, not http://localhost/drupal6/node/add/story or drupa6/node/add/story.
- * @return bool
- */ 
-Popups.Popup.prototype.isDone = function(path) {
-//  console.log("Doing isDone for popup: " + this.id + ", now at " + path );
-  var done;
-  if (this.options.doneTest) {
-    // Test if we are at the path specified by doneTest.
-    done = (path === this.options.doneTest || path.match(this.options.doneTest));    
-  }
-  else { 
-    if (this.parent) {
-       // Test if we are back to the parent popup's path.
-      done = (path === this.parent.path);     
-//      console.log("Lookin at parent: " + this.parent.path + ". Done = " + done); 
-    }
-    else {
-       // Test if we are back to the original page's path.
-      done = (path === Popups.originalSettings.popups.originalPath);
-//      console.log("Lookin at original page: " + Popups.originalSettings.popups.originalPath + ". Done = " + done); 
-    }
-  }; 
-  return done;  
-};
-
-
-// ***************************************************************************
-// Popups Functions **********************************************************
-// ***************************************************************************
-
-/**
- * Test if the param has been set. 
- * Used to distinguish between a value set to null or false and on not yet unset.
- */
-Popups.isset = function(v) {
-  return (typeof(v) !== 'undefined');
-};
-
-/**
- * Get the currently active popup in the page.
- * Currently it is the only one visible, but that could change.
- */
-Popups.activePopup = function() {
-  if (Popups.popupStack.length) {
-    return Popups.popupStack[Popups.popupStack.length - 1]; // top of stack.
-  }
-  else {
-    return null;
-  }
-};
-
-/**
- * Manage the page wide popupStack.
- */
-Popups.push = function(popup) {
-  Popups.popupStack.push(popup);
-};
-// Should I integrate this with popupRemove??
-Popups.pop = function(popup) {
-  return Popups.popupStack.pop();
-};
-
-/**
- * Build an options hash from defaults.
- * 
- * @param overrides
- *   Hash of values to override the defaults.
- */
-Popups.options = function(overrides) {
-  var defaults = Popups.defaultOptions;
-  return Popups.overrideOptions(defaults, overrides);  
-}
-
-/**
- * Build an options hash.  
- * Also maps deprecated options to current options.
- * 
- * @param defaults
- *   Hash of default values
- * @param overrides
- *   Hash of values to override the defaults with.
- */
-Popups.overrideOptions = function(defaults, overrides) {
-  var options = {};
-  for(var option in defaults) {
-    var value;
-    if (Popups.isset(overrides[option])) {
-      options[option] = overrides[option];
-    }
-    else {     
-      options[option] = defaults[option];
-    }
-  }
-  // Map deprecated options.
-  if (overrides['noReload'] || overrides['noUpdate']) {
-    options['updateMethod'] = 'none';
-  } 
-  if (overrides['reloadWhenDone']) {
-    options['updateMethod'] = 'reload';
-  } 
-  if (overrides['afterSubmit']) {
-    options['updateMethod'] = 'callback';
-    options['onUpdate'] = overrides['afterSubmit'];
-  } 
-  if (overrides['forceReturn']) {
-    options['doneTest'] = overrides['forceReturn'];
-  } 
-  return options;
-}
-
-/**
- * Attach the popups behavior to all elements inside the context that match the selector.
- *
- * @param context
- *   Chunk of html to search.
- * @param selector
- *   jQuery selector for elements to attach popups behavior to.
- * @param options
- *   Hash of options associated with these links.
- */
-Popups.attach = function(context, selector, options) {
-//  console.log(options);
-  $(selector, context).not('.popups-processed').each(function() {
-    var $element = $(this);  
-    
-    // Mark the element as processed.    
-    $element.addClass('popups-processed');
-    
-    // Append note to link title.
-    var title = '';
-    if ($element.attr('title')) {
-      title = $element.attr('title') + ' ';
-    }
-    title += Drupal.t('[Popup]');
-    $element.attr('title', title); 
-    
-    // Attach the on-click popup behavior to the element.
-    $element.click(function(event){
-      return Popups.clickPopupElement(this, options);
-    });
-  });
-};    
-
-/**
- * Respond to click by opening a popup.
- * 
- * @param element
- *   The element that was clicked.
- * @param options
- *   Hash of options associated with the element.
- */
-Popups.clickPopupElement = function(element, options) {
-  Popups.saveSettings();
-  
-  // If the element contains a on-popups-options attribute, override default options param.
-  if ($(element).attr('on-popups-options')) {
-    var overrides = Drupal.parseJson($(element).attr('on-popups-options')); 
-    options = Popups.overrideOptions(options, overrides);
-  }
-	
-  // The parent of the new popup is the currently active popup.
-  var parent = Popups.activePopup();
-  
-  // If the option is distructive, check if the page is already modified, and offer to save.
-  var willModifyOriginal = !(options.updateMethod === 'none' || options.skipDirtyCheck);
-  if (willModifyOriginal && Popups.activeLayerIsEdited()) {
-    // The user will lose modifications, so show dialog offering to save current state.
-    Popups.offerToSave(element, options, parent);
-  }
-  else {
-    // Page is clean, or popup is safe, so just open it.
-    Popups.openPath(element, options, parent);
-  }
-  return false; 
-};
-
-/**
- * Test if the active layer been edited.
- * Active layer is either the original page, or the active Popup.
- */
-Popups.activeLayerIsEdited = function() {
-  var layer = Popups.activePopup();
-  var $context = Popups.getLayerContext(layer);
-  // TODO: better test for edited page, maybe capture change event on :inputs.   
-  var edited = $context.find('span.tabledrag-changed').length;  
-  return edited;
-}
-
-/**
- * Show dialog offering to save form on parent layer.
- * 
- * @param element
- *   The DOM element that was clicked.
- * @param options
- *   The options associated with that element.
- * @param parent
- *   The layer that has the unsaved edits.  Null means the underlying page.
- */
-Popups.offerToSave = function(element, options, parent) {
-  var popup = new Popups.Popup();
-  var body = Drupal.t("There are unsaved changes in the form, which you will lose if you continue.");
-  var buttons = {
-   'popup_save': {title: Drupal.t('Save Changes'), func: function(){Popups.saveFormOnLayer(element, options, parent);}},
-   'popup_submit': {title: Drupal.t('Continue'), func: function(){popup.removePopup(); Popups.openPath(element, options, parent);}},
-   'popup_cancel': {title: Drupal.t('Cancel'), func: function(){popup.close();}}
-  };
-  popup.open(Drupal.t('Warning: Please Confirm'), body, buttons);  
-};
-
-/**
- * Generic dialog builder.
- * Adds the newly built popup into the DOM.
- * 
- * TODO: capture the focus if it tabs out of the dialog.
- *
- * @param popup
- *   Popups.Popup object to fill with content, place in the DOM, and show on the screen.
- * @param String title
- *   String: title of new dialog.
- * @param body (optional)
- *   String: body of new dialog.
- * @param buttons (optional)
- *   Hash of button parameters.
- * @param width (optional)
- *   Width of new dialog.
- *   
- * @return popup object
- */
-Popups.open = function(popup, title, body, buttons, width){
-  Popups.addOverlay();
-  
-  if (Popups.activePopup()) {
-    // Hiding previously active popup.
-    Popups.activePopup().hide();
-  }
-  
-  if (!popup) {
-    // Popup object was not handed in, so create a new one.
-    popup = new Popups.Popup();
-  }
-  Popups.push(popup); // Put this popup at the top of the stack.
-
-  // Create the jQuery wrapped html for the new popup.
-  var $popup = popup.fill(title, body, buttons);
-  popup.hide(); // Hide the new popup until it is finished and sized.
-
-  if (width) {
-    $popup.css('width', width);
-  }
-  
-  // Add the new popup to the DOM.
-  $('body').append($popup); 
-
-  // Add button function callbacks.
-  if (buttons) {
-    jQuery.each(buttons, function(id, button){
-      $('#' + id).click(button.func);
-    });
-  }
-    
-  // Add the default click-to-close behavior.
-  popup.$popupClose().click(function(){
-    return Popups.close(popup);
-  });
-
-  Popups.resizeAndCenter(popup);
-
-  // Focus on the first input element in the popup window.
-  popup.refocus(); 
-  
-  // TODO - this isn't the place for this - should mirror addLoading calls.
-  // Remove the loading image.
-  Popups.removeLoading();
-   
-  return popup;
-};  
-
-/**
- * Adjust the popup's height to fit it's content.
- * Move it to be centered on the screen.
- * This undoes the effects of popup.hide().
- * 
- * @param popup
- */
-Popups.resizeAndCenter = function(popup) {
-  var $popup = popup.$popup();
-  
-  // center on the screen, adding in offsets if the window has been scrolled
-  var popupWidth = $popup.width();  
-  var windowWidth = Popups.windowWidth();
-  var left = (windowWidth / 2) - (popupWidth / 2) + Popups.scrollLeft();
-  
-  // Get popups's height on the page.
-  $popup.css('height', 'auto'); // Reset height.
-  var popupHeight = $popup.height(); 
-  $popup.height(popupHeight);
-  var windowHeight = Popups.windowHeight();
-   
-  if (popupHeight > (0.9 * windowHeight) ) { // Must fit in 90% of window.
-    popupHeight = 0.9 * windowHeight;
-    $popup.height(popupHeight);
-  }  
-  var top = (windowHeight / 2) - (popupHeight / 2) + Popups.scrollTop();
-
-  $popup.css('top', top).css('left', left); // Position the popups to be visible. 
-};
-  
-
-/**
- *  Create and show a simple popup dialog that functions like the browser's alert box.
- */
-Popups.message = function(title, message) {
-  message = message || '';
-  var popup = new Popups.Popup();
-  var buttons = {
-    'popup_ok': {title: Drupal.t('OK'), func: function(){popup.close();}}
-  };
-  popup.open(title, message, buttons);
-  return popup;
-};
-
-/**
- * Handle any special keys when popups is active.
- */
-Popups.keyHandle = function(e) {
-  if (!e) {
-    e = window.event;
-  }
-  switch (e.keyCode) {
-    case 27: // esc
-      Popups.close();
-      break;
-    case 191: // '?' key, show help.
-      if (e.shiftKey && e.ctrlKey) {
-        var $help = $('a.popups.more-help');
-        if ($help.size()) {
-          $help.click();
-        }
-        else {
-          Popups.message(Drupal.t("Sorry, there is no additional help for this page"));
-        }
-      }
-      break;
-  }
-};
-
-/*****************************************************************************
- * Appearence Functions (overlay, loading graphic, remove popups)     *********
- *****************************************************************************/
- 
-/**
- * Add full page div between the page and the dialog, to make the popup modal.
- */
-Popups.addOverlay = function() {
-  var $overlay = $('#popups-overlay');
-  if (!$overlay.length) { // Overlay does not already exist, so create it.
-    $overlay = $(Drupal.theme('popupOverlay'));
-    $overlay.css('opacity', '0.4'); // for ie6(?)
-    // Doing absolute positioning, so make overlay's size equal the entire body.
-    var $doc = $(document);
-    $overlay.width($doc.width()).height($doc.height()); 
-    $overlay.click(function(){Popups.close();});
-    $('body').prepend($overlay);
-  }
-};
-
-/**
- * Remove overlay if popupStack is empty.
- */
-Popups.removeOverlay = function() {
-  if (!Popups.popupStack.length) {
-    $('#popups-overlay').remove();
-  }
-};
-
-/**
- * Add a "Loading" message while we are waiting for the ajax response.
- */
-Popups.addLoading = function() {
-  var $loading = $('#popups-loading');
-  if (!$loading.length) { // Loading image does not already exist, so create it.
-    $loading = $(Drupal.theme('popupLoading'));
-    $('body').prepend($loading); // Loading div is initially display:none.
-    var width = $loading.width();
-    var height = $loading.height();
-    var left = (Popups.windowWidth() / 2) - (width / 2) + Popups.scrollLeft();
-    var top = (Popups.windowHeight() / 2) - (height / 2) + Popups.scrollTop();
-    $loading.css({'top': top, 'left': left, 'display': 'block'}); // Center it and make it visible.
-  }
-};
-
-Popups.removeLoading = function() {
-  $('#popups-loading').remove();
-};
-
-// Should I fold this function into Popups.pop?
-Popups.removePopup = function(popup) {  
-//  console.log("Popups.removePopup: " + popup);
-  if (!Popups.isset(popup)) {
-    popup = Popups.activePopup();
-  }
-  if (popup) {
-//    console.log('removing '+popup.id);
-    popup.$popup().remove();
-//    Popups.popupStack.splice(Popups.popupStack.indexOf(popup), 1); // Remove popup from stack.  Probably should rework into .pop()
-    Popups.popupStack.pop();
-  }  
-//  else {
-//    console.log("Popups.removePopup - there is no popup to remove.");
-//  }
-}; 
-
-/**
- * Remove everything.
- */
-Popups.close = function(popup) {
-  if (!Popups.isset(popup)) {
-    popup = Popups.activePopup();
-  }
-  Popups.removePopup(popup);  // Should this be a pop??
-  Popups.removeLoading();
-  if (Popups.activePopup()) {
-    Popups.activePopup().show();
-    Popups.activePopup().refocus();
-  }
-  else {
-    Popups.removeOverlay();
-    Popups.restorePage();
-  }
-  return false;
-};
-
-/**
- * Save the page's original Drupal.settings.
- */
-Popups.saveSettings = function() {
-  if (!Popups.originalSettings) {
-    Popups.originalSettings = Drupal.settings;
-  }
-};
-
-/**
- * Restore the page's original Drupal.settings.
- */
-Popups.restoreSettings = function() {
-  Drupal.settings = Popups.originalSettings;  
-};
-
-/**
- * Remove as much of the effects of jit loading as possible.
- */
-Popups.restorePage = function() {
-  Popups.restoreSettings();
-  // Remove the CSS files that were jit loaded for popup.
-  for (var i in Popups.addedCSS) {
-    var link = Popups.addedCSS[i];
-    $('link[href='+ $(link).attr('href') + ']').remove();
-  }
-  Popups.addedCSS = [];
-};
-
-
-/****************************************************************************
- * Utility Functions   ******************************************************
- ****************************************************************************/
-
-/**
- * Get the position of the left side of the browser window.
- */
-Popups.scrollLeft = function() {
-  return Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
-};
-
-/**
- * Get the position of the top of the browser window.
- */
-Popups.scrollTop = function() {
-  return Math.max(document.documentElement.scrollTop, document.body.scrollTop);
-};
-
-/**
- * Get the height of the browser window.
- * Fixes jQuery & Opera bug - http://drupal.org/node/366093
- */
-Popups.windowHeight = function() {
-  if ($.browser.opera && $.browser.version > "9.5" && $.fn.jquery <= "1.2.6") { 
-    return document.documentElement.clientHeight;
-  }
-  return $(window).height();
-};
-
-/**
- * Get the height of the browser window.
- * Fixes jQuery & Opera bug - http://drupal.org/node/366093
- */
-Popups.windowWidth = function() {
-  if ($.browser.opera && $.browser.version > "9.5" && $.fn.jquery <= "1.2.6") { 
-    return document.documentElement.clientWidth;
-  }
-  return $(window).width();
-};
-
-Popups.nextCounter = function() {
-  if (this.counter === undefined) {
-    this.counter = 0;
-  }
-  else {
-    this.counter++;
-  }
-  return this.counter;
-};
-
-/****************************************************************************
- * Ajax Functions   ******************************************************
- ****************************************************************************/
-
-/**
- * Add additional CSS to the page.
- */
-Popups.addCSS = function(css) {
-  Popups.addedCSS = [];
-  for (var type in css) {
-    for (var file in css[type]) {
-      var link = css[type][file];
-      // Does the page already contain this stylesheet?
-      if (!$('link[href='+ $(link).attr('href') + ']').length) {
-        $('head').append(link);
-        Popups.addedCSS.push(link); // Keep a list, so we can remove them later.
-      }
-    }
-  }
-};
-
-/**
- * Add additional Javascript to the page.
- */
-Popups.addJS = function(js) {
-  // Parse the json info about the new context.
-  var scripts = [];
-  var inlines = [];
-  for (var type in js) {
-    if (type != 'setting') {
-      for (var file in js[type]) {
-        if (type == 'inline') {
-          inlines.push($(js[type][file]).text());
-        }
-        else {
-          scripts.push($(js[type][file]).attr('src'));
-        }
-      }
-    }
-  }
-
-  // Add new JS settings to the page, needed for #ahah properties to work.
-  Drupal.settings = js.setting;
-//  console.log('js.setting...');
-//  console.log(js.setting);
-
-  for (var i in scripts) {
-    var src = scripts[i];
-    if (!$("script[src='"+ src + "']").length && !Popups.addedJS[src]) {
-      // Get the script from the server and execute it.
-      $.ajax({ 
-        type: 'GET',
-        url: src,
-        dataType: 'script',
-        async : false,
-        success: function(script) {
-          eval(script);
-        }
-      });
-      // Mark the js as added to the underlying page.
-      Popups.addedJS[src] = true;
-    }
-  }
-
-  return inlines;
-};
-
-/**
- * Execute the jit loaded inline scripts.
- * Q: Do we want to re-excute the ones already in the page?
- * 
- * @param inlines
- *   Array of inline scripts.
- */
-Popups.addInlineJS = function(inlines) {
-  // Load the inlines into the page.
-  for (var n in inlines) {
-    // If the script is not already in the page, execute it.
-    if (!$('script:not([src]):contains(' + inlines[n] + ')').length) {
-      eval(inlines[n]);
-    }
-  }
-};
-
-Popups.beforeSend = function(xhr) {
-  xhr.setRequestHeader("X-Drupal-Render-Mode", 'json/popups');
-};
-
-/**
- * Do before the form in the popups is submitted.
- */
-Popups.beforeSubmit = function(formData, $form, options) {
-  Popups.removePopup(); // Remove just the dialog, but not the overlay.
-  Popups.addLoading();
-};
-
-
-/****************************************************************************
- * Page & Form in popups functions                                         ***
- ****************************************************************************/
-
-/**
- * Use Ajax to open a link in a popups window.
- *
- * @param element
- *   Element that was clicked to open the popups.
- * @param options
- *   Hash of options controlling how the popups interacts with the underlying page.
- * @param parent
- *   If path is being opened from inside another popup, that popup is the parent.
- */
-Popups.openPath = function(element, options, parent) {
-  Popups.saveSettings();
-
-  // Let the user know something is happening.
-  $('body').css("cursor", "wait");
-  
-  // TODO - get nonmodal working.
-  if (!options.nonModal) {
-    Popups.addOverlay(); 
-  }
-  Popups.addLoading();
-  
-  var href = options.href ? options.href : element.href;
-  $(document).trigger('popups_open_path', [element, href]); // Broadcast Popup Open Path event.
-  
-  var params = {}; 
-  // Force the popups to return back to the orignal page when forms are done, unless hijackDestination option is set to FALSE.
-  if (options.hijackDestination) { 
-    var returnPath;
-    if (parent) {
-      returnPath = parent.path;
-//      console.log('Popup parent is ...');
-//      console.log(parent);
-    }
-    else { // No parent, so bring flow back to original page.
-      returnPath = Popups.originalSettings.popups.originalPath;
-    }    
-    href = href.replace(/destination=[^;&]*[;&]?/, ''); // Strip out any existing destination param.
-//    console.log("Hijacking destination to " + returnPath);
-    params.destination = returnPath; // Set the destination to return to the parent's path.    
-  }
-
-  var ajaxOptions = {
-    url: href,
-    dataType: 'json',
-    data: params,
-    beforeSend: Popups.beforeSend,
-    success: function(json) { 
-      // Add additional CSS to the page.
-      Popups.addCSS(json.css);
-      var inlines = Popups.addJS(json.js);
-      var popup = Popups.openPathContent(json.path, json.title, json.messages + json.content, element, options, parent);
-      Popups.addInlineJS(inlines);   
-      // Broadcast an event that the path was opened.
-      $(document).trigger('popups_open_path_done', [element, href, popup]);  
-    },
-    complete: function() {
-      $('body').css("cursor", "auto"); // Return the cursor to normal state.      
-    }
-  };
-
-  var ajaxOptions;
-  if (options.reloadOnError) {
-    ajaxOptions.error = function() {
-      location.reload(); // Reload on error. Is this working?
-    };    
-  }
-  else {
-    ajaxOptions.error = function() {
-      Popups.message("Unable to open: " + href);
-    };
-  }
-  $.ajax(ajaxOptions);
-        
-  return false;         
-};
-
-/**
- * Open path's content in an ajax popups.
- *
- * @param title
- *   String title of the popups.
- * @param content
- *   HTML to show in the popups.
- * @param element
- *   A DOM object containing the element that was clicked to initiate the popup. 
- * @param options
- *   Hash of options controlling how the popups interacts with the underlying page.
- * @param parent
- *   Spawning popup, or null if spawned from original page. 
- */
-Popups.openPathContent = function(path, title, content, element, options, parent) {  
-  var popup = new Popups.Popup();
-  Popups.open(popup, title, content, null, options.width); 
-
-  // Set properties on new popup.  
-  popup.parent = parent;
-  popup.path = path;
-//  console.log("Setting popup " + popup.id + " originalPath to " + path);
-  popup.options = options;
-  popup.element = element;
-
-  // Add behaviors to content in popups. 
-  delete Drupal.behaviors.tableHeader; // Work-around for bug in tableheader.js (http://drupal.org/node/234377)
-  delete Drupal.behaviors.teaser; // Work-around for bug in teaser.js (sigh).
-  Drupal.attachBehaviors(popup.$popupBody());
-  // Adding collapse moves focus.
-  popup.refocus();
-
-  // If the popups contains a form, capture submits.
-  var $form = $('form:not(.no-popup)', popup.$popupBody());
-  if ($form.length) {
-    $form.ajaxForm({   
-      dataType: 'json',   
-      iframe: false,
-      beforeSubmit: Popups.beforeSubmit,
-      beforeSend: Popups.beforeSend,
-      success: function(json, status) {
-        Popups.formSuccess(popup, json);
-      },
-      error: function() {
-        Popups.message(Drupal.t("Bad Response form submission"));
-      }
-    });
-  }
-  return popup;
-};
-
-/**
- * The form in the popups was successfully submitted
- * Update the originating page.
- * Show any messages in a popups.
- * 
- * @param popup
- *   The popup object that contained the form that was just submitted.
- * @param data
- *   JSON object from server with status of form submission.
- */
-Popups.formSuccess = function(popup, data) {    
-  // Determine if we are at an end point, or just moving from one popups to another.
-  var done = popup.isDone(data.path);
-  if (!done) { // Not done yet, so show new page in new popups.
-    Popups.removeLoading();
-    Popups.openPathContent(data.path, data.title, data.messages + data.content, popup.element, popup.options, popup.parent);
-  }
-  else { // We are done with popup flow.
-    // Execute the onUpdate callback if available.
-    if (popup.options.updateMethod === 'callback' && popup.options.onUpdate) { 
-      var result = eval(popup.options.onUpdate +'(data, popup.options, popup.element)');
-      if (result === false) { // Give onUpdate callback a chance to skip normal processing.
-        return;
-      }
-    }
-
-    if (popup.options.updateMethod === 'reload') { // Force a complete, non-ajax reload of the page.
-      if (popup.options.updateSource === 'final') {
-        location.href = Drupal.settings.basePath + data.path; // TODO: Need to test this.
-      }
-      else { // Reload originating page.
-        location.reload(); 
-      }
-    }
-    else { // Normal, targeted ajax, reload behavior.
-      // Show messages in dialog and embed the results in the original page.
-      var showMessage = data.messages.length && !popup.options.noMessage;
-      if (showMessage) {
-        var messagePopup = Popups.message(data.messages); // Popup message.
-        if (Popups.originalSettings.popups.autoCloseFinalMessage) {
-          setTimeout(function(){Popups.close(messagePopup);}, 2500); // Autoclose the message box in 2.5 seconds.
-        }
-  
-        // Insert the message into the page above the content.
-        // Might not be the standard spot, but it is the easiest to find.
-        var $next;
-        if (popup.targetLayerSelector() === 'body') {
-          $next = $('body').find(Popups.originalSettings.popups.defaultTargetSelector);
-        }
-        else {
-          $next = $(popup.targetLayerSelector()).find('.popups-body');
-        }
-        $next.parent().find('div.messages').remove(); // Remove the existing messages.
-        $next.before(data.messages); // Insert new messages.
-      }
-          
-      // Update the content area (defined by 'targetSelectors').
-      if (popup.options.updateMethod !== 'none') { 
-        Popups.testContentSelector(); // Kick up warning message if selector is bad.
-
-        Popups.restoreSettings(); // Need to restore original Drupal.settings.popups.links before running attachBehaviors.  This probably has CSS side effects!        
-        if (popup.options.targetSelectors) { // Pick and choose what returned content goes where.
-          jQuery.each(popup.options.targetSelectors, function(t_new, t_old) {
-            if(!isNaN(t_new)) {
-              t_new = t_old; // handle case where targetSelectors is an array, not a hash.
-            }
-//            console.log("Updating target " + t_old + ' with ' + t_new);
-            var new_content = $(t_new, data.content);
-//            console.log("new content... ");
-//            console.log(new_content);
-            var $c = $(popup.targetLayerSelector()).find(t_old).html(new_content); // Inject the new content into the original page.
-
-            Drupal.attachBehaviors($c);
-          });
-        }
-        else { // Put the entire new content into default content area.
-          var $c = $(popup.targetLayerSelector()).find(Popups.originalSettings.popups.defaultTargetSelector).html(data.content);
-//          console.log("updating entire content area.")
-          Drupal.attachBehaviors($c);                    
-        }
-      }
-      
-      // Update the title of the page.
-      if (popup.options.titleSelectors) {
-        jQuery.each(popup.options.titleSelectors, function() {
-          $(''+this).html(data.title);
-        });
-      }
-              
-      // Done with changes to the original page, remove effects.
-      Popups.removeLoading();
-      if (!showMessage) { 
-        // If there is not a messages popups, close current layer.
-        Popups.close();
-      }
-    }
-    
-    // Broadcast an event that popup form was done and successful.
-    $(document).trigger('popups_form_success', [popup]);
-    
-  }  // End of updating spawning layer.
-}; 
-
-
-/**
- * Get a jQuery object for the content of a layer.
- * @param layer
- *   Either a popup, or null to signify the original page.
- */
-Popups.getLayerContext = function(layer) {  
-  var $context;
-  if (!layer) {
-    $context = $('body').find(Popups.originalSettings.popups.defaultTargetSelector);
-  }
-  else {
-    $context = layer.$popupBody();
-  }
-  return $context;
-}
-
-/**
- * Submit the page and reload the results, before popping up the real dialog.
- *
- * @param element
- *   Element that was clicked to open a new popup.
- * @param options
- *   Hash of options controlling how the popups interacts with the underlying page.
- * @param layer
- *   Popup with form to save, or null if form is on original page. 
- */
-Popups.saveFormOnLayer = function(element, options, layer) {
-  var $context = Popups.getLayerContext(layer);
-  var $form = $context.find('form');
-  var ajaxOptions = {
-    dataType: 'json',
-    beforeSubmit: Popups.beforeSubmit,   
-    beforeSend: Popups.beforeSend,
-    success: function(response, status) { 
-      // Sync up the current page contents with the submit.
-      var $c = $context.html(response.content); // Inject the new content into the page.
-      Drupal.attachBehaviors($c);
-      // The form has been saved, the page reloaded, now safe to show the triggering link in a popup.
-      Popups.openPath(element, options, layer); 
-    } 
-  };
-  $form.ajaxSubmit(ajaxOptions); // Submit the form. 
-};
-
-/**
- * Warn the user if ajax updates will not work
- *   due to mismatch between the theme and the theme's popup setting.
- */
-Popups.testContentSelector = function() {
-  var target = Popups.originalSettings.popups.defaultTargetSelector;
-  var hits = $(target).length;
-  if (hits !== 1) { // 1 is the corrent answer.
-    var msg = Drupal.t('The popup content area for this theme is misconfigured.') + '\n';
-    if (hits === 0) {
-      msg += Drupal.t('There is no element that matches ') + '"' + target + '"\n';
-    }
-    else if (hits > 1) {
-      msg += Drupal.t('There are multiple elements that match: ') + '"' + target + '"\n';
-    }
-    msg += Drupal.t('Go to admin/build/themes/settings, select your theme, and edit the "Content Selector" field'); 
-    alert(msg);
-  }
-};
-
-
-// ****************************************************************************
-// * Theme Functions   ********************************************************
-// ****************************************************************************
-
-Drupal.theme.prototype.popupLoading = function() {
-  var loading = '<div id="popups-loading">';
-  loading += '<img src="'+ Drupal.settings.basePath + Popups.originalSettings.popups.modulePath + '/ajax-loader.gif" />';
-  loading += '</div>';
-  return loading;
-};
-
-Drupal.theme.prototype.popupOverlay = function() {
-  return '<div id="popups-overlay"></div>';
-};
-
-Drupal.theme.prototype.popupButton = function(title, id) {
-  return '<input type="button" value="'+ title +'" id="'+ id +'" />';
-};
-
-Drupal.theme.prototype.popupDialog = function(popupId, title, body, buttons) {
-  var template = Drupal.theme('popupTemplate', popupId);
-  var popups = template.replace('%title', title).replace('%body', body);
-  
-  var themedButtons = '';
-  if (buttons) {
-    jQuery.each(buttons, function (id, button) { 
-      themedButtons += Drupal.theme('popupButton', button.title, id);
-    });  
-  }  
-  popups = popups.replace('%buttons', themedButtons);  
-  return popups;
-};
-
-Drupal.theme.prototype.popupTemplate = function(popupId) {
-  var template;
-  template += '<div id="'+ popupId + '" class="popups-box">';
-  template += '  <div class="popups-title">';
-  template += '    <div class="popups-close"><a href="#">' + Drupal.t('Close') + '</a></div>';
-  template += '    <div class="title">%title</div>';
-  template += '    <div class="clear-block"></div>';
-  template += '  </div>';
-  template += '  <div class="popups-body">%body</div>';
-  template += '  <div class="popups-buttons">%buttons</div>';
-  template += '  <div class="popups-footer"></div>';
-  template += '</div>';
-  return template;
-};
-
Binary file test/emission_fichiers/retour_dimanche.png has changed
--- a/test/emission_fichiers/rf_player.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-Drupal.behaviors.rfPlayerOpeningLinks = function(context) {
-  $('a.rf-player-open:not(.rf-player-open-processed)', context).each(function () {
-    var common_settings = { 
-      height: 458,
-      width: 560,
-      top: 150,
-      left: 250,
-      windowName: 'player'
-    }
-
-    var chrome_settings = { 
-      height: 515,
-      width: 560,
-      top: 150,
-      left: 250,
-      windowName: 'player'
-    }
-
-    var chrome_settings_windows = { 
-      height: 465,
-      width: 560,
-      top: 150,
-      left: 250,
-      windowName: 'player'
-    }
-
-    var is_chrome = /chrome/.test(navigator.userAgent.toLowerCase());
-    var is_windows = /windows/.test(navigator.userAgent.toLowerCase());
-
-    if (is_chrome == false) {
-      $(this).popupWindow(common_settings);
-    }
-    else {
-      if (is_windows == false) {
-        $(this).popupWindow(chrome_settings);
-      }
-      else {
-        $(this).popupWindow(chrome_settings_windows);
-      }
-    }
-
-    // We can add the processed class
-    $(this).addClass('rf-player-open-processed');
-  });
-};
\ No newline at end of file
--- a/test/emission_fichiers/rollover.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-  $(document).ready(function(){  
-    
-	    $('.rollover').hover(function(){
-        if($(this).attr("src").indexOf("-hover") == -1) {
-			var newSrc = $(this).attr("src").replace(".png","-hover.png");
-			$(this).attr("src",newSrc);}},
-	function(){
-            if($(this).attr("src").indexOf("-hover.png") != -1) {
-					var oldSrc = $(this).attr("src").replace("-hover.png",".png");
-					$(this).attr("src",oldSrc);}
-                                        });
-            
-            $('input[type="text"]').addClass("idleField");  
-            $('form:not([id="user-profile-form"]) input[type="text"]').focus(function() {
-        $(this).removeClass("idleField").addClass("focusField");  
-        if (this.value == this.defaultValue){  
-            this.value = '';  
-         }
-        if(this.value != this.defaultValue){  
-            this.select();  
-        }  
-    });  
-    $('input[type="text"]').blur(function() {  
-        $(this).removeClass("focusField").addClass("idleField");  
-        if (this.value == ''){  
-            this.value = (this.defaultValue ? this.defaultValue : '');  
-        }  
-    });   
-});
--- a/test/emission_fichiers/script.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-// $Id: script.js,v 1.2 2008/10/30 13:00:59 jmburnz Exp $
-
-/**
- * Animates submit buttons
- */
-var Genesis = {};
-// jump to the value in a select drop down
-Genesis.go = function(e) {
-  var destination = e.options[e.selectedIndex].value;
-  if (destination && destination != 0) location.href = destination;
-};
-// prevent users from clicking a submit button twice
-Genesis.formCheck = function() {
-  // only apply this to node and comment and new user registration forms
-  var forms = $("#node-form>div>div>#edit-submit,#comment-form>div>#edit-submit,#user-register>div>#edit-submit");
-  // insert the saving div now to cache it for better performance and to show the loading image
-  $('<div id="saving"><p class="saving">Enregistrement des données&hellip;</p></div>').insertAfter(forms);
-  forms.click(function() {
-    $(this).siblings("input[@type=submit]").hide();
-    $(this).hide();
-    $("#saving").show();
-    var notice = function() {
-      $('<p id="saving-notice">Pas d\'enregistrement ? Patientez quelques secondes, rechargez cette page, et essayez à nouveau.</p>').appendTo("#saving").fadeIn();
-    };
-    // append notice if form saving isn't work, perhaps a timeout issue
-    setTimeout(notice, 24000);
-  });
-};
-// Global Killswitch.
-if (Drupal.jsEnabled) {
-  $(document).ready(Genesis.formCheck);
-}
Binary file test/emission_fichiers/search-submit.png has changed
--- a/test/emission_fichiers/sh20.htm	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"><head>
-<meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>AddThis
- utility frame</title></head><body style="background-color: 
-transparent;"><script type="text/javascript">/* <![CDATA[ */
-if(!window._ate){var _atd="www.addthis.com/",_atr="//s7.addthis.com/",_atn="//l.addthiscdn.com/",_euc=encodeURIComponent,_duc=decodeURIComponent,_atc={dr:0,ver:250,loc:0,enote:"",cwait:500,tamp:-1,xamp:0,camp:1,vamp:1,famp:0.02,pamp:0.2,damp:1,abf:!!window.addthis_do_ab};(function(){try{var C=window.location;if(C.protocol.indexOf("file")===0){_atr="http:"+_atr;}if(C.hostname.indexOf("localhost")!=-1){_atc.loc=1;}}catch(I){}var F=navigator.userAgent.toLowerCase(),J=document,u=window,E=J.location,K={win:/windows/.test(F),xp:/windows nt 5.1/.test(F)||/windows nt 5.2/.test(F),osx:/os x/.test(F),chr:/chrome/.test(F),iph:/iphone/.test(F),ipa:/ipad/.test(F),saf:/safari/.test(F),web:/webkit/.test(F),opr:/opera/.test(F),msi:(/msie/.test(F))&&!(/opera/.test(F)),ffx:/firefox/.test(F),ff2:/firefox\/2/.test(F),ie6:/msie 6.0/.test(F),ie7:/msie 7.0/.test(F),mod:-1},j={vst:[],rev:"78598",bro:K,show:1,dl:E,upm:!!u.postMessage&&(""+u.postMessage).toLowerCase().indexOf("[native code]")!==-1,camp:_atc.camp-Math.random(),xamp:_atc.xamp-Math.random(),vamp:_atc.vamp-Math.random(),pamp:_atc.pamp-Math.random(),afamp:_atc.afamp-Math.random(),ab:"-",seq:1,inst:1,wait:500,tmo:null,cvt:[],avt:null,sttm:new Date().getTime(),max:4294967295,sid:0,sub:!!window.at_sub,dbm:0,uid:null,spt:"static/r07/widget20.png",api:{},imgz:[],hash:window.location.hash};J.ce=J.createElement;J.gn=J.getElementsByTagName;window._ate=j;var v=function(O,l,w,d){if(!O){return w;}if(O instanceof Array||(O.length&&(typeof O!=="function"))){for(var h=0,a=O.length,b=O[0];h<a;b=O[++h]){w=l.call(d||O,w,b,h,O);}}else{for(var e in O){w=l.call(d||O,w,O[e],e,O);}}return w;},y=Array.prototype.slice,B=function(b){return y.apply(b,y.call(arguments,1));},z=function(a){return(""+a).replace(/(^\s+|\s+$)/g,"");},H=function(a,b){return v(B(arguments,1),function(e,d){return v(d,function(w,l,h){w[h]=l;return w;},e);},a);},p=function(b,a){return v(b,function(h,e,d){d=z(d);if(d){h.push(_euc(d)+"="+_euc(z(e)));}return h;},[]).join(a||"&");},n=function(b,a){return v((b||"").split(a||"&"),function(w,P){try{var l=P.split("="),h=z(_duc(l[0])),d=z(_duc(l.slice(1).join("=")));if(h){w[h]=d;}}catch(O){}return w;},{});},N=function(){var a=B(arguments,0),d=a.shift(),b=a.shift();return function(){return d.apply(b,a.concat(B(arguments,0)));};},D=function(b,e,a,d){if(!e){return;}if(we){e[(b?"detach":"attach")+"Event"]("on"+a,d);}else{e[(b?"remove":"add")+"EventListener"](a,d,false);}},o=function(d,a,b){D(0,d,a,b);},m=function(d,a,b){D(1,d,a,b);},f={reduce:v,slice:B,strip:z,extend:H,toKV:p,fromKV:n,bind:N,listen:o,unlisten:m};j.util=f;H(j,f);H(j,{trim:function(a,b){try{a=a.replace(/^[\s\u3000]+|[\s\u3000]+$/g,"");if(b){a=_euc(a);}}catch(b){}return a;},trl:[],tru:function(b,a){var d="";if(b){d=b.substr(0,300);if(d!=b){j.trl.push(a);}}return d;},sto:function(b,a){return setTimeout(b,a);},opp:function(a){a.width=a.height="1px";a.position="absolute";a.zIndex=100000;},jlr:{},acs:function(b){var a=J.ce("link"),d=(J.gn("head")[0]||J.documentElement);a.rel="stylesheet";a.type="text/css";a.href=b;a.media="all";d.insertBefore(a,d.firstChild);},ajs:function(b,a){if(!j.jlr[b]){var e=J.ce("script"),d=J.gn("head")[0]||J.documentElement;e.src=(a?"":_atr)+b;d.insertBefore(e,d.firstChild);j.jlr[b]=1;return e;}return 1;},jlo:function(){try{var O=document,b=j,w=b.lng(),h=function(d){var a=new Image();j.imgz.push(a);a.src=d;};b.alg(w);if(!b.pld){if(b.bro.ie6){h(_atr+b.spt);h(_atr+"static/t00/logo1414.gif");h(_atr+"static/t00/logo88.gif");if(window.addthis_feed){h("static/r05/feed00.gif",1);}}if(b.pll&&!window.addthis_translations){b.sto(function(){b.pld=b.ajs("static/r07/menu56.js");},10);}else{b.pld=b.ajs("static/r07/menu56.js");}}}catch(l){}},ao:function(b,l,h,d,e,a){j.lad(["open",b,l,h,d,e,a]);j.jlo();return false;},ac:function(){},as:function(b,d,a){j.lad(["send",b,d,a]);j.jlo();}});(function(b,l,e){var O,w=document,a=b.util;b.ckv=a.fromKV(w.cookie,";");function h(d){return a.fromKV(w.cookie,";")[d];}if(!b.cookie){b.cookie={};}b.cookie.rck=h;})(j,j.api,j);(function(b,e,h){var a,l=document,Q=b.util;function P(S){if(_atc.xck){return;}var R=S||j.dh||j.du||(j.dl?j.dl.hostname:"");if(R.indexOf(".gov")>-1||R.indexOf(".mil")>-1){_atc.xck=1;}var T=typeof(b.pub)==="function"?b.pub():b.pub,d=["usarmymedia","govdelivery"];for(i in d){if(T==d[i]){_atc.xck=1;break;}}}function w(d){if(l.cookie){l.cookie=d+"= ; expires=Tue, 31 Mar 2009 05:47:11 UTC; path=/";}}function O(R,d,S,T){P();if(!_atc.xck){document.cookie=R+"="+d+(!S?"; expires=Wed, 04 Oct 2028 03:19:53 GMT":"")+"; path=/;"+(!T?" domain="+(b.bro.msi?"":".")+"addthis.com":"");}}if(!b.cookie){b.cookie={};}b.cookie.sck=O;b.cookie.kck=w;b.cookie.gov=P;})(j,j.api,j);(function(e,h,P){var d,R=e,T=e.util,l=0;function O(a){if(a=="anonymous"){return true;}return a&&a.match(/^[0-9a-f]{16}$/);}function Q(){var a=R.cookie.rck("uid"),U=!!_atc.xck;if(!l){if(a&&O(a)){R.uf=0;if(a==="anonymous"){a="0000000000000000";R.uf=2;R.cookie.sck("uid",a);if(a==R.cookie.rck("uid")){}else{a="x";}}}else{if(a||a===""){R.uf=2;}else{R.uf=1;}a=R.cuid();R.cookie.sck("uid",a);if((a===R.cookie.rck("uid"))){}else{a="x";}}R.uid=R.dat.uid=a;l=1;}}function w(a){if(R.uid==="anonymous"||R.uid==="0000000000000000"){_atc.xck=1;R.uid="0000000000000000";}}function S(a){R.uid=c;w();}function b(){var a=R.uid;return a&&O(a)?"&uid="+_euc(R.uid):"";}if(!e.cookie){e.cookie={};}e.cookie.uid={update:Q,set:S,toKV:b,isValid:O,check:w};})(j,j.api,j);(function(b,e,d){function a(w){var h=291;if(w){for(var l=0;l<w.length;l++){h=(h*(w.charCodeAt(l)+l)+3)&1048575;}}return(h&16777215).toString(32);}b.mun=a;})(j,j.api,j);(function(h,l,O){var R=h,P=document,w=0,b=parseInt(R.cookie.rck("psc"))||0;if(isNaN(b)||b<0){b=0;}function Q(a){e(a,1);}function e(V,U){if(V){if(V.segments){R.segments=V.segments.join(",");}if(V.urls&&V.urls instanceof Array&&V.urls.length){var a;for(var d=0;d<V.urls.length;d++){a=new Image();R.imgz.push(a);a.src=V.urls[d];}if(U){a=new Image();R.imgz.push(a);a.src="//l.addthiscdn.com/live/t00/ds.gif?vr="+(_atc.ver||250)+"&"+R.ran()+(R.cookie.uid.toKV())+(V.geo?"&geo="+V.geo:"")+(V.loc?"&lc="+_euc(V.loc):"")+(R.segments?"&pix="+R.segments:"");}}}}function T(W){try{R.cookie.gov();R.cookie.uid.check();var Y=window,Z=0,d=R.dr||"",a=R.du,U=a.split("://").shift();G=R.dh?R.dh.split(".").slice(-2).join("."):null,view=100,pop=200,share=300,r_direct=0,r_search=1,r_ondomain=2,r_offdomain=4,r=r_direct,c=".com/",fnd=0;if(d){var aa=d.split("//").pop().split("/").shift().split("?").shift().split(".").slice(-2).join(".");if(aa==G){r|=r_ondomain;}else{r|=r_offdomain;}}if((d.indexOf(c)>-1||W)&&(!R.ssl&&a&&U.indexOf("https")==-1)){if(d&&d.match(/ws\/results\/(Web|Images|Video|News)/)){fnd=1;r|=r_search;}else{if((d.indexOf(c+"search")>-1&&d.indexOf("addthis"+c)==-1)||d.indexOf(c+"url")>-1||(d.indexOf(c+"web")>-1&&d.indexOf("addthis"+c)==-1)||d.indexOf(c+"aol")>-1||d.indexOf(c+"s?bs")>-1||d.indexOf("hotbot"+c)>-1){var ab=d.split("?").pop().split("&");for(var V=0;V<ab.length;V++){if(ab[V].indexOf("q=")===0||ab[V].indexOf("bs=")===0||ab[V].indexOf("p=")===0||ab[V].indexOf("query")===0||ab[V].indexOf("qry")===0||ab[V].indexOf("text")===0){fnd=1;break;}}r|=r_search;}}if((!w||w<share)&&!_atc.xtr&&!_atc.xck&&(fnd||W)&&R.mun(R.pub)!=="mu2r"){if(!W){W=view;}w=W;j.ajs("//cf.addthis.com/red/p.json?rb="+r+"&gen="+W+"&callback=_ate.ad.hrr"+(R.pub?"&pub="+R.pub:"")+(R.cb?"&cb="+R.cb:"")+(R.sh&&W==share?"&dest="+R.sh:"")+R.cookie.uid.toKV()+"&url="+_euc(a)+(d?"&ref="+_euc(d):"")+"&"+R.ran(),1);}return r;}}catch(X){}}function S(V){try{var a=R.du,U=R.dr;R.cookie.gov();R.cookie.uid.check();if(!_atc.xck){if(++(b)>(Math.ceil(1/_atc.pamp)-1)){if((!R.ssl&&a&&a.indexOf("https")==-1)&&!(V&1)){b=0;if(Math.random()>_atc.damp){j.ajs("//ds.addthis.com/red/psi/p.json?callback=_ate.ad.hpr"+(R.cookie.uid.toKV())+(R.cb?"&cb="+R.cb:"")+"&url="+_euc(a)+(U?"&ref="+_euc(U):"")+"&"+R.ran(),1);}else{var W=a.split("://").pop().split("/").shift();j.ajs("//ds.addthis.com/red/psi/sites/"+W+"/p.json?callback=_ate.ad.hpr"+(R.cookie.uid.toKV())+(R.cb?"&cb="+R.cb:"")+"&url="+_euc(a)+(U?"&ref="+_euc(U):"")+"&"+R.ran(),1);}}}R.cookie.sck("psc",b);}}catch(d){}}if(!h.ad){h.ad={};}j.extend(h.ad,{xrd:T,xps:S,hpr:Q,hrr:e});})(j,j.api,j);H(j,{pix:"tev",evu:"//o.addthis.com/at/",qtp:[],xtp:function(){var a;while(a=j.qtp.pop()){a[0].apply(this,a[1]);}},ran:function(){return Math.floor(Math.random()*4294967295).toString(36);},off:function(){return Math.floor((new Date().getTime()-j.sttm)/100).toString(16);},cst:function(a){return"CXNID=2000001.521545608054043907"+(a||2)+"NXC";},fhu:function(a){if(a&&(a.indexOf("http:")===0||a.indexOf("://")==-1)){return a;}return"";},spu:function(a){return!a?[]:a.split("://").pop().split("/");},img:function(h,Q,S){if(!window.at_sub&&!_atc.xtr){var R=j,b=R.spu(R.fhu(R.dr)),d=R.spu(R.fhu(R.du)),O=d,w=b,l=R.rev||"",P=[];w=(w&&Math.random()<_atc.famp)?(b.length>1?b.slice(1).join("/"):0):0;O=(d&&d.length>1)?d.slice(1).join("/"):"";if(b){b=b.shift();}if(d){d=d.shift();}w=R.tru(w,"fr");O=R.tru(O,"fp");var e=new Image();R.imgz.push(e);e.src=_atn+"live/t00/"+h+".gif?"+R.ran()+(R.cookie.uid.toKV())+"&"+R.cst(Q)+(R.pub?"&pub="+R.pub:"")+(l?"&rev="+l:"")+(S?"&"+S:"")+"&si="+R.ssid()+(R.sh?"&sh="+R.sh:"")+(R.cm?"&cm="+R.cm:"")+(R.loc?"&lc="+_euc(R.loc.split(",").pop()):"")+(R.lng?"&ln="+_euc(R.lng.split("-").shift().slice(0,2)):"")+(h.indexOf("lo")>-1?(!isNaN(R.uf)?"&uf="+R.uf:"")+(R.trl.length?"&tr="+R.trl.join(","):"")+(R.sr?"&sr="+_euc(R.sr):"")+(R.inst?"&pi="+R.inst:"")+(R.cb?"&cb="+R.cb:"")+"&dp="+(d?_euc(d):"")+(b&&(!d||b!=d)?"&dr="+_euc(b):"")+(O?"&fp="+_euc(O):"")+"&pc="+(_euc((R.pc||"men").substr(0,3)))+(w.length?"&fr="+_euc(w):""):"");}},cuid:function(){return((j.sttm/1000)&j.max).toString(16)+("00000000"+(Math.floor(Math.random()*(j.max+1))).toString(16)).slice(-8);},ssid:function(){if(j.sid===0){j.sid=j.cuid();}return j.sid;},fcv:function(b,a){return _euc(b)+"="+_euc(a)+";"+j.off();},cev:function(b,a,d){j.pix="cev-"+_euc(b);j.cvt.push(j.fcv(b,a));j.sxm(true);},sxm:function(a){if(j.tmo!==null){clearTimeout(j.tmo);}if(a){j.tmo=j.sto("_ate.xmi(false)",j.wait);}},sta:function(){var b=j;return"AT-"+(b.pub?b.pub:"unknown")+"/-/"+b.ab+"/"+b.ssid()+"/"+(b.seq++)+(b.uid!==null?"/"+b.uid:"");},xld:function(){var b=j,e=b.du,w={"6jb4":1,sirb:1,q8fc:1,mv86:1,qmo0:1},d=b.jsl,l,h=b.mun(b.pub);if(!b.xld_p){b.xld_p=1;if(b.uid!="x"){if(b.xamp>=0&&(b.lng||"").indexOf("en")==0){l=b.ad.xrd(100);}else{if(b.camp>=0){l=b.ad.xrd();}}b.ad.xps(l);}b.img(_atc.ver+"lo","2");}},xmi:function(Q){var b=j,O=b.dl?b.dl.hostname:"";if(!b.uid){b.cookie.uid.set("X"+b.cuid());}else{b.cookie.uid.check();}if(b.cvt.length>0){b.sxm(false);if(_atc.xtr){return;}if(O.indexOf(".gov")>-1||O.indexOf(".mil")>-1){_atc.xck=1;}if(b.dt){b.cvt.push(b.fcv("pti",b.dt));}var R=b.pix+"-"+b.ran()+".png?ev="+j.sta()+"&ce="+b.cvt.join(",")+(_atc.xck?"&xck=1":"")+(b.du?"&PRE="+_euc(b.du):""),l=b.evu+R;b.cvt=[];if(Q){var P=document,w=P.ce("iframe");w.id="_atf";w.src=l;j.opp(w.style);P.body.appendChild(w);w=P.getElementById("_atf");}else{var e=new Image();b.imgz.push(e);e.src=l;}}}});H(j,{dat:{},_rec:[],pmh:function(b){var a=n(b.data);if(a&&(a.sid==j.sid||!j.sid)){j.rec(b.data);}},rec:function(S,Z){if(!S){return{};}var P={ab:1,cm:1,dh:1,dr:1,du:1,dt:1,inst:1,jsl:1,lng:1,pc:1,pub:1,rev:1,sh:1,si:1,sid:1,sr:1,ver:1,xxl:1},ae=n(S),ad=j,W=ae.trl,h=parseInt(ae.ver),Q=parseInt(ae.ssl),V=parseInt(ae.cb||0),d=parseFloat(ae.srp),U=parseFloat(ae.srf),O=parseFloat(ae.srd),l=parseFloat(ae.srx),T=ae.evt,w=ae.ext,e=ae.now,aa=parseInt(ae.xck),R=ae.ce,b=parseInt(ae.gen);for(var X in P){if(ae[X]){ad[X]=ae[X];}}ad.ssl=Q;ad.cb=V;if(aa){_atc.xck=1;}if(h){_atc.ver=h;}if(W){ad.trl=ad.trl.concat(W.split(","));}if(U!==undefined){_atc.famp=U;}if(d!==undefined){_atc.pamp=d;}if(O!==undefined){_atc.damp=O;}if(l!==undefined){_atc.xamp=l;ad.xamp=_atc.xamp-Math.random();}if(h&&T){ad.qtp.push([ad.img,[h+T,"2",w]]);}if(R){R=R.split(",");for(var Y=0;Y<R.length;Y++){var ab=R[Y].split(";"),ac=ab[0].split("=");ad.qtp.push([ad.cev,[ac[0],ac[1],ab[1]]]);}}if(b){ad.qtp.push([ad.ad.xrd,[b]]);}ad.cookie.uid.update();if(ae.xld){ad.xld();}if(window.postMessage){if(ad.xxl){ad.xtp();}if(ae.xd){j.tpf(ad.dat,ae.wpl);}}return ae;},tpf:function(d,b){if(!u.parent){return;}var a=u.name=p(d);if(!!u.postMessage){u.parent.postMessage(a,"*");}else{J.location.replace(b);}}});var u=window,J=document,G=u.location.hash.slice(1),L=j,F=navigator.userAgent.toLowerCase(),t=-1,k=(/msie/.test(F))&&!(/opera/.test(F)),s=/safari/.test(F)&&/version\/3/.test(F),x=/firefox/.test(F),q=x&&/firefox\/2/.test(F),g=!!window.postMessage,A=n(J.cookie,";");J.ce=J.createElement;J.gn=J.getElementsByTagName;L.lng=k?navigator.userLanguage:navigator.language;if(A.sshs){L.dat.ssh=A.sshs;}if(A.dbm){L.dat.dbm=A.dbm;}if(A.loc){L.loc=A.loc;L.dat.loc=A.loc;}if(g){if(k){u.attachEvent("onmessage",L.pmh);}else{u.addEventListener("message",L.pmh,false);}}var M=j.rec(G);if(!L.xxl){if(x&&g){u.parent.postMessage("rdy=1","*");}else{L.cookie.uid.update();L.xld();}}L.xtp();})();}/* ]]> */</script></body></html>
\ No newline at end of file
--- a/test/emission_fichiers/swfobject.txt	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-/*	SWFObject v2.2 <http://code.google.com/p/swfobject/> 
-	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
-*/
-var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+encodeURI(O.location).toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();
\ No newline at end of file
--- a/test/emission_fichiers/tableheader.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-// $Id: tableheader.js,v 1.16.2.2 2009/03/30 12:48:09 goba Exp $
-
-Drupal.tableHeaderDoScroll = function() {
-  if (typeof(Drupal.tableHeaderOnScroll)=='function') {
-    Drupal.tableHeaderOnScroll();
-  }
-};
-
-Drupal.behaviors.tableHeader = function (context) {
-  // This breaks in anything less than IE 7. Prevent it from running.
-  if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7) {
-    return;
-  }
-
-  // Keep track of all cloned table headers.
-  var headers = [];
-
-  $('table.sticky-enabled thead:not(.tableHeader-processed)', context).each(function () {
-    // Clone thead so it inherits original jQuery properties.
-    var headerClone = $(this).clone(true).insertBefore(this.parentNode).wrap('<table class="sticky-header"></table>').parent().css({
-      position: 'fixed',
-      top: '0px'
-    });
-
-    headerClone = $(headerClone)[0];
-    headers.push(headerClone);
-
-    // Store parent table.
-    var table = $(this).parent('table')[0];
-    headerClone.table = table;
-    // Finish initialzing header positioning.
-    tracker(headerClone);
-
-    $(table).addClass('sticky-table');
-    $(this).addClass('tableHeader-processed');
-  });
-
-  // Define the anchor holding var.
-  var prevAnchor = '';
-
-  // Track positioning and visibility.
-  function tracker(e) {
-    // Save positioning data.
-    var viewHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
-    if (e.viewHeight != viewHeight) {
-      e.viewHeight = viewHeight;
-      e.vPosition = $(e.table).offset().top - 4;
-      e.hPosition = $(e.table).offset().left;
-      e.vLength = e.table.clientHeight - 100;
-      // Resize header and its cell widths.
-      var parentCell = $('th', e.table);
-      $('th', e).each(function(index) {
-        var cellWidth = parentCell.eq(index).css('width');
-        // Exception for IE7.
-        if (cellWidth == 'auto') {
-          cellWidth = parentCell.get(index).clientWidth +'px';
-        }
-        $(this).css('width', cellWidth);
-      });
-      $(e).css('width', $(e.table).css('width'));
-    }
-
-    // Track horizontal positioning relative to the viewport and set visibility.
-    var hScroll = document.documentElement.scrollLeft || document.body.scrollLeft;
-    var vOffset = (document.documentElement.scrollTop || document.body.scrollTop) - e.vPosition;
-    var visState = (vOffset > 0 && vOffset < e.vLength) ? 'visible' : 'hidden';
-    $(e).css({left: -hScroll + e.hPosition +'px', visibility: visState});
-
-    // Check the previous anchor to see if we need to scroll to make room for the header.
-    // Get the height of the header table and scroll up that amount.
-    if (prevAnchor != location.hash) {
-      if (location.hash != '') {
-        var offset = $('td' + location.hash).offset();
-        if (offset) {
-          var top = offset.top;
-          var scrollLocation = top - $(e).height();
-          $('body, html').scrollTop(scrollLocation);
-        }
-      }
-      prevAnchor = location.hash;
-    }
-  }
-
-  // Only attach to scrollbars once, even if Drupal.attachBehaviors is called
-  //  multiple times.
-  if (!$('body').hasClass('tableHeader-processed')) {
-    $('body').addClass('tableHeader-processed');
-    $(window).scroll(Drupal.tableHeaderDoScroll);
-    $(document.documentElement).scroll(Drupal.tableHeaderDoScroll);
-  }
-
-  // Track scrolling.
-  Drupal.tableHeaderOnScroll = function() {
-    $(headers).each(function () {
-      tracker(this);
-    });
-  };
-
-  // Track resizing.
-  var time = null;
-  var resize = function () {
-    // Ensure minimum time between adjustments.
-    if (time) {
-      return;
-    }
-    time = setTimeout(function () {
-      $('table.sticky-header').each(function () {
-        // Force cell width calculation.
-        this.viewHeight = 0;
-        tracker(this);
-      });
-      // Reset timer
-      time = null;
-    }, 250);
-  };
-  $(window).resize(resize);
-};
--- a/test/emission_fichiers/textarea.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-// $Id: textarea.js,v 1.22 2008/01/17 19:31:56 goba Exp $
-
-Drupal.behaviors.textarea = function(context) {
-  $('textarea.resizable:not(.textarea-processed)', context).each(function() {
-    // Avoid non-processed teasers.
-    if ($(this).is(('textarea.teaser:not(.teaser-processed)'))) {
-      return false;  
-    }
-    var textarea = $(this).addClass('textarea-processed'), staticOffset = null;
-
-    // When wrapping the text area, work around an IE margin bug.  See:
-    // http://jaspan.com/ie-inherited-margin-bug-form-elements-and-haslayout
-    $(this).wrap('<div class="resizable-textarea"><span></span></div>')
-      .parent().append($('<div class="grippie"></div>').mousedown(startDrag));
-
-    var grippie = $('div.grippie', $(this).parent())[0];
-    grippie.style.marginRight = (grippie.offsetWidth - $(this)[0].offsetWidth) +'px';
-
-    function startDrag(e) {
-      staticOffset = textarea.height() - e.pageY;
-      textarea.css('opacity', 0.25);
-      $(document).mousemove(performDrag).mouseup(endDrag);
-      return false;
-    }
-
-    function performDrag(e) {
-      textarea.height(Math.max(32, staticOffset + e.pageY) + 'px');
-      return false;
-    }
-
-    function endDrag(e) {
-      $(document).unbind("mousemove", performDrag).unbind("mouseup", endDrag);
-      textarea.css('opacity', 1);
-    }
-  });
-};
--- a/test/emission_fichiers/widget40.css	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-#at16lb{display:none;position:absolute;top:0;left:0;width:100%;height:100%;z-index:1001;background-color:black;opacity:.001;}#at20mc,#at_email,#at16pib,#at16pc,#at16pi,#at_share,#at_complete,#at_success,#at_error{position:static!important;}#at20mc{position:absolute;left:0;top:0;}#at20mc a{color:#36B;}#at20mc div{float:none;}.at15dn{display:none;}.at15a{border:0;height:0;margin:0;padding:0;width:100%;width:230px;}.atnt{text-align:center!important;padding:6px 0 0 0!important;height:24px!important;}.atnt a{text-decoration:none;color:#36b;}.atnt a:hover{text-decoration:underline;}#at_msg,#at16p label,#at16nms,#at16sas,#at_share .at_item,#at16p,#at15s,#at16p form input,#at16p form textarea{font-family:arial,helvetica,tahoma,verdana,sans-serif!important;font-size:12px!important;outline-style:none;outline-width:0;line-height:1em;}* html #at15s.mmborder{position:absolute!important;}#at15s.mmborder{position:fixed!important;}/*\*/ #at15s.mmborder{width:240px!important;}/**/ #at20mc div.at15sie6{color:#4c4c4c!important;width:240px!important;}#at15s{background:url(//s7.addthis.com/static/t00/atbkg.png);float:none!important;line-height:1em!important;margin:0!important;overflow:visible!important;padding:5px!important;text-align:left!important;position:absolute!important;}#at15s,#at16p{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;}html>body #at15s{width:230px!important;}#at15s.atiemode2{width:232px!important;}#at15s_inner{background:#fff;border:1px solid #fff;margin:0;}#at15s_head{position:relative;background:#f2f2f2;padding:4px;cursor:default;border-bottom:1px solid #e5e5e5;}.at15s_head_success{background:#cafd99!important;border-bottom:1px solid #a9d582!important;}.at15s_head_success *{color:#000!important;text-decoration:none;}#at15s_brand,#at16_brand,#at15sptx{position:absolute;}#at15s_brand{top:4px;right:4px;}.at15s_brandx{right:20px!important;}a#at15sptx{top:4px;right:4px;text-decoration:none;color:#4c4c4c;font-weight:bold;}.at15sie6 a#at15sptx,#at15s.atiemode2 a#at15sptx{right:8px;}#at15sptx:hover{text-decoration:underline;}#at16_brand{top:5px;right:30px;cursor:default;}#at_hover{padding:4px;}#at_hover .at_item,#at_share .at_item{background:#fff!important;float:left!important;color:#4c4c4c!important;}#at16nms,#at16sas{padding:4px 5px;}#at16sas{clear:left;padding-top:16px;padding-bottom:16px;}#at_hover .at_item{width:102px!important;padding:2px 3px!important;margin:1px;}#at_hover .at_item.atiemode2{width:104px!important;}#at_hover .at_item:hover,#at_hover .at_item.athov{margin:0!important;}#at_hover .at_item:hover,#at_hover .at_item.athov,#at_share .at_item:hover,#at_share .at_item.athov{background:#f2f2f2!important;border:1px solid #e5e5e5;color:#000!important;}* html #at_hover .at_item{border:1px solid #fff;}* html #at_hover .at_item.athov{border:1px solid #e5e5e5!important;margin:1px!important;}#at_email15{padding-top:5px;}.at15e_row{height:28px;}.at15e_row label,.at15e_row span{padding-left:10px!important;display:block!important;width:60px!important;float:left!important;}.at15e_row input,.at15e_row textarea{display:block!important;width:150px!important;float:left!important;background:#fff!important;border:1px solid #ccc!important;color:#333!important;font-size:11px!important;font-weight:normal!important;padding:0!important;}#at_email label,#at_email input,#at_email textarea{font-size:11px!important;}#at_email #at16meo{margin:15px 0 0 2px;}#at_email #at16meo span{float:left;margin-right:5px;padding-top:4px;}#at_email #at16meo a{float:left;margin:0;}#at_sending{margin-top:130px;text-align:center;}#at_sending img{padding:10px;}.at15t{display:block!important;height:16px!important;line-height:16px!important;padding-left:20px!important;background:url(//s7.addthis.com/static/r07/widget20.png) no-repeat left;background-position:0 0;cursor:pointer;}.at15t{display:block!important;height:16px!important;line-height:16px!important;padding-left:20px!important;background:url(//s7.addthis.com/static/r07/widget20.png) no-repeat left;background-position:0 0;cursor:pointer;}.addthis_button{cursor:pointer;}.addthis_toolbox.addthis_default_style span{line-height:16px;}.addthis_default_style .addthis_separator{margin:0 5px;display:inline;}div.atclear{clear:both;}.addthis_default_style .addthis_separator,.addthis_default_style .at300b,.addthis_default_style .at300m,.addthis_default_style .at300bs{float:left;}.at300b img{border:0;}.addthis_default_style .at300b,.addthis_default_style .at300m{padding:0 2px;}.at300b,.at300m,.at300bs{cursor:pointer;}.addthis_32x32_style .at300bs{background:url(//s7.addthis.com/static/r07/widget20_32x32.png) no-repeat left;overflow:hidden;display:block;background-position:0 0;height:32px;width:32px;line-height:32px!important;}.at300bs{background:url(//s7.addthis.com/static/r07/widget20.png) no-repeat left;overflow:hidden;display:block;background-position:0 0;height:16px;width:16px;line-height:16px!important;}.at300bs.at15t_expanded,.at300bs.at15t_compact{background:url(//s7.addthis.com/static/t00/logo1414.gif) no-repeat left;margin-right:4px;}.addthis_32x32_style .at300bs.at15t_compact,.addthis_32x32_style .at300bs.at15t_expanded{background:url(//s7.addthis.com/static/r07/widget20_32x32.png) no-repeat left;background-position:0 -1856px;margin-right:0;}.addthis_32x32_style .at15t_100zakladok{background-position:0 -0px;}.addthis_32x32_style .at15t_2linkme{background-position:0 -32px;}.addthis_32x32_style .at15t_2tag{background-position:0 -64px;}.addthis_32x32_style .at15t_7live7{background-position:0 -96px;}.addthis_32x32_style .at15t_a1webmarks{background-position:0 -128px;}.addthis_32x32_style .at15t_abruzzopedia{background-position:0 -160px;}.addthis_32x32_style .at15t_addio{background-position:0 -192px;}.addthis_32x32_style .at15t_addthis_32x32{background-position:0 -224px;}.addthis_32x32_style .at15t_adifni{background-position:0 -256px;}.addthis_32x32_style .at15t_aerosocial{background-position:0 -288px;}.addthis_32x32_style .at15t_aim{background-position:0 -320px;}.addthis_32x32_style .at15t_allmyfaves{background-position:0 -352px;}.addthis_32x32_style .at15t_amazonwishlist{background-position:0 -384px;}.addthis_32x32_style .at15t_amenme{background-position:0 -416px;}.addthis_32x32_style .at15t_aolmail{background-position:0 -448px;}.addthis_32x32_style .at15t_arto{background-position:0 -480px;}.addthis_32x32_style .at15t_ask{background-position:0 -512px;}.addthis_32x32_style .at15t_aviary{background-position:0 -544px;}.addthis_32x32_style .at15t_baang{background-position:0 -576px;}.addthis_32x32_style .at15t_backflip{background-position:0 -608px;}.addthis_32x32_style .at15t_baidu{background-position:0 -640px;}.addthis_32x32_style .at15t_ballhype{background-position:0 -672px;}.addthis_32x32_style .at15t_bebo{background-position:0 -704px;}.addthis_32x32_style .at15t_bentio{background-position:0 -736px;}.addthis_32x32_style .at15t_biggerpockets{background-position:0 -768px;}.addthis_32x32_style .at15t_bitly{background-position:0 -800px;}.addthis_32x32_style .at15t_bizsugar{background-position:0 -832px;}.addthis_32x32_style .at15t_bleetbox{background-position:0 -864px;}.addthis_32x32_style .at15t_blinklist{background-position:0 -896px;}.addthis_32x32_style .at15t_blip{background-position:0 -928px;}.addthis_32x32_style .at15t_blogger{background-position:0 -960px;}.addthis_32x32_style .at15t_bloggy{background-position:0 -992px;}.addthis_32x32_style .at15t_blogmarks{background-position:0 -1024px;}.addthis_32x32_style .at15t_blogtrottr{background-position:0 -1056px;}.addthis_32x32_style .at15t_blurpalicious{background-position:0 -1088px;}.addthis_32x32_style .at15t_boardlite{background-position:0 -1120px;}.addthis_32x32_style .at15t_bobrdobr{background-position:0 -1152px;}.addthis_32x32_style .at15t_bonzobox{background-position:0 -1184px;}.addthis_32x32_style .at15t_bookmarkedbyus{background-position:0 -1216px;}.addthis_32x32_style .at15t_bookmarkycz{background-position:0 -1248px;}.addthis_32x32_style .at15t_bookmerkende{background-position:0 -1280px;}.addthis_32x32_style .at15t_bordom{background-position:0 -1312px;}.addthis_32x32_style .at15t_box{background-position:0 -1344px;}.addthis_32x32_style .at15t_brainify{background-position:0 -1376px;}.addthis_32x32_style .at15t_bryderi{background-position:0 -1408px;}.addthis_32x32_style .at15t_buddymarks{background-position:0 -1440px;}.addthis_32x32_style .at15t_buzz{background-position:0 -1472px;}.addthis_32x32_style .at15t_buzz_fr{background-position:0 -1504px;}.addthis_32x32_style .at15t_buzzzy{background-position:0 -1536px;}.addthis_32x32_style .at15t_camyoo{background-position:0 -1568px;}.addthis_32x32_style .at15t_care2{background-position:0 -1600px;}.addthis_32x32_style .at15t_chiq{background-position:0 -1632px;}.addthis_32x32_style .at15t_cirip{background-position:0 -1664px;}.addthis_32x32_style .at15t_citeulike{background-position:0 -1696px;}.addthis_32x32_style .at15t_classicalplace{background-position:0 -1728px;}.addthis_32x32_style .at15t_clickazoo{background-position:0 -1760px;}.addthis_32x32_style .at15t_cndig{background-position:0 -1792px;}.addthis_32x32_style .at15t_colivia{background-position:0 -1824px;}.addthis_32x32_style .at15t_compact{background-position:0 -1856px;}.addthis_32x32_style .at15t_connotea{background-position:0 -1888px;}.addthis_32x32_style .at15t_cosmiq{background-position:0 -1920px;}.addthis_32x32_style .at15t_dashboard{background-position:0 -1952px;}.addthis_32x32_style .at15t_delicious{background-position:0 -1984px;}.addthis_32x32_style .at15t_designbump{background-position:0 -2016px;}.addthis_32x32_style .at15t_designmoo{background-position:0 -2048px;}.addthis_32x32_style .at15t_digg{background-position:0 -2080px;}.addthis_32x32_style .at15t_diggita{background-position:0 -2112px;}.addthis_32x32_style .at15t_diggtiger{background-position:0 -2144px;}.addthis_32x32_style .at15t_diglog{background-position:0 -2176px;}.addthis_32x32_style .at15t_digo{background-position:0 -2208px;}.addthis_32x32_style .at15t_diigo{background-position:0 -2240px;}.addthis_32x32_style .at15t_dipdive{background-position:0 -2272px;}.addthis_32x32_style .at15t_domaintoolswhois{background-position:0 -2304px;}.addthis_32x32_style .at15t_domelhor{background-position:0 -2336px;}.addthis_32x32_style .at15t_doower{background-position:0 -2368px;}.addthis_32x32_style .at15t_dosti{background-position:0 -2400px;}.addthis_32x32_style .at15t_dotnetkicks{background-position:0 -2432px;}.addthis_32x32_style .at15t_dotnetshoutout{background-position:0 -2464px;}.addthis_32x32_style .at15t_douban{background-position:0 -2496px;}.addthis_32x32_style .at15t_drimio{background-position:0 -2528px;}.addthis_32x32_style .at15t_dropjack{background-position:0 -2560px;}.addthis_32x32_style .at15t_dwellicious{background-position:0 -2592px;}.addthis_32x32_style .at15t_dzone{background-position:0 -2624px;}.addthis_32x32_style .at15t_edelight{background-position:0 -2656px;}.addthis_32x32_style .at15t_ekudos{background-position:0 -2688px;}.addthis_32x32_style .at15t_elefantapl{background-position:0 -2720px;}.addthis_32x32_style .at15t_elertgadget{background-position:0 -2752px;}.addthis_32x32_style .at15t_email{background-position:0 -2784px;}.addthis_32x32_style .at15t_embarkons{background-position:0 -2816px;}.addthis_32x32_style .at15t_eucliquei{background-position:0 -2848px;}.addthis_32x32_style .at15t_evernote{background-position:0 -2880px;}.addthis_32x32_style .at15t_extraplay{background-position:0 -2912px;}.addthis_32x32_style .at15t_ezyspot{background-position:0 -2944px;}.addthis_32x32_style .at15t_fabulously40{background-position:0 -2976px;}.addthis_32x32_style .at15t_facebook{background-position:0 -3008px;}.addthis_32x32_style .at15t_fark{background-position:0 -3040px;}.addthis_32x32_style .at15t_farkinda{background-position:0 -3072px;}.addthis_32x32_style .at15t_favable{background-position:0 -3104px;}.addthis_32x32_style .at15t_faves{background-position:0 -3136px;}.addthis_32x32_style .at15t_favlogde{background-position:0 -3168px;}.addthis_32x32_style .at15t_favorites{background-position:0 -3200px;}.addthis_32x32_style .at15t_favoritus{background-position:0 -3232px;}.addthis_32x32_style .at15t_flaker{background-position:0 -3264px;}.addthis_32x32_style .at15t_flosspro{background-position:0 -3296px;}.addthis_32x32_style .at15t_fnews{background-position:0 -3328px;}.addthis_32x32_style .at15t_folkd{background-position:0 -3360px;}.addthis_32x32_style .at15t_followtags{background-position:0 -3392px;}.addthis_32x32_style .at15t_fooxweb{background-position:0 -3424px;}.addthis_32x32_style .at15t_forceindya{background-position:0 -3456px;}.addthis_32x32_style .at15t_fresqui{background-position:0 -3488px;}.addthis_32x32_style .at15t_friendfeed{background-position:0 -3520px;}.addthis_32x32_style .at15t_friendster{background-position:0 -3552px;}.addthis_32x32_style .at15t_funp{background-position:0 -3584px;}.addthis_32x32_style .at15t_fwisp{background-position:0 -3616px;}.addthis_32x32_style .at15t_gabbr{background-position:0 -3648px;}.addthis_32x32_style .at15t_gacetilla{background-position:0 -3680px;}.addthis_32x32_style .at15t_gamekicker{background-position:0 -3712px;}.addthis_32x32_style .at15t_gamesnetworks{background-position:0 -3744px;}.addthis_32x32_style .at15t_givealink{background-position:0 -3776px;}.addthis_32x32_style .at15t_globalgrind{background-position:0 -3808px;}.addthis_32x32_style .at15t_gluvsnap{background-position:0 -3840px;}.addthis_32x32_style .at15t_gmail{background-position:0 -3872px;}.addthis_32x32_style .at15t_google{background-position:0 -3904px;}.addthis_32x32_style .at15t_googlebuzz{background-position:0 -3936px;}.addthis_32x32_style .at15t_googlereader{background-position:0 -3968px;}.addthis_32x32_style .at15t_googletranslate{background-position:0 -4000px;}.addthis_32x32_style .at15t_gravee{background-position:0 -4032px;}.addthis_32x32_style .at15t_greaterdebater{background-position:0 -4064px;}.addthis_32x32_style .at15t_grono{background-position:0 -4096px;}.addthis_32x32_style .at15t_grumper{background-position:0 -4128px;}.addthis_32x32_style .at15t_habergentr{background-position:0 -4160px;}.addthis_32x32_style .at15t_hackernews{background-position:0 -4192px;}.addthis_32x32_style .at15t_hadashhot{background-position:0 -4224px;}.addthis_32x32_style .at15t_hatena{background-position:0 -4256px;}.addthis_32x32_style .at15t_hazarkor{background-position:0 -4288px;}.addthis_32x32_style .at15t_hedgehogs{background-position:0 -4320px;}.addthis_32x32_style .at15t_hellotxt{background-position:0 -4352px;}.addthis_32x32_style .at15t_hemidemi{background-position:0 -4384px;}.addthis_32x32_style .at15t_hi5{background-position:0 -4416px;}.addthis_32x32_style .at15t_hipstr{background-position:0 -4448px;}.addthis_32x32_style .at15t_hitmarks{background-position:0 -4480px;}.addthis_32x32_style .at15t_hotbookmark{background-position:0 -4512px;}.addthis_32x32_style .at15t_hotklix{background-position:0 -4544px;}.addthis_32x32_style .at15t_hotmail{background-position:0 -4576px;}.addthis_32x32_style .at15t_hotweblt{background-position:0 -4608px;}.addthis_32x32_style .at15t_hyves{background-position:0 -4640px;}.addthis_32x32_style .at15t_idearef{background-position:0 -4672px;}.addthis_32x32_style .at15t_identica{background-position:0 -4704px;}.addthis_32x32_style .at15t_igoogle{background-position:0 -4736px;}.addthis_32x32_style .at15t_ihavegot{background-position:0 -4768px;}.addthis_32x32_style .at15t_informazione{background-position:0 -4800px;}.addthis_32x32_style .at15t_instapaper{background-position:0 -4832px;}.addthis_32x32_style .at15t_investorlinks{background-position:0 -4864px;}.addthis_32x32_style .at15t_isociety{background-position:0 -4896px;}.addthis_32x32_style .at15t_iwiw{background-position:0 -4928px;}.addthis_32x32_style .at15t_jamespot{background-position:0 -4960px;}.addthis_32x32_style .at15t_jisko{background-position:0 -4992px;}.addthis_32x32_style .at15t_jumptags{background-position:0 -5024px;}.addthis_32x32_style .at15t_kaboodle{background-position:0 -5056px;}.addthis_32x32_style .at15t_kaevur{background-position:0 -5088px;}.addthis_32x32_style .at15t_kipup{background-position:0 -5120px;}.addthis_32x32_style .at15t_kirtsy{background-position:0 -5152px;}.addthis_32x32_style .at15t_kledy{background-position:0 -5184px;}.addthis_32x32_style .at15t_kommenting{background-position:0 -5216px;}.addthis_32x32_style .at15t_koornk{background-position:0 -5248px;}.addthis_32x32_style .at15t_kudos{background-position:0 -5280px;}.addthis_32x32_style .at15t_laaikit{background-position:0 -5312px;}.addthis_32x32_style .at15t_ladenzeile{background-position:0 -5344px;}.addthis_32x32_style .at15t_librerio{background-position:0 -5376px;}.addthis_32x32_style .at15t_linkagogo{background-position:0 -5408px;}.addthis_32x32_style .at15t_linkedin{background-position:0 -5440px;}.addthis_32x32_style .at15t_linkninja{background-position:0 -5472px;}.addthis_32x32_style .at15t_linkshares{background-position:0 -5504px;}.addthis_32x32_style .at15t_linkstore{background-position:0 -5536px;}.addthis_32x32_style .at15t_linkuj{background-position:0 -5568px;}.addthis_32x32_style .at15t_live{background-position:0 -5600px;}.addthis_32x32_style .at15t_livefavoris{background-position:0 -5632px;}.addthis_32x32_style .at15t_livejournal{background-position:0 -5664px;}.addthis_32x32_style .at15t_lockerblogger{background-position:0 -5696px;}.addthis_32x32_style .at15t_lynki{background-position:0 -5728px;}.addthis_32x32_style .at15t_mailto{background-position:0 -5760px;}.addthis_32x32_style .at15t_mashbord{background-position:0 -5792px;}.addthis_32x32_style .at15t_mawindo{background-position:0 -5824px;}.addthis_32x32_style .at15t_meccho{background-position:0 -5856px;}.addthis_32x32_style .at15t_meinvz{background-position:0 -5888px;}.addthis_32x32_style .at15t_mekusharim{background-position:0 -5920px;}.addthis_32x32_style .at15t_memori{background-position:0 -5952px;}.addthis_32x32_style .at15t_meneame{background-position:0 -5984px;}.addthis_32x32_style .at15t_mindbodygreen{background-position:0 -6016px;}.addthis_32x32_style .at15t_misterwong{background-position:0 -6048px;}.addthis_32x32_style .at15t_misterwong_de{background-position:0 -6080px;}.addthis_32x32_style .at15t_misterwong_ru{background-position:0 -6112px;}.addthis_32x32_style .at15t_mixx{background-position:0 -6144px;}.addthis_32x32_style .at15t_mob{background-position:0 -6176px;}.addthis_32x32_style .at15t_moemesto{background-position:0 -6208px;}.addthis_32x32_style .at15t_more{background-position:0 -6240px;}.addthis_32x32_style .at15t_mototagz{background-position:0 -6272px;}.addthis_32x32_style .at15t_mssocialbookmarks{background-position:0 -6304px;}.addthis_32x32_style .at15t_multiply{background-position:0 -6336px;}.addthis_32x32_style .at15t_myaol{background-position:0 -6368px;}.addthis_32x32_style .at15t_mylinkvault{background-position:0 -6400px;}.addthis_32x32_style .at15t_mynasa{background-position:0 -6432px;}.addthis_32x32_style .at15t_myspace{background-position:0 -6464px;}.addthis_32x32_style .at15t_myyearbook{background-position:0 -6496px;}.addthis_32x32_style .at15t_n4g{background-position:0 -6528px;}.addthis_32x32_style .at15t_netlog{background-position:0 -6560px;}.addthis_32x32_style .at15t_netvibes{background-position:0 -6592px;}.addthis_32x32_style .at15t_netvouz{background-position:0 -6624px;}.addthis_32x32_style .at15t_newstrust{background-position:0 -6656px;}.addthis_32x32_style .at15t_newsvine{background-position:0 -6688px;}.addthis_32x32_style .at15t_nujij{background-position:0 -6720px;}.addthis_32x32_style .at15t_oknotizie{background-position:0 -6752px;}.addthis_32x32_style .at15t_oneview{background-position:0 -6784px;}.addthis_32x32_style .at15t_orkut{background-position:0 -6816px;}.addthis_32x32_style .at15t_osmosus{background-position:0 -6848px;}.addthis_32x32_style .at15t_oyyla{background-position:0 -6880px;}.addthis_32x32_style .at15t_pdfmyurl{background-position:0 -6912px;}.addthis_32x32_style .at15t_pdfonline{background-position:0 -6944px;}.addthis_32x32_style .at15t_phonefavs{background-position:0 -6976px;}.addthis_32x32_style .at15t_picciz{background-position:0 -7008px;}.addthis_32x32_style .at15t_pimpthisblog{background-position:0 -7040px;}.addthis_32x32_style .at15t_pingfm{background-position:0 -7072px;}.addthis_32x32_style .at15t_planypus{background-position:0 -7104px;}.addthis_32x32_style .at15t_plaxo{background-position:0 -7136px;}.addthis_32x32_style .at15t_plurk{background-position:0 -7168px;}.addthis_32x32_style .at15t_polladium{background-position:0 -7200px;}.addthis_32x32_style .at15t_popedition{background-position:0 -7232px;}.addthis_32x32_style .at15t_posteezy{background-position:0 -7264px;}.addthis_32x32_style .at15t_posterous{background-position:0 -7296px;}.addthis_32x32_style .at15t_pratiba{background-position:0 -7328px;}.addthis_32x32_style .at15t_print{background-position:0 -7360px;}.addthis_32x32_style .at15t_printfriendly{background-position:0 -7392px;}.addthis_32x32_style .at15t_propeller{background-position:0 -7424px;}.addthis_32x32_style .at15t_pusha{background-position:0 -7456px;}.addthis_32x32_style .at15t_quantcast{background-position:0 -7488px;}.addthis_32x32_style .at15t_qzone{background-position:0 -7520px;}.addthis_32x32_style .at15t_readitlater{background-position:0 -7552px;}.addthis_32x32_style .at15t_receeveit{background-position:0 -7584px;}.addthis_32x32_style .at15t_reddit{background-position:0 -7616px;}.addthis_32x32_style .at15t_rediff{background-position:0 -7648px;}.addthis_32x32_style .at15t_redkum{background-position:0 -7680px;}.addthis_32x32_style .at15t_scoopat{background-position:0 -7712px;}.addthis_32x32_style .at15t_segnalo{background-position:0 -7744px;}.addthis_32x32_style .at15t_sekoman{background-position:0 -7776px;}.addthis_32x32_style .at15t_shaveh{background-position:0 -7808px;}.addthis_32x32_style .at15t_shetoldme{background-position:0 -7840px;}.addthis_32x32_style .at15t_simpy{background-position:0 -7872px;}.addthis_32x32_style .at15t_slashdot{background-position:0 -7904px;}.addthis_32x32_style .at15t_smaknews{background-position:0 -7936px;}.addthis_32x32_style .at15t_smiru{background-position:0 -7968px;}.addthis_32x32_style .at15t_socialbookmarkingnet{background-position:0 -8000px;}.addthis_32x32_style .at15t_sodahead{background-position:0 -8032px;}.addthis_32x32_style .at15t_sonico{background-position:0 -8064px;}.addthis_32x32_style .at15t_speedtile{background-position:0 -8096px;}.addthis_32x32_style .at15t_sphinn{background-position:0 -8128px;}.addthis_32x32_style .at15t_spokentoyou{background-position:0 -8160px;}.addthis_32x32_style .at15t_sportpost{background-position:0 -8192px;}.addthis_32x32_style .at15t_springpad{background-position:0 -8224px;}.addthis_32x32_style .at15t_spruzer{background-position:0 -8256px;}.addthis_32x32_style .at15t_squidoo{background-position:0 -8288px;}.addthis_32x32_style .at15t_startaid{background-position:0 -8320px;}.addthis_32x32_style .at15t_startlap{background-position:0 -8352px;}.addthis_32x32_style .at15t_storyfollower{background-position:0 -8384px;}.addthis_32x32_style .at15t_strands{background-position:0 -8416px;}.addthis_32x32_style .at15t_studivz{background-position:0 -8448px;}.addthis_32x32_style .at15t_stuffpit{background-position:0 -8480px;}.addthis_32x32_style .at15t_stumbleupon{background-position:0 -8512px;}.addthis_32x32_style .at15t_stumpedia{background-position:0 -8544px;}.addthis_32x32_style .at15t_stylehive{background-position:0 -8576px;}.addthis_32x32_style .at15t_surfpeoplenet{background-position:0 -8608px;}.addthis_32x32_style .at15t_svejo{background-position:0 -8640px;}.addthis_32x32_style .at15t_symbaloo{background-position:0 -8672px;}.addthis_32x32_style .at15t_tagmarksde{background-position:0 -8704px;}.addthis_32x32_style .at15t_tagvn{background-position:0 -8736px;}.addthis_32x32_style .at15t_tagza{background-position:0 -8768px;}.addthis_32x32_style .at15t_tailrank{background-position:0 -8800px;}.addthis_32x32_style .at15t_technorati{background-position:0 -8832px;}.addthis_32x32_style .at15t_tellmypolitician{background-position:0 -8864px;}.addthis_32x32_style .at15t_thewebblend{background-position:0 -8896px;}.addthis_32x32_style .at15t_thinkfinity{background-position:0 -8928px;}.addthis_32x32_style .at15t_thisnext{background-position:0 -8960px;}.addthis_32x32_style .at15t_tipd{background-position:0 -8992px;}.addthis_32x32_style .at15t_transferr{background-position:0 -9024px;}.addthis_32x32_style .at15t_tulinq{background-position:0 -9056px;}.addthis_32x32_style .at15t_tumblr{background-position:0 -9088px;}.addthis_32x32_style .at15t_tusul{background-position:0 -9120px;}.addthis_32x32_style .at15t_tweetmeme{background-position:0 -9152px;}.addthis_32x32_style .at15t_twitter{background-position:0 -9184px;}.addthis_32x32_style .at15t_twitthis{background-position:0 -9216px;}.addthis_32x32_style .at15t_typepad{background-position:0 -9248px;}.addthis_32x32_style .at15t_viadeo{background-position:0 -9280px;}.addthis_32x32_style .at15t_virb{background-position:0 -9312px;}.addthis_32x32_style .at15t_visitezmonsite{background-position:0 -9344px;}.addthis_32x32_style .at15t_vk{background-position:0 -9376px;}.addthis_32x32_style .at15t_vyoom{background-position:0 -9408px;}.addthis_32x32_style .at15t_w3validator{background-position:0 -9440px;}.addthis_32x32_style .at15t_webnews{background-position:0 -9472px;}.addthis_32x32_style .at15t_webs{background-position:0 -9504px;}.addthis_32x32_style .at15t_windows{background-position:0 -9536px;}.addthis_32x32_style .at15t_windycitizen{background-position:0 -9568px;}.addthis_32x32_style .at15t_wirefan{background-position:0 -9600px;}.addthis_32x32_style .at15t_wordpress{background-position:0 -9632px;}.addthis_32x32_style .at15t_worio{background-position:0 -9664px;}.addthis_32x32_style .at15t_wovre{background-position:0 -9696px;}.addthis_32x32_style .at15t_wykop{background-position:0 -9728px;}.addthis_32x32_style .at15t_xanga{background-position:0 -9760px;}.addthis_32x32_style .at15t_yahoobkm{background-position:0 -9792px;}.addthis_32x32_style .at15t_yahoomail{background-position:0 -9824px;}.addthis_32x32_style .at15t_yammer{background-position:0 -9856px;}.addthis_32x32_style .at15t_yardbarker{background-position:0 -9888px;}.addthis_32x32_style .at15t_yazzem{background-position:0 -9920px;}.addthis_32x32_style .at15t_yigg{background-position:0 -9952px;}.addthis_32x32_style .at15t_yoolink{background-position:0 -9984px;}.addthis_32x32_style .at15t_yorumcuyum{background-position:0 -10016px;}.addthis_32x32_style .at15t_youbookmarks{background-position:0 -10048px;}.addthis_32x32_style .at15t_youmob{background-position:0 -10080px;}.addthis_32x32_style .at15t_zakladoknet{background-position:0 -10112px;}.addthis_32x32_style .at15t_zanatic{background-position:0 -10144px;}.addthis_32x32_style .at15t_zooloo{background-position:0 -10176px;}.addthis_32x32_style .at15t_netscape{background-position:0 -7424px;}.at15t_000{background-position:0 -0px;}.at15t_tweetmeme{background-position:0 -16px;}.at15t_posteezy{background-position:0 -32px;}.at15t_redkum{background-position:0 -48px;}.at15t_livefavoris{background-position:0 -64px;}.at15t_connotea{background-position:0 -80px;}.at15t_farkinda{background-position:0 -96px;}.at15t_hackernews{background-position:0 -112px;}.at15t_receeveit{background-position:0 -128px;}.at15t_mob{background-position:0 -144px;}.at15t_gluvsnap{background-position:0 -160px;}.at15t_tusul{background-position:0 -176px;}.at15t_identica{background-position:0 -192px;}.at15t_hedgehogs{background-position:0 -208px;}.at15t_designmoo{background-position:0 -224px;}.at15t_folkd{background-position:0 -240px;}.at15t_doower{background-position:0 -256px;}.at15t_bonzobox{background-position:0 -272px;}.at15t_buzz_fr{background-position:0 -288px;}.at15t_gamekicker{background-position:0 -304px;}.at15t_ezyspot{background-position:0 -320px;}.at15t_webs{background-position:0 -336px;}.at15t_mawindo{background-position:0 -352px;}.at15t_tellmypolitician{background-position:0 -368px;}.at15t_scoopat{background-position:0 -384px;}.at15t_favoritus{background-position:0 -400px;}.at15t_eucliquei{background-position:0 -416px;}.at15t_hazarkor{background-position:0 -432px;}.at15t_box{background-position:0 -448px;}.at15t_evernote{background-position:0 -464px;}.at15t_blogger{background-position:0 -480px;}.at15t_favorites{background-position:0 -496px;}.at15t_plurk{background-position:0 -512px;}.at15t_friendfeed{background-position:0 -528px;}.at15t_buzz{background-position:0 -544px;}.at15t_bebo{background-position:0 -560px;}.at15t_hyves{background-position:0 -576px;}.at15t_meinvz{background-position:0 -592px;}.at15t_linkedin{background-position:0 -608px;}.at15t_posterous{background-position:0 -624px;}.at15t_sonico{background-position:0 -640px;}.at15t_amazonwishlist{background-position:0 -656px;}.at15t_delicious{background-position:0 -672px;}.at15t_digg{background-position:0 -688px;}.at15t_facebook{background-position:0 -704px;}.at15t_meneame{background-position:0 -720px;}.at15t_myspace{background-position:0 -736px;}.at15t_google{background-position:0 -752px;}.at15t_googletranslate{background-position:0 -768px;}.at15t_igoogle{background-position:0 -784px;}.at15t_designbump{background-position:0 -800px;}.at15t_hotmail{background-position:0 -816px;}.at15t_live{background-position:0 -832px;}.at15t_viadeo{background-position:0 -848px;}.at15t_fark{background-position:0 -864px;}.at15t_misterwong{background-position:0 -880px;}.at15t_newsvine{background-position:0 -896px;}.at15t_oyyla{background-position:0 -912px;}.at15t_mixx{background-position:0 -928px;}.at15t_squidoo{background-position:0 -944px;}.at15t_googlebuzz{background-position:0 -960px;}.at15t_orkut{background-position:0 -976px;}.at15t_studivz{background-position:0 -992px;}.at15t_netvibes{background-position:0 -1008px;}.at15t_technorati{background-position:0 -1024px;}.at15t_friendster{background-position:0 -1040px;}.at15t_reddit{background-position:0 -1056px;}.at15t_twitter{background-position:0 -1072px;}.at15t_slashdot{background-position:0 -1088px;}.at15t_tumblr{background-position:0 -1104px;}.at15t_menu{background-position:0 -1120px;}.at15t_virb{background-position:0 -1136px;}.at15t_wordpress{background-position:0 -1152px;}.at15t_linkninja{background-position:0 -1168px;}.at15t_oknotizie{background-position:0 -1184px;}.at15t_stumbleupon{background-position:0 -1200px;}.at15t_googlereader{background-position:0 -1216px;}.at15t_gacetilla{background-position:0 -1232px;}.at15t_gmail{background-position:0 -1248px;}.at15t_print{background-position:0 -1264px;}.at15t_yahoobkm{background-position:0 -1280px;}.at15t_yahoomail{background-position:0 -1296px;}.at15t_diglog{background-position:0 -1312px;}.at15t_bookmerkende{background-position:0 -1328px;}.at15t_givealink{background-position:0 -1344px;}.at15t_wovre{background-position:0 -1360px;}.at15t_amenme{background-position:0 -1376px;}.at15t_tagvn{background-position:0 -1392px;}.at15t_surfpeoplenet{background-position:0 -1408px;}.at15t_aim{background-position:0 -1424px;}.at15t_elertgadget{background-position:0 -1440px;}.at15t_cndig{background-position:0 -1456px;}.at15t_email{background-position:0 -1472px;}.at15t_springpad{background-position:0 -1488px;}.at15t_isociety{background-position:0 -1504px;}.at15t_bloggy{background-position:0 -1520px;}.at15t_tagmarksde{background-position:0 -1536px;}.at15t_misterwong_de{background-position:0 -1552px;}.at15t_bryderi{background-position:0 -1568px;}.at15t_bookmarkycz{background-position:0 -1584px;}.at15t_w3validator{background-position:0 -1600px;}.at15t_instapaper{background-position:0 -1616px;}.at15t_pdfmyurl{background-position:0 -1632px;}.at15t_planypus{background-position:0 -1648px;}.at15t_diggtiger{background-position:0 -1664px;}.at15t_mekusharim{background-position:0 -1680px;}.at15t_kommenting{background-position:0 -1696px;}.at15t_lockerblogger{background-position:0 -1712px;}.at15t_kipup{background-position:0 -1728px;}.at15t_pusha{background-position:0 -1744px;}.at15t_yorumcuyum{background-position:0 -1760px;}.at15t_wykop{background-position:0 -1776px;}.at15t_startaid{background-position:0 -1792px;}.at15t_jamespot{background-position:0 -1808px;}.at15t_vk{background-position:0 -1824px;}.at15t_smaknews{background-position:0 -1840px;}.at15t_embarkons{background-position:0 -1856px;}.at15t_adifni{background-position:0 -1872px;}.at15t_blurpalicious{background-position:0 -1888px;}.at15t_blogtrottr{background-position:0 -1904px;}.at15t_domaintoolswhois{background-position:0 -1920px;}.at15t_elefantapl{background-position:0 -1936px;}.at15t_cosmiq{background-position:0 -1952px;}.at15t_bookmarkedbyus{background-position:0 -1968px;}.at15t_youmob{background-position:0 -1984px;}.at15t_dipdive{background-position:0 -2000px;}.at15t_pimpthisblog{background-position:0 -2016px;}.at15t_stumpedia{background-position:0 -2032px;}.at15t_visitezmonsite{background-position:0 -2048px;}.at15t_bizsugar{background-position:0 -2064px;}.at15t_polladium{background-position:0 -2080px;}.at15t_strands{background-position:0 -2096px;}.at15t_simpy{background-position:0 -2112px;}.at15t_allmyfaves{background-position:0 -2128px;}.at15t_yammer{background-position:0 -2144px;}.at15t_bobrdobr{background-position:0 -2160px;}.at15t_hotklix{background-position:0 -2176px;}.at15t_shaveh{background-position:0 -2192px;}.at15t_windows{background-position:0 -2208px;}.at15t_baang{background-position:0 -2224px;}.at15t_greaterdebater{background-position:0 -2240px;}.at15t_thewebblend{background-position:0 -2256px;}.at15t_dashboard{background-position:0 -2272px;}.at15t_tulinq{background-position:0 -2288px;}.at15t_spruzer{background-position:0 -2304px;}.at15t_yoolink{background-position:0 -2320px;}.at15t_clickazoo{background-position:0 -2336px;}.at15t_gamesnetworks{background-position:0 -2352px;}.at15t_fooxweb{background-position:0 -2368px;}.at15t_mssocialbookmarks{background-position:0 -2384px;}.at15t_fresqui{background-position:0 -2400px;}.at15t_mindbodygreen{background-position:0 -2416px;}.at15t_librerio{background-position:0 -2432px;}.at15t_yigg{background-position:0 -2448px;}.at15t_netvouz{background-position:0 -2464px;}.at15t_followtags{background-position:0 -2480px;}.at15t_boardlite{background-position:0 -2496px;}.at15t_citeulike{background-position:0 -2512px;}.at15t_webnews{background-position:0 -2528px;}.at15t_hatena{background-position:0 -2544px;}.at15t_memori{background-position:0 -2560px;}.at15t_segnalo{background-position:0 -2576px;}.at15t_n4g{background-position:0 -2592px;}.at15t_ekudos{background-position:0 -2608px;}.at15t_more{background-position:0 -2624px;}.at15t_kaboodle{background-position:0 -2640px;}.at15t_abruzzopedia{background-position:0 -2656px;}.at15t_kudos{background-position:0 -2672px;}.at15t_ihavegot{background-position:0 -2688px;}.at15t_linkuj{background-position:0 -2704px;}.at15t_100zakladok{background-position:0 -2720px;}.at15t_stuffpit{background-position:0 -2736px;}.at15t_dosti{background-position:0 -2752px;}.at15t_linkshares{background-position:0 -2768px;}.at15t_addio{background-position:0 -2784px;}.at15t_qzone{background-position:0 -2800px;}.at15t_dotnetshoutout{background-position:0 -2816px;}.at15t_zooloo{background-position:0 -2832px;}.at15t_smiru{background-position:0 -2848px;}.at15t_funp{background-position:0 -2864px;}.at15t_plaxo{background-position:0 -2880px;}.at15t_phonefavs{background-position:0 -2896px;}.at15t_mototagz{background-position:0 -2912px;}.at15t_globalgrind{background-position:0 -2928px;}.at15t_bitly{background-position:0 -2944px;}.at15t_cirip{background-position:0 -2960px;}.at15t_favable{background-position:0 -2976px;}.at15t_flosspro{background-position:0 -2992px;}.at15t_hotweblt{background-position:0 -3008px;}.at15t_myyearbook{background-position:0 -3024px;}.at15t_7live7{background-position:0 -3040px;}.at15t_transferr{background-position:0 -3056px;}.at15t_moemesto{background-position:0 -3072px;}.at15t_tipd{background-position:0 -3088px;}.at15t_camyoo{background-position:0 -3104px;}.at15t_thisnext{background-position:0 -3120px;}.at15t_mailto{background-position:0 -3136px;}.at15t_hadashhot{background-position:0 -3152px;}.at15t_ladenzeile{background-position:0 -3168px;}.at15t_xanga{background-position:0 -3184px;}.at15t_shetoldme{background-position:0 -3200px;}.at15t_investorlinks{background-position:0 -3216px;}.at15t_blip{background-position:0 -3232px;}.at15t_pingfm{background-position:0 -3248px;}.at15t_linkagogo{background-position:0 -3264px;}.at15t_douban{background-position:0 -3280px;}.at15t_extraplay{background-position:0 -3296px;}.at15t_sportpost{background-position:0 -3312px;}.at15t_domelhor{background-position:0 -3328px;}.at15t_backflip{background-position:0 -3344px;}.at15t_jisko{background-position:0 -3360px;}.at15t_rediff{background-position:0 -3376px;}.at15t_youbookmarks{background-position:0 -3392px;}.at15t_picciz{background-position:0 -3408px;}.at15t_blogmarks{background-position:0 -3424px;}.at15t_oneview{background-position:0 -3440px;}.at15t_sphinn{background-position:0 -3456px;}.at15t_bleetbox{background-position:0 -3472px;}.at15t_aolmail{background-position:0 -3488px;}.at15t_dwellicious{background-position:0 -3504px;}.at15t_netlog{background-position:0 -3520px;}.at15t_vyoom{background-position:0 -3536px;}.at15t_socialbookmarkingnet{background-position:0 -3552px;}.at15t_lynki{background-position:0 -3568px;}.at15t_nujij{background-position:0 -3584px;}.at15t_yazzem{background-position:0 -3600px;}.at15t_iwiw{background-position:0 -3616px;}.at15t_storyfollower{background-position:0 -3632px;}.at15t_dropjack{background-position:0 -3648px;}.at15t_arto{background-position:0 -3664px;}.at15t_buddymarks{background-position:0 -3680px;}.at15t_yardbarker{background-position:0 -3696px;}.at15t_baidu{background-position:0 -3712px;}.at15t_windycitizen{background-position:0 -3728px;}.at15t_mashbord{background-position:0 -3744px;}.at15t_pratiba{background-position:0 -3760px;}.at15t_popedition{background-position:0 -3776px;}.at15t_dotnetkicks{background-position:0 -3792px;}.at15t_worio{background-position:0 -3808px;}.at15t_kledy{background-position:0 -3824px;}.at15t_symbaloo{background-position:0 -3840px;}.at15t_faves{background-position:0 -3856px;}.at15t_bentio{background-position:0 -3872px;}.at15t_hemidemi{background-position:0 -3888px;}.at15t_informazione{background-position:0 -3904px;}.at15t_meccho{background-position:0 -3920px;}.at15t_myaol{background-position:0 -3936px;}.at15t_drimio{background-position:0 -3952px;}.at15t_diigo{background-position:0 -3968px;}.at15t_favlogde{background-position:0 -3984px;}.at15t_dzone{background-position:0 -4000px;}.at15t_typepad{background-position:0 -4016px;}.at15t_startlap{background-position:0 -4032px;}.at15t_gravee{background-position:0 -4048px;}.at15t_kaevur{background-position:0 -4064px;}.at15t_sekoman{background-position:0 -4080px;}.at15t_misterwong_ru{background-position:0 -4096px;}.at15t_edelight{background-position:0 -4112px;}.at15t_digo{background-position:0 -4128px;}.at15t_classicalplace{background-position:0 -4144px;}.at15t_jumptags{background-position:0 -4160px;}.at15t_aerosocial{background-position:0 -4176px;}.at15t_svejo{background-position:0 -4192px;}.at15t_printfriendly{background-position:0 -4208px;}.at15t_hi5{background-position:0 -4224px;}.at15t_thinkfinity{background-position:0 -4240px;}.at15t_fwisp{background-position:0 -4256px;}.at15t_mynasa{background-position:0 -4272px;}.at15t_laaikit{background-position:0 -4288px;}.at15t_fnews{background-position:0 -4304px;}.at15t_a1webmarks{background-position:0 -4320px;}.at15t_grumper{background-position:0 -4336px;}.at15t_aviary{background-position:0 -4352px;}.at15t_care2{background-position:0 -4368px;}.at15t_tailrank{background-position:0 -4384px;}.at15t_koornk{background-position:0 -4400px;}.at15t_pdfonline{background-position:0 -4416px;}.at15t_kirtsy{background-position:0 -4432px;}.at15t_newstrust{background-position:0 -4448px;}.at15t_flaker{background-position:0 -4464px;}.at15t_gabbr{background-position:0 -4480px;}.at15t_ask{background-position:0 -4496px;}.at15t_diggita{background-position:0 -4512px;}.at15t_readitlater{background-position:0 -4528px;}.at15t_sodahead{background-position:0 -4544px;}.at15t_linkstore{background-position:0 -4560px;}.at15t_wirefan{background-position:0 -4576px;}.at15t_brainify{background-position:0 -4592px;}.at15t_livejournal{background-position:0 -4608px;}.at15t_ballhype{background-position:0 -4624px;}.at15t_habergentr{background-position:0 -4640px;}.at15t_multiply{background-position:0 -4656px;}.at15t_hellotxt{background-position:0 -4672px;}.at15t_zakladoknet{background-position:0 -4688px;}.at15t_grono{background-position:0 -4704px;}.at15t_propeller{background-position:0 -4720px;}.at15t_speedtile{background-position:0 -4736px;}.at15t_twitthis{background-position:0 -4752px;}.at15t_mylinkvault{background-position:0 -4768px;}.at15t_forceindya{background-position:0 -4784px;}.at15t_colivia{background-position:0 -4800px;}.at15t_bordom{background-position:0 -4816px;}.at15t_chiq{background-position:0 -4832px;}.at15t_spokentoyou{background-position:0 -4848px;}.at15t_2tag{background-position:0 -4864px;}.at15t_tagza{background-position:0 -4880px;}.at15t_hipstr{background-position:0 -4896px;}.at15t_stylehive{background-position:0 -4912px;}.at15t_hitmarks{background-position:0 -4928px;}.at15t_2linkme{background-position:0 -4944px;}.at15t_idearef{background-position:0 -4960px;}.at15t_blinklist{background-position:0 -4976px;}.at15t_buzzzy{background-position:0 -4992px;}.at15t_biggerpockets{background-position:0 -5008px;}.at15t_favicon{background-position:0 -5024px;}.at15t_quantcast{background-position:0 -5040px;}.at15t_hotbookmark{background-position:0 -5056px;}.at15t_osmosus{background-position:0 -5072px;}.at15t_zanatic{background-position:0 -5088px;}.at15t_fabulously40{background-position:0 -5104px;}.at15t_netscape{background-position:0 -4720px;}#at16clb{font-size:16pt;font-family:"verdana bold",verdana,arial,sans-serif;}#at_share .at_item{width:123px!important;padding:4px;margin-right:2px;border:1px solid #fff;}#at16pm{background:#fff;width:298px;height:380px;text-align:left;border-right:1px solid #ccc;position:static;}#at16pcc{position:fixed;top:0;left:0;width:100%;margin:0 auto;font-size:10px!important;color:#4c4c4c;padding:0;z-index:10000001;overflow:visible;}* html #at16pcc{position:absolute;}#at16abifc{overflow:hidden;margin:0;top:10px;left:10px;height:355px;width:492px;position:absolute;border:0;}#at16abifc iframe{border:0;position:absolute;height:380px;width:516px;top:-10px;left:-10px;}* html div#at16abifc.atiemode2{height:374px;width:482px;}* html #at16abifc iframe{height:368px;left:-10px;top:-10px;overflow:hidden;}#at16p{background:url(//s7.addthis.com/static/t00/atbkg.png);z-index:10000001;}#at16p,#atie6ifh,#atie6cmifh{position:absolute;top:50%;left:50%;width:300px;padding:10px;margin:0 auto;margin-top:-185px;margin-left:-155px;font-family:arial,helvetica,tahoma,verdana,sans-serif;font-size:12px;color:#5e5e5e;}#atie6ifh{width:322px;padding:0;height:381px;margin-left:-165px;z-index:100001;}#atie6cmifh{width:240px;padding:0;height:225px;margin:0;z-index:100001;}#at_share{margin:0;padding:0;}#at16ps{overflow-y:scroll;height:304px;padding:5px;}a#at16pit{position:absolute;top:37px;right:10px;display:block;background:url(//s7.addthis.com/static/t00/tab00.gif) no-repeat;width:16px;height:20px;line-height:19px;margin-right:-17px;text-align:center;overflow:hidden;color:#36b;}#at16pi{background:#e5e5e5;text-align:left;border:1px solid #ccc;border-bottom:0;}#at16pi a{text-decoration:none;color:#36b;}#at16p #at16abc{margin-left:2px!important;}#at16pi a:hover{text-decoration:underline;}#at16pt{position:relative;background:#f2f2f2;height:13px;padding:5px 10px;}#at16pt h4,#at16pt a{font-weight:bold;}#at16pt h4{display:inline;margin:0;padding:0;font-size:12px;color:#4c4c4c;cursor:default;}#at16pt a{position:absolute;top:5px;right:10px;color:#4c4c4c;text-decoration:none;}#at16pc form{margin:0;}#at16pc form label{display:block;font-size:11px;font-weight:bold;padding-bottom:4px;float:none;text-align:left;}#at16pc form label span{font-weight:normal;color:#4c4c4c;display:inline;}#at_email form .abif{width:272px!important;}#at_email textarea{height:55px!important;word-wrap:break-word;}* html #at_email textarea{height:42px!important;}*:first-child+html #at_email textarea{height:42px!important;}#at_email form label{width:220px;}#at_email form input,#at_email form textarea{background:#fff;border:1px solid #bbb;width:272px!important;margin:0;margin-bottom:8px;font-weight:normal;padding:3px;font-family:arial,helvetica,tahoma,verdana,sans-serif;font-size:11px;line-height:1.4em;color:#333;}#at_email form .atfxmode2{width:279px!important;}#at16pc form .at_ent{color:#333!important;}#at16pc form textarea{height:48px;}#at16pc form input:focus,#at16pc form textarea:focus{background:#fffff0;color:#333;}#at16p .atbtn{background:#fff;border:1px solid #b5b5b5;width:60px!important;padding:2px 4px;margin:0;margin-right:2px!important;font-size:11px!important;font-weight:bold;color:#333;cursor:pointer;}#at16p .atbtn:hover{border-color:#444;color:#06c;}#at16p .atrse{font-weight:normal!important;color:#666;margin-left:2px!important;}#atsb .atbtn{width:78px!important;margin:0!important;}#at_email #ateml{text-align:right;font-size:10px;color:#999;}#at16pc{height:343px;font-size:11px;text-align:left;color:#4c4c4c;}#at_email{padding:5px 10px;}#at16pc .tmsg{padding:4px 2px;text-align:right;}#at16psf{position:relative;background:#f2f2f2 url(//s7.addthis.com/static/t00/atf02.gif) no-repeat center center;border-bottom:1px solid #ccc;height:20px;padding:4px 10px;text-align:center;}* html #at16psf input,*:first-child+html #at16psf input{padding:0;}#at16psf input{background:#fff;border:none;width:220px;margin:2px 0 0;color:#666;outline-style:none;outline-width:0;padding:2px 0 0;line-height:12px;font-family:arial,helvetica,tahoma,verdana,sans-serif;font-size:12px;}#at16pcc .at_error{background:#f26d7d;border-bottom:1px solid #df5666;padding:5px 10px;color:#fff;}#at16pcc #at_success{background:#d0fbda;border-bottom:1px solid #a8e7b7;padding:5px 10px;color:#4c4c4c;}#at16pf{position:relative;background:#f2f2f2;height:12px;border-top:1px solid #e5e5e5;}#at16pf a{position:absolute;outline:none;padding:0;margin:0;overflow:hidden;font-size:10px;color:#4c4c4c;font-family:Arial,Helvetica,Sans-Serif;text-decoration:none;}#at16pf a:hover{text-decoration:underline;}#at16pf a.at-whatsthis{width:150px;left:10px;}#at16pf a#at-privacy{width:39px;left:140px;}#at_complete{font-size:13pt;color:#47731d;text-align:center;padding-top:130px;height:208px!important;width:472px;}#at_s_msg{margin-bottom:10px;}#at16pf a#at-logo{background:url(//s7.addthis.com/static/t00/logo88.gif) no-repeat left;padding-left:10px;right:10px;}.at_baa{display:block;overflow:hidden;outline:none;}#at15s #at16pf a{top:1px;}#at16pc form #at_send{width:80px!important;}#at_feed{display:none;padding:10px;height:300px;}#at_feed span{margin-bottom:10px;font-size:12px;}#at_feed div{width:102px!important;height:26px!important;line-height:26px!important;float:left!important;margin-right:68px;}#at_feed div.at_litem{margin-right:0;}#at_feed a{margin:10px 0;height:17px;line-height:17px;}#at_feed.atused .fbtn{background:url(//s7.addthis.com/static/r05/feed00.gif) no-repeat;float:left;width:102px;cursor:pointer;text-indent:-9000px;}#at_feed .fbtn.bloglines{background-position:0 0!important;width:94px;height:20px!important;line-height:20px!important;margin-top:8px!important;}#at_feed .fbtn.yahoo{background-position:0 -20px!important;}#at_feed .fbtn.newsgator,.fbtn.newsgator-on{background-position:0 -37px!important;}#at_feed .fbtn.technorati{background-position:0 -71px!important;}#at_feed .fbtn.netvibes{background-position:0 -88px!important;}#at_feed .fbtn.pageflakes{background-position:0 -141px!important;}#at_feed .fbtn.feedreader{background-position:0 -172px!important;}#at_feed .fbtn.newsisfree{background-position:0 -207px!important;}#at_feed .fbtn.google{background-position:0 -54px!important;width:104px;}#at_feed .fbtn.winlive{background-position:0 -105px!important;width:100px;height:19px!important;line-height:19px;margin-top:9px!important;}#at_feed .fbtn.mymsn{background-position:0 -158px!important;width:71px;height:14px!important;line-height:14px!important;margin-top:12px!important;}#at_feed .fbtn.aol{background-position:0 -189px!important;width:92px;height:18px!important;line-height:18px!important;}#at16pp{color:#4c4c4c;position:absolute;top:12px;right:12px;font-size:11px;}#at16pp label{font-size:11px!important;}#at16ppc{padding:10px;width:179px;}#at16pph{padding:5px 0 10px 0;}#at16pph select{margin:5px 0 8px 0;}#at16pp .atinp{width:156px;}html>/**/body #at16pp .atinp{width:176px;}#at16ppb{background:#fff;border:1px solid #ccc;height:274px;}#at16ep{height:16px;padding:8px;}#at16ep a{display:block;height:16px;line-height:16px;padding-left:22px;margin-bottom:8px;font-size:12px;}#at16ep a.at_gmail{background:url(//s7.addthis.com/static/t00/gmail.gif) no-repeat left;}#at16ep a.at_hotmail{background:url(//s7.addthis.com/static/t00/hotmail.gif) no-repeat left;}#at16ep a.at_yahoo{background:url(//s7.addthis.com/static/t00/yahoo.gif) no-repeat left;}#at16ppf p#atsb{padding-top:20px;font-size:10px;}#at16abr{margin-top:10px;}#at16abr input{padding:0;margin:0;margin-right:5px;}#at16ppso{display:none;text-align:right;margin-top:2px;}#at16ppa{background:#fff;border:1px solid #ccc;height:228px;width:178px;overflow:auto;}#at16ppa a{display:block;white-space:nowrap;padding:4px 8px;font-size:12px!important;}#at16eatdr{position:absolute;background:#fff;border-top:0;max-height:110px;overflow:auto;z-index:500;top:129px;left:21px;width:277px;}* html #at_email #at16eatdr{top:115px!important;width:272px!important;}*:first-child+html #at_email #at16eatdr{top:115px!important;width:272px!important;}html>/**/body #at_email form #at16eatdr.abif{top:137px;width:278px!important;}#at16eatdr a{display:block;overflow:hidden;border-bottom:1px dotted #eee;padding:4px 8px;}#at16eatdr a:hover,#at16eatdr a.hover{background:#e0eefa;text-decoration:none;color:#333;}#at_pspromo{height:130px;padding-top:10px;}#at_pspromo,#at15psp{width:205px;padding-left:5px;}#at_testpromo{font-size:12px;width:220px;display:none;}#at_testpromo input{width:200px;}#at_promo .at-promo-content,#at_testpromo .at-promo-content{margin-top:12px;}#at_promo .at-promo-btn,#at_testpromo .at-promo-btn{padding-top:10px;}#at_promo h4,#at_testpromo h4{font-family:arial,helvetica,tahoma,verdana,sans-serif;background:0;font-size:14px;font-weight:bold;margin:0 0 4px;padding:0;}#at_testpromo h4{font-size:13.5px;}#at_promo h4 sup{font-size:11px;color:#ee6a44;}#at_promo span{display:block;}#at_testpromo .at-promo-btm-ffx,#at_promo .at-promo-btm-ffx{background:url(//s7.addthis.com/images/60x60_at_firefox_toolbar.jpg) no-repeat 0 0;padding:6px 0 0 70px;}#at_promo .at-promo-btm-ie{padding:6px 0 0 64px;}#at_testpromo .at-promo-btm-ie{background:url(//s7.addthis.com/images/48x48_ie_logo.jpg) no-repeat 0 0;padding:10px 0 0 60px;margin:0 5px;height:45px;}#_atssh{width:1px!important;height:1px!important;border:0!important;}.at-promo-ffx,.at-promo-ie{padding:10px 0 0 60px;margin:0 5px;height:45px;}.at-promo-ffx{background:url(//s7.addthis.com/images/48x48_ff_logo.gif) no-repeat 0 0;}.at-promo-ie{background:url(//s7.addthis.com/images/48x48_ie_logo.jpg) no-repeat 0 0;}.at-promo-button{text-align:center;padding-top:10px;}.at-promo-button input{cursor:pointer;}.at-promo-single{padding:10px;padding-top:5px;line-height:1.5em;}@media print{#at20mc{display:none;}}
--- a/test/emission_fichiers/xtcore.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-//-- Copyright 2009 AT Internet, All Rights Reserved.
-//-- AT Internet Tag 3.4.005
-var xt1='.tv-radio.com',xtcode='',xt46='1',xt48='',xtdocl=false,xtud='undefined',xt2='0',xt3=3650,xtkwv='xtmc',xtkwp='xtnp',xtadch=new Array,xt4=new Array;xt4['sec']='20';xt4['rss']='20';xt4['epr']='20';xt4['erec']='20';xt4['adi']='20';xt4['adc']='20';xt4['al']='20';xt4['es']='20';xt4['ad']='20';
-//do not modify below
-var xtkey=false,xt49=null,xt5=30,xw=window,xd=document,xtg=navigator,xtv=(xw.xtczv!=null)?'34005-'+xw.xtczv:'34005',xt1=xw.xtdmc?';domain='+xw.xtdmc:(xt1!='')?';domain='+xw.xt1:'',xt6=(xw.xtnv!=null)?xw.xtnv:xd,xt7=(xw.xtsd!=null)?xw.xtsd:'http://log',xt8=(xw.xtsite!=null)?xw.xtsite:0,xt9=(xw.xtn2!=null)?'&s2='+xw.xtn2:'',xtp=(xw.xtpage!=null)?xw.xtpage:'',xt10=xw.xto_force?xw.xto_force.toLowerCase():null,xt11=(xt8=='redirect')?true:false,xtdi=xw.xtdi?'&di='+xw.xtdi:'',xt12=xw.xtidp?'&idpays='+xw.xtidp:'',xt13=xw.xtidprov?'&idprov='+xw.xtidprov:'',xtm=(xw.xtparam!=null)?xw.xtparam:'',xtclzone=(xw.scriptOnClickZone!=null)?xw.scriptOnClickZone:0,xt15=(xw.xt_orderid!=null)?xw.xt_orderid:'',xt17=(xw.xtidcart!=null)?xw.xtidcart:'',xt44=(xw.xtprod_load!=null)?'&pdtl='+xw.xtprod_load:'',xt47=(xw.xtcode!='')?'&code='+xw.xtcode:'';
-if(xw.addEventListener){xw.addEventListener('unload',function(){},false);}else if(xw.attachEvent){xw.attachEvent('onunload',function(){});}
-if(xd.addEventListener){xd.addEventListener('keydown',function(){xtkey=true},false);xd.addEventListener('keyup',function(){xtkey=false},false);}else if(xd.attachEvent){xd.attachEvent('onkeydown',function(){xtkey=true});xd.attachEvent('onkeyup',function(){xtkey=false});}
-var xt18=(xw.roimt&&(xtm.indexOf('&roimt',0)<0))?'&roimt='+xw.roimt:'',xtmc=(xw.xtmc&&(xtm.indexOf('&mc',0)<0))?'&mc='+xw.xtmc:xtf3(xtkwv)?'&mc='+xtf3(xtkwv):xtf3('xtmc')?'&mc='+xtf3('xtmc'):'',xtcr=xtf3('xtcr')?'&mcrg='+xtf3('xtcr'):'',xtac=(xw.xtac&&(xtm.indexOf('&ac',0)<0))?'&ac='+xw.xtac:'',xtan=(xw.xtan&&(xtm.indexOf('&an',0)<0))?'&an='+xw.xtan:'',xtnp=(xw.xtnp&&(xtm.indexOf('&np',0)<0))?'&np='+xw.xtnp:xtf3(xtkwp)?'&np='+xtf3(xtkwp):'',xt19=((xw.xtprm!=null)&&(xtm.indexOf('&x',0)<0))?xw.xtprm:'';
-xtm+=xt18+xtmc+xtcr+xtac+xtan+xtnp+xt19;try{var xt20=top.document.referrer;}catch(e){var xt20=xt6.referrer;};var xts=screen,xt21=new Date(),xt22=xt21.getTime()/(1000*3600);
-function xtclURL(ch){return ch.replace(/%3C/g,'<').replace(/%3E/g,'>').replace(/[<>]/g,'');}
-function xtf1(nom,xtenc){xtenc=((xtenc!=null)&&(xtenc!=xtud))?xtenc:'0';var arg=nom+'=',i=0;while(i<xd.cookie.length){var j=i+arg.length;if(xd.cookie.substring(i,j)==arg){return xtf2(j,xtenc);}i=xd.cookie.indexOf(' ',i)+1;if(i==0){break;}}return null;}
-function xtf2(index,xtenc){var fin=xd.cookie.indexOf(';',index);if(fin==-1){fin=xd.cookie.length;};if(xtenc!='1'){return unescape(xtclURL(xd.cookie.substring(index,fin)));}else{return xtclURL(xd.cookie.substring(index,fin));}};try{xt_adch();}catch(e){''};
-function xt_addchain(val,varch){xtvarch=varch?varch:'abmv';itemp=(!xtadch[xtvarch])?0:xtadch[xtvarch];itemp++;xtm+='&'+xtvarch+''+itemp+'='+val;xtadch[xtvarch]=itemp;}
-function wck(p1,p2,p3,p4,fmt){p2=(fmt==0)?p2:escape(p2);xd.cookie=p1+'='+p2+';expires='+p3.toGMTString()+';path=/'+p4;}
-function xtf3(param,chba){try{xtdeb=xt6.location.href;}catch(e){xtdeb=xw.location.href;}if((chba==null)||(chba==xtud)){var xturl=xtclURL(xtdeb.toLowerCase().replace(/%3d/g,'='));}else{var xturl=chba;};var xtpos=xturl.indexOf(param+'=');if(xtpos>0){var chq=xturl.substring(1,xturl.length),mq=chq.substring(chq.indexOf(param+'='),chq.length),pos3=mq.indexOf('&');if(pos3==-1)pos3=mq.indexOf('%26');if(pos3==-1)pos3=mq.length;return mq.substring(mq.indexOf('=')+1, pos3);}else{return null;}}
-function xt_med(type,section,page,x1,x2,x3,x4,x5){xt_ajout=((type=='F')&&((x1==null)||(x1==xtud)))?'':(type=='M')?'&a='+x1+'&m1='+x2+'&m2='+x3+'&m3='+x4+'&m4='+x5:'&clic='+x1;xtf4(type,'&s2='+section+'&p='+page+xt_ajout,x2,x3);}
-function xt_ad(x1,x2,x3){xtf4('AT','&atc='+x1+'&type=AT&patc='+xtp+'&s2atc='+xw.xtn2,x2,x3);}
-function xt_adc(obj,x1,x2,x3){xtf4('AT','&atc='+x1+'&type=AT&patc='+xtp+'&s2atc='+xw.xtn2);var tgt=null,href=null;if(x2){href=x2;if(x3){tgt='_blank';}else{tgt='_self';}}else{if(obj.nodeName!='A'){var xelp=obj.parentNode;while(xelp){if(xelp.nodeName=='A'){href=xelp.href;tgt=xelp.target||'_self';break;}xelp=xelp.parentNode;}}else{href=obj.href;tgt=obj.target||'_self';}}if(!xtkey&&(tgt!=null)){setTimeout("(xw.open('"+href+"','"+tgt+"')).focus();", 500);return false;}xtkey=false;return true;}
-function xt_click(obj,type,n2,page,x1,x2,x3){xt_ajout=((type=='F')&&((x1==null)||(x1==xtud)))?'':'&clic='+x1;xtf4(type,'&s2='+n2+'&p='+page+xt_ajout);var tgt=null,href=null;if(x2){href=x2;if(x3){tgt='_blank';}else{tgt='_self';}}else{if(obj.nodeName!='A'){var xelp=obj.parentNode;while(xelp){if(xelp.nodeName=='A'){href=xelp.href;tgt=xelp.target||'_self';break;}xelp=xelp.parentNode;}}else{href=obj.href;tgt=obj.target||'_self';}}if(!xtkey&&(tgt!=null)){setTimeout("(xw.open('"+href+"','"+tgt+"')).focus();", 500);return false;}xtkey=false;return true;}
-function xt_form(obj,type,n2,page,x1,x2){xt_ajout=((type=='F')&&((x1==null)||(x1==xtud)))?'':'&clic='+x1;xtf4(type,'&s2='+n2+'&p='+page+xt_ajout);if(x2){setTimeout(function(){obj.submit();},500);}return false;}
-function xt_rm(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14){var rmprm='&p='+x3+'&s2='+x2+'&type='+x1+'&a='+x4+'&m5='+x11+'&m6='+x12;rmprm+=((x5!=null)&&(x5!='0'))?'&'+x5:'';rmprm+=((x7!=null)&&(x4!='pause')&&(x4!='stop'))?'&m1='+x7+'&'+x8+'&m3='+x9+'&m4='+x10+'&m7='+x13+'&m8='+x14+'&prich='+xtp+'&s2rich='+xw.xtn2:'';rmprm+=((x6!=null)&&(x6!='0')&&(x7!=null))?'&rfsh='+x6:'';xtf4(x1,rmprm);if((x6!=null)&&(x6!='0')&&((x4=='play')||(x4=='play&buf=1')||(x4=='refresh'))){xtrmdl=(Math.floor(x6)>1500)?1500000:(Math.floor(x6)<5)?5000:Math.floor(x6)*1000;xtoid=xw.setTimeout("xt_rm('"+x1+"','"+x2+"','"+x3+"','refresh','0','"+x6+"',null,'"+x8+"','"+x9+"','"+x10+"','"+x11+"','"+x12+"')",xtrmdl);}else{if(((x4=='pause')||(x4=='stop'))&&(xw.xtoid!=null)){xw.clearTimeout(xtoid)}}}
-function xtf4(x1,x2,x3,x4){if(((xtclzone==0)||(xtclzone==3)||(x1!='C'))&&(x1!='P')){var xt_img=new Image();var xt22=new Date();xt_im=xt7+'.xiti.com/hit.xiti?s='+xt8+x2+'&hl='+xt22.getHours()+'x'+xt22.getMinutes()+'x'+xt22.getSeconds();if(parseFloat(xtg.appVersion)>=4){xt_im+='&r='+xts.width+'x'+xts.height+'x'+xts.pixelDepth+'x'+xts.colorDepth;}xt_img.src=xt_im;xt_img.onload=function(){xt_img.onload=null;};}if((x3!=null)&&(x3!=xtud)&&(x1!='M')){if((x4=='')||(x4==null)){xd.location=x3}else{xfen=window.open(x3,'xfen','');xfen.focus();}}else{return;}}
-function f_nb(a){a=a-Math.floor(a/100)*100;if(a<10){return '0'+a;}else{return a;}}
-var xtidpg=f_nb(xt21.getHours())+''+f_nb(xt21.getMinutes())+''+f_nb(xt21.getSeconds())+''+xt_rd(7),xt23=0,xt16='',xt43=0;
-function xt_addProduct(rg,pdt,qtt,unp,dsc,dscc){xt23++;xt16+='&pdt'+xt23+'=';xt16+=rg?rg+'::':'';xt16+=pdt?pdt:'';xt16+=qtt?'&qte'+xt23+'='+qtt:'';xt16+=unp?'&mt'+xt23+'='+unp:'';xt16+=dsc?'&dsc'+xt23+'='+dsc:'';xt16+=dscc?'&pcode'+xt23+'='+dscc:'';}
-function xt_rd(nb){return Math.floor(Math.random()*Math.pow(10,nb));}
-function xt_addProduct_v2(rg,pdt,qtt,unp,unpht,dsc,dscht,dscc,roimtp){xt23++;xt16+='&pdt'+xt23+'=';xt16+=rg?rg+'::':'';xt16+=pdt?pdt:'';xt16+=qtt?'&qte'+xt23+'='+qtt:'';xt16+=unp?'&mt'+xt23+'='+unp:'';xt16+=unpht?'&mtht'+xt23+'='+unpht:'';xt16+=dsc?'&dsc'+xt23+'='+dsc:'';xt16+=dscht?'&dscht'+xt23+'='+dscht:'';xt16+=roimtp?'&roimt'+xt23+'='+roimtp:'';xt16+=dscc?'&pcode'+xt23+'='+dscc:'';}
-function xt_addProduct_load(rg,pdt,xv){if(pdt){xt43++;xt44+=(xt43==1)?'&pdtl=':'|';xt44+=rg?rg+'::':'';xt44+=pdt;xt44+=xv?';'+xv:'';}}
-try{xt_cart();}catch(e){xt16='';}
-function xt_ParseUrl(hit,xtch,xtrefP,thit){var tabUrl=new Array;if(xtch.length>0){var xtlg=1600-xtrefP.length,i=0,j=0,xtch_prec='',xterr=0;while((xtch.length>xtlg)&&(xtch_prec!=xtch)&&(xterr==0)){xtch_prec=xtch;var xsep='&pdt';if(xtch.lastIndexOf(xsep,xtlg)<=0){if(xtch.lastIndexOf('&',xtlg)<=0){xterr=1}else{xsep='&';}}if(xterr==1){tabUrl[i]=xtch.substring(0,1600)+'&mherr=1';}else{tabUrl[i]=xtch.substring(0,xtch.lastIndexOf(xsep,xtlg));xtch=xtch.substring(xtch.lastIndexOf(xsep,xtlg),xtch.length);i++;xtlg=1600;}}if(xterr==0){tabUrl[i]=xtch;}for(j=0;j<=i;j++){if(i>0){tabUrl[j]+=((xt15!='')||(xt17!=''))?'&idhit='+(j+1)+'-'+(i+1)+'-'+xt8+'-'+xt15+'-'+xt17:'&mh='+(j+1)+'-'+(i+1)+'-'+xtidpg;}if(j>0){tabUrl[j]=((xt15!='')||(xt17!=''))?'s='+xt8+'&cmd='+xt15+'&idcart='+xt17+tabUrl[j]:'s='+xt8+tabUrl[j];}else{tabUrl[j]+=xtrefP;}if((thit=='')||(thit==null)){xd.write('<img width="1" height="1" src="'+hit+tabUrl[j]+'">');}else{var xt_img=new Image();xt_img.src=hit+tabUrl[j];xt_img.onload=function(){xt_img.onload=null;};}}}}
-function xt_ParseUrl2(hit,xtcst,xtch,thit){var tabUrl=new Array;if(xtch.length>0){var xtlg=1600,i=0,j=0,xtch_prec='';while(xtch.length>xtlg && xtch_prec!=xtch){xtch_prec=xtch;var xsep='&p';tabUrl[i]=xtch.substring(0,xtch.lastIndexOf(xsep,xtlg));xtch=xtch.substring(xtch.lastIndexOf(xsep,xtlg),xtch.length);i++;}tabUrl[i]=xtch;for(j=0;j<=i;j++){if((thit=='')||(thit==null)){xd.write('<img width="1" height="1" src="'+hit+xtcst+tabUrl[j]+'">');}else{var xt_img=new Image();xt_img.src=hit+xtcst+tabUrl[j];xt_img.onload=function(){xt_img.onload=null;};}}}}
-function xtestr(str,expr,pos){var xtid=null;try{xtid=str.match(expr)[pos-1];}catch(e){xtid=null}return xtid;}
-if((xt8!=0)||(xt11)){if(xt48!=''){var xtvid=xtf1('xtvid');if(!xtvid){xtvid=xt21.getTime()+''+xt_rd(6);xt49=xtvid;}var xtexp=new Date();xtexp.setMinutes(xtexp.getMinutes()+30);wck('xtvid',xtvid,xtexp,'',1);}var xtpm='xtor'+ xt8,xtpmd='xtdate'+ xt8,xtpmc='xtocl'+ xt8,xtpan='xtan'+ xt8,xtpant='xtant'+ xt8,xt24=xtf3('xtor'),xtdtgo=xtf3('xtdt'),xt25=xtf3('xtref'),xt26=xtf3('xtan'),xt27=xtf3('an',xtm),xt28=xtf3('ac',xtm),xtocl=(xtf1(xtpmc)!=null)?xtf1(xtpmc):'$',xtord=(xtf1('xtgo')=='0')?xtf1('xtord'):null,xtgord=(xtf1('xtgo')!=null)?xtf1('xtgo'):'0',xtvrn=(xtf1('xtvrn')!=null)?xtf1('xtvrn'):'$',xtgmt=xt21.getTime()/60000,xtgo=(xtdtgo!=null)?(((xtgmt-xtdtgo)<30)&&(xtgmt-xtdtgo)>=0)?'2':'1':xtgord,xtpgt=(xtgord=='1')?'&pgt='+xtf1('xtord'):((xtgo=='1')&&(xt24!=null))?'&pgt='+xt24:'',xto=(xt10!=null)?xt10:((xt24!=null)&&(xtgo=='0'))?xt24:(!xt11)?xtord:null;
-xto=((xtocl.indexOf('$'+xto+'$')<0)||(xtocl=='$'))?xto:null;var xtock=(xtgo=='0')?xto:(xtgord=='2')?xtf1('xtord'):(xtgo=='2')?xt24:null;
-if(xtock!=null){tmpxto=xtock.substring(0,xtock.indexOf('-'));var xtdrm=xt4[tmpxto];}else{xtdrm='1';}if((xtdrm==null)||(xtdrm==xtud)){xtdrm=xt4['ad'];}if((xt26==null)&&(!xt11)){xt26=xtf1('xtanrd');}var xtanc=xtf1(xtpan),xtanct=xtf1(xtpant),xtxp=new Date(),xt29=new Date(),xt30=new Date();
-if(!xt11){xtxp.setTime(xtxp.getTime()+(xtdrm*24*3600*1000));}else{xtxp.setTime(xtxp.getTime()+(xt5*1000));}xt30.setTime(xt30.getTime()+1800000);xt29.setTime(xt29.getTime()+(xt3*24*3600*1000));var xt31=(xt26!=null)?xt26.indexOf('-'):0,xtan2=(xt27!=null)?'':((xt26!=null)&&(xt31>0))?'&ac='+xt26.substring(0,xt31)+'&ant=0&an='+xt26.substring(xt31+1,xt26.length):(xtanc!=null)?'&anc='+xtanc+'&anct='+xtanct:'',xt32=(xtvrn.indexOf('$'+xt8+'$')<0)?'&vrn=1':'',xt35=((xtf3('xtatc')!=null)&&(xtf3('atc',xtm)==null))?'&atc='+xtf3('xtatc'):'';
-if(xt32!=''){wck('xtvrn',xtvrn+xt8+'$',xt29,xt1,0);}xt32+=(xto==null)?'':'&xto='+xto;xt32+=xtan2+xtpgt+xt35;if(xt27!=null){wck(xtpan,xt28+'-'+xt27,xt29,xt1,1);wck(xtpant,'1',xt29,xt1,1);}else{if((xt26!=null)&&(xtanct!='1')){wck(xtpan,xt26,xt29,xt1,1);wck(xtpant,'0',xt29,xt1,1);}}
-var xtor=xtf1(xtpm),xtor_duree=xtf1(xtpmd),xtdate2=(xtor_duree!=null)?new Date(xtor_duree):new Date(),xt34=xtdate2.getTime()/(1000*3600),xtecart=(Math.floor(xt22-xt34)>=0)?Math.floor(xt22-xt34):0;xt32+=(xtor==null)?'':'&xtor='+xtor+'&roinbh='+xtecart;var xt33='',Xt_r=(xt25!=null)?xt25.replace(/[<>]/g,''):xtf1('xtref');if(Xt_r==null){Xt_r=xt20.replace(/[<>]/g,'');}if (!xt11){if((xtock!=null)&&((xtocl.indexOf('$'+escape(xtock)+'$')<0)||(xtocl=='$'))){wck(xtpmc,xtocl+xtock+'$',xt30,xt1,1);}xt33+=xtg.javaEnabled()?'&jv=1':'&jv=0';var xtnav=xtg.appName+' '+xtg.appVersion,xtIE=(xtnav.indexOf('MSIE'));if(xtIE>=0){var xtvers=parseInt(xtnav.substr(xtIE+5));xtIE=true;}else{xtvers=parseFloat(xtg.appVersion);xtIE=false;}var xtnet=(xtnav.indexOf('Netscape')>=0),xtmac=(xtnav.indexOf('Mac')>=0),xtOP=(xtg.userAgent.indexOf('Opera')>=0);if((xtIE)&&(xtvers >=5)&&(!xtmac)&&(!xtOP)&&(!xt11)){
-try{xd.body.addBehavior('#default#clientCaps');}catch(e){}var xtconn='&cn='+xd.body.connectionType;xtconn+='&ul='+xd.body.UserLanguage;try{xd.body.addBehavior('#default#homePage');}catch(e){}var xthome='';try{xthome=(xd.body.isHomePage(location.href))?'&hm=1':'&hm=0';}catch(e){};var xtresr='&re='+xd.body.offsetWidth+'x'+xd.body.offsetHeight;}else{var xtconn='',xthome='';if(xtvers>=5){xtresr='&re='+xw.innerWidth+'x'+xw.innerHeight;}else{xtresr=''}}if((xtnet)&&(xtvers >=4)||(xtOP)){var xtlang='&lng='+xtg.language;}else{if((xtIE)&&(xtvers >=4)&&(!xtOP)){var xtlang='&lng='+xtg.userLanguage;}else{xtlang='';}}wck('xtord','',xt21,xt1,1);if(xtock!=null){if((xtor==null)||(xt2=='1')){wck(xtpm,xtock,xtxp,xt1,1);wck(xtpmd,xt21,xtxp,xt1,1);}}var xthl='&hl='+xt21.getHours()+'x'+xt21.getMinutes()+'x'+xt21.getSeconds(),xt45=(xtdocl)?'&docl='+encodeURIComponent(xt6.location.href.replace(/&/g,'#ec#')):'',Xt_param='s='+xt8+xt9+'&p='+xtp+xthl+xtdi+xt12+xt13+xt32+xt45+xt47+xtm+xtconn+xthome+xtlang+'&vtag='+xtv+'&idp='+xtidpg;var xtvalCZ=xtf1('xtvalCZ',1);if(xtvalCZ!=null){Xt_param+=xtvalCZ;var xtdateo=new Date();xtdateo.setTime(xtdateo.getTime()-3600000);wck('xtvalCZ',xtvalCZ,xtdateo,xt1,1);}var Xt_id=xt7+'.xiti.com/hit.xiti?';if(xtvers >=4){xt33+='&r='+xts.width+'x'+xts.height+'x'+xts.pixelDepth+'x'+xts.colorDepth;}
-var xtide=xtf1('xtide');if(xtock!=null){switch(tmpxto.toLowerCase()){case 'erec':case 'epr':case 'es':var xtmpide=xtestr(xtock,/(\[[^\]]*\])|([^\-]+)/g,6);if(xtmpide!=null){xtide=xtmpide;wck('xtide',xtide,xt29,'',1);}break;default:break;}}xt16+=((xt16!='')&&(xtide!=null))?'&ide='+xtide:'';Xt_param+=xt33+xtresr+xt16;var Xt_i=Xt_id+Xt_param+'&ref='+Xt_r.replace(/&/g,'$');if(xt49){Xt_param+='&lnk='+xt48+'&vid='+xt49;}xt_ParseUrl(Xt_id,Xt_param,'&ref='+Xt_r.replace(/&/g, '$'),xt46);if(xt44!=''){xt_ParseUrl2(Xt_id,'s='+xt8+'&type=PDT'+xthl,xt44,xt46);}}else{wck('xtgo',xtgo,xtxp,xt1,1);if(xt24!=null){wck('xtord',xt24,xtxp,xt1,1);}if(xt26!=null){wck('xtanrd',xt26,xtxp,xt1,1);}if(Xt_r!=''){wck('xtref',Xt_r.replace(/&/g,'$'),xtxp,xt1,0);}if(xw.xtloc!=null){xt6.location=xw.xtloc;}}}
\ No newline at end of file
--- a/test/emission_fichiers/youtube.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-
-function loadVideo(pUrl, autoplay) {
-	
-  swfobject.embedSWF(		  
-      pUrl + '&rel=1&border=0&fs=1&autoplay=' + 
-      (autoplay?1:0), 'player', '264', '227', '9.0.0', false, 
-      false, {allowfullscreen: 'true'});
-}
-
-function showMyVideos(data) {
-  var feed = data.feed;
-  var url = '' ;
-  var entries = feed.entry || [];
-  var html = ['<div class="ytb_vide_list" id="ytb_video">'];
-  var playerUrl=[];
-  var nb_line=$('#line').text();
-  var nb_item=nb_line*3;
-  if(nb_item>entries.length){
-	  nb_item=entries.length;
-  }
-	  
-  for (var i = 0; i < nb_item; i++) {
-    var entry = entries[i];	
-    var title = entry.title.$t;
-	var thumbnailUrl = entries[i].media$group.media$thumbnail[0].url;
-	
-	playerUrl[i] = entries[i].media$group.media$content[0].url;
-	
-	html.push('<div class="ytb_item" id="ytb_video_',i,'"><img src="', 
-	              thumbnailUrl, '" width="88" height="64" alt="', title,'" /></div>');
-	
-  }
-  html.push('</div>');
-  $(document).ready(function() {
-	for( var j = 0; j < nb_item; j++){		
-		url=playerUrl[j];
-		$('#ytb_video_'+j).click(function(){			
-			loadVideo(url,false);
-			});
-		}
-	});
- 
- document.getElementById('videos').innerHTML = html.join('');
-  if (entries.length > 0) {
-    loadVideo(entries[0].media$group.media$content[0].url, false);
-  }
-
-}
\ No newline at end of file
--- a/test/index-dailymotion.htm	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html dir="ltr" xml:lang="fr" 
-xmlns="http://www.w3.org/1999/xhtml" lang="fr">
-
-<head>
-
-</head>
-
-<body>
-
-	<div style="width:650px;font-family: 'Trebuchet MS', 'Helvetica', 'Arial',  'Verdana', 'sans-serif';">
-	<h1>SimplePlayer </h1>
-	Iri SimplePlayer is a javascript's Widget interface to augment existing flash or html5 video player. 
-	It's made to show time annotation and different metadata on video.
-	To implement it on your website it's 's really simple.
-	You just need to insert a div and a script, like the exemple under this lines.<br/><br/>
-	This player was test on :
-	<ul>
-		<li>Firefox 3.6.9</li>
-		<li>Chrome 6.0.472.55</li>
-		<li>Safari 5.0.2</li>
-		<li>Internet Explore 8</li>
-	</ul>
-	This Player is a freeSoftware under <a href="http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html"/> CeCILL-C</a> license.
-	This program is made by <a href="http://www.iri.centrepompidou.fr/" >Institut de recherche et d innovation</a>
-	more information on <a href="http://www.iri.centrepompidou.fr/outils/agmented-player/" >this page</a>.
-	<br/><br/>
-	</div>
-	
- 
- <!-- START IRI EMBED    ###################################### -->
- <!-- SIMPLE PLAYER EXPERIMENTATION -->
-	<script type="text/javascript" src="../build/LdtPlayer-release.js"></script> 
-
-	<input id="amount" />
-	
-	<div id="LdtPlayer"></div>
-	
-	<script  type="text/javascript">	
-		var config = {
-						metadata:{
-							format:'cinelab',
-							src:'test.json',
-							load:'json'},
-						gui:{
-							width:480,
-							height:270,
-							mode:'video',
-							container:'LdtPlayer',
-							debug:true,
-							css:'../src/css/LdtPlayer.css'},
-						player:{
-							type:'dailymotion',
-							src:'http://www.dailymotion.com/swf/video/x9ah8m_colloque-transphobie-a-l-assemblee_news?additionalInfos=0'
-							}
-					};
-		__IriSP.init(config);     
-	</script>
-
-
-<!-- END  ################  ###################################### -->
- </body>
- </html>
\ No newline at end of file
--- a/test/index.htm	Fri Apr 27 19:18:21 2012 +0200
+++ b/test/index.htm	Thu May 03 17:52:52 2012 +0200
@@ -1,51 +1,79 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html dir="ltr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml" lang="fr">
-
-<head>
-
-</head>
-
-<body>
-
-	<div style="width:650px;font-family: 'Trebuchet MS', 'Helvetica', 'Arial',  'Verdana', 'sans-serif';">
-	<h1>MetaDataPlayer </h1>
-	Iri MetaDataPlayer is a javascript's Widget interface to augment existing flash or html5 video player. 
-	It's made to show time annotation and different metadata on video.
-	To implement it on your website it's 's really simple.
-	You just need to insert a div and a script, like the exemple under this lines.<br/><br/>
-	This player was test on : firefox 3.6.9 / Chrome 6.0.472.55 / Safari 5.0.2 / Internet Explore 8<br/><br/>
-	This Player is a freeSoftware under <a href="http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html"> CeCILL-C</a> license.
-	This program is made by <a href="http://www.iri.centrepompidou.fr/" >Institut de recherche et d innovation</a>
-	more information on <a href="http://www.iri.centrepompidou.fr/outils/agmented-player/" >this page</a>.
-	</div>
-	
-	
- <!-- START Integration  ###################################### -->
- <!-- SIMPLE PLAYER EXPERIMENTATION -->
-	<script type="text/javascript" src="../build/LdtPlayer-release.js"></script> 
-	<div id="LdtPlayer"></div>
-	
-	<script  type="text/javascript">	
-		var config = {
-						metadata:{
-							format:'cinelab',
-							src:'test.json',
-							load:'json'},
-						gui:{
-							width:650,
-							height:1,
-							mode:'radio',
-							container:'LdtPlayer',
-							debug:true,
-							css:'../src/css/LdtPlayer.css'},
-						player:{
-							type:'jwplayer',
-							src:'../res/swf/player.swf'}
-					};
-		IriSP.init(config);     
-	</script>
-	
-
-<!-- END  ################  ###################################### -->
- </body>
- </html>
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html dir="ltr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml" lang="fr">
+
+<head>
+<title>Metadataplayer - Polemic tweet integration test</title>
+</head>
+
+<body>
+
+  <div style="width:650px;font-family: 'Trebuchet MS', 'Helvetica', 'Arial',  'Verdana', 'sans-serif';">
+  <h1>MetaDataPlayer</h1>
+  Polemic tweet integration test - using Popcorn, jwplayer and the <a href="http://polemictweet.com">PolemicTweet</a> widget.<br>
+  </div>
+  
+  
+ <!-- START Integration  ###################################### -->
+ <!-- SIMPLE PLAYER EXPERIMENTATION -->
+  <script type="text/javascript" src="../build/LdtPlayer-core.js" type="text/javascript"></script>   
+  
+  <div id="video"></div>
+  <div id="LdtPlayer"></div>
+  
+  <script  type="text/javascript">
+  IriSP.libFiles.defaultDir = "../src/js/libs/";
+  IriSP.widgetsDir = "../src/widgets"
+  IriSP.jwplayer_swf_path = "player.swf";
+    var _metadata = {
+        url: 'http://ldt.iri.centrepompidou.fr/ldtplatform/ldt/cljson/id/13b0aa52-336b-11e0-b233-00145ea49a02?callback=?',
+        format: 'ldt'
+    };
+    var _config = {            
+        gui: {
+            width:620,
+            height:800,
+            container:'LdtPlayer',
+			default_options: {
+				metadata: _metadata
+			},
+            css:'../src/css/LdtPlayer-core.css',
+            widgets: [
+                { type: "Sparkline" },
+                { type: "Slider" },
+                { type: "Controller" },
+                { type: "Polemic" },
+                { type: "Segments" },
+                { type: "Slice" },
+                { type: "Arrow" },
+                { type: "Annotation" },
+                { type: "Tweet" },
+                { type: "Tagcloud" },
+                {
+                    type: "AnnotationsList",
+                    //ajax_url : "http://ldt.iri.centrepompidou.fr/ldtplatform/api/ldt/segments/{{media}}/{{begin}}/{{end}}?callback=?", 
+                    //foreign_url : "http://ldt.iri.centrepompidou.fr/ldtplatform/ldt/front/player/{{media}}/{{project}}/{{annotationType}}#id={{annotation}}",
+                    container: "AnnotationsListContainer"
+                },
+                { type: "Mediafragment"},
+/*                {
+                    type: "Trace",
+                    js_console: true
+                }
+*/            ]
+        },
+        player:{
+            type:'jwplayer', // player type
+            live: true, 
+            height: 300, 
+            width: 620, 
+            provider: "rtmp" 
+        }
+    };
+    
+    var _myPlayer = new IriSP.Metadataplayer(_config, _metadata);
+  </script>
+  
+  
+ </body>
+ <div id="AnnotationsListContainer" style="position: absolute; width: 400px; left: 660px; top: 105px;"></div>
+ </html>
--- a/test/indexFC.htm	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1974 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html class="js" dir="ltr" xml:lang="fr" 
-xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><link media="all" 
-href="emission_fichiers/widget40.css" type="text/css" rel="stylesheet">
-
-
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<script type="text/javascript" src="emission_fichiers/swfobject.txt"></script>
-<meta name="afs:suggest/onload" content="onSuggestLoad()">
-<link rel="shortcut icon" 
-href="http://www.franceculture.com/sites/default/files/franceculture_favicon.png"
- type="image/x-icon">
-<link rel="alternate" type="application/rss+xml" title="Les Retours du 
-dimanche " href="http://www.franceculture.com/emission/1232581/rss">
-  <title>Le salaire de la politique ; les vuvuzelas ; l'actualité 
-politique belge - Information - France Culture</title>
-  <link type="text/css" rel="stylesheet" media="all" 
-href="emission_fichiers/css_e94d821d2c09c140834405452127e5ae.css">
-<link type="text/css" rel="stylesheet" media="screen" 
-href="emission_fichiers/css_bf9cf64d750be06f6006828a2bed7b98.css">
-<link type="text/css" rel="stylesheet" media="print" 
-href="emission_fichiers/css_8af77a07a1f960afe4e4736580827c7c.css">
-<!--[if lte IE 7]>
-<link type="text/css" rel="stylesheet" media="all" href="/sites/all/themes/franceculture/ie.css?y" />
-<link type="text/css" rel="stylesheet" media="all" href="/sites/all/themes/franceculture/footer2.css?y" />
-<![endif]-->
-  <script type="text/javascript" src="emission_fichiers/jquery_005.js"></script>
-<script type="text/javascript" src="emission_fichiers/drupal.js"></script>
-<script type="text/javascript" src="emission_fichiers/fr_4fb8f115d8d263374d07dafa1b2a40b5.js"></script>
-<script type="text/javascript" src="emission_fichiers/fc_widget_twitter.js"></script>
-<script type="text/javascript" src="emission_fichiers/youtube.js"></script>
-<script type="text/javascript" src="emission_fichiers/fivestar.js"></script>
-<script type="text/javascript" src="emission_fichiers/high.js"></script>
-<script type="text/javascript" src="emission_fichiers/fc_antidot_recherche.js"></script>
-<script type="text/javascript" src="emission_fichiers/panels.js"></script>
-<script type="text/javascript" src="emission_fichiers/popups_002.js"></script>
-<script type="text/javascript" src="emission_fichiers/popups.js"></script>
-<script type="text/javascript" src="emission_fichiers/tableheader.js"></script>
-<script type="text/javascript" src="emission_fichiers/comment.js"></script>
-<script type="text/javascript" src="emission_fichiers/textarea.js"></script>
-<script type="text/javascript" src="emission_fichiers/fc_bloc_direct.js"></script>
-<script type="text/javascript" src="emission_fichiers/ajax-responder.js"></script>
-<script type="text/javascript" src="emission_fichiers/jquery_006.js"></script>
-<script type="text/javascript" src="emission_fichiers/rf_player.js"></script>
-<script type="text/javascript" src="emission_fichiers/rollover.js"></script>
-<script type="text/javascript" src="emission_fichiers/jquery_002.js"></script>
-<script type="text/javascript" src="emission_fichiers/jquery_003.js"></script>
-<script type="text/javascript" src="emission_fichiers/jquery.js"></script>
-<script type="text/javascript" src="emission_fichiers/footer.js"></script>
-<script type="text/javascript" src="emission_fichiers/jquery_004.js"></script>
-<script type="text/javascript" src="emission_fichiers/script.js"></script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-jQuery.extend(Drupal.settings, {"basePath":"\/","fivestar":{"titleUser":"Your rating: ","titleAverage":"Average: ","feedbackSavingVote":"Saving your vote...","feedbackVoteSaved":"Your vote has been saved.","feedbackDeletingVote":"Deleting your vote...","feedbackVoteDeleted":"Your vote has been deleted."},"adresseProxy":"http:\/\/www.franceculture.com\/proxy","popups":{"originalPath":"node\/2347301","defaultTargetSelector":"#main","modulePath":"sites\/all\/modules\/contrib\/popups","autoCloseFinalMessage":1},"fc_bloc_direct":{"interval":60000,"refresh_on_load":1}});
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-
-function quelisentils_redirect() {
-  location.href = Drupal.settings.basePath + 'quelisentils/oeuvre/2169101#fc-quelisentils-comment-form';
-  location.reload(true);
-  return false;
-}
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-
-function quelisentils_redirect() {
-  location.href = Drupal.settings.basePath + 'quelisentils/oeuvre/778481#fc-quelisentils-comment-form';
-  location.reload(true);
-  return false;
-}
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-
-function quelisentils_redirect() {
-  location.href = Drupal.settings.basePath + 'quelisentils/oeuvre/1061061#fc-quelisentils-comment-form';
-  location.reload(true);
-  return false;
-}
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-
-function quelisentils_redirect() {
-  location.href = Drupal.settings.basePath + 'quelisentils/oeuvre/437741#fc-quelisentils-comment-form';
-  location.reload(true);
-  return false;
-}
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-
-function quelisentils_redirect() {
-  location.href = Drupal.settings.basePath + 'quelisentils/oeuvre/2357521#fc-quelisentils-comment-form';
-  location.reload(true);
-  return false;
-}
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-jQuery(document).ready(function() {
-    $(".more-doc").text("voir les 5 documents").css("background" , 'url("/sites/all/themes/franceculture/images/urg-down.png") no-repeat 100% 4px');
-    $(".rel-doc .more-liste").hide();
-    
-$(".more-doc").toggle(
-function(){
-$(".rel-doc .more-liste").show("slow");
-$(this).text("n'afficher que les 3 premiers").css("background" , 'url("/sites/all/themes/franceculture/images/urg-up.png") no-repeat 100% 4px');
-},
-function(){
-$(".rel-doc .more-liste").hide("slow");
-$(this).text("voir les 5 documents").css("background" , 'url("/sites/all/themes/franceculture/images/urg-down.png") no-repeat 100% 4px');
-});
-});
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-
-    $(document).ready(function(){  
-      $('#cb-left').addClass('script-vertical');
-      $('#script-scroll').addClass('script');
-			$('#share').addClass('share-script');
-			$('.share-more').css('background' , 'url("/sites/all/themes/franceculture/images/share-more.png") no-repeat 100% 4px');
-
-			$('.share-more').toggle(
-				function(){
-					$('.share-script .more-services').addClass('active');
-					$(this).css('background' , 'url("/sites/all/themes/franceculture/images/share-less.png") no-repeat 100% 4px');
-				},
-				function(){
-					$('.share-script .more-services').removeClass('active');
-					$(this).css('background' , 'url("/sites/all/themes/franceculture/images/share-more.png") no-repeat 100% 4px');
-				}
-			);
-      $('span.more-services a.addthis_button_facebook').click(function() {
-        window.open(this.href, 'facebook-share', 'resizable=no,with=500,height=315');
-        return false;
-      });
-  });
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
- 
-    $.fn.cleartextonfocus = function() {
-    	return this.focus(function() {
-    		if(this.value == this.defaultValue) {
-    			this.value = '';
-    		}
-    	}).blur(function() {
-    		if(!this.value.length) {
-    			this.value = this.defaultValue;
-    		}
-    	});
-    };
-
-    $(document).ready(function(){
-      $('textarea.clearonfocus').cleartextonfocus();
-    });
-  
-//--><!]]>
-</script>
-  <!--[if lte IE 7]><script type="text/javascript" src="/sites/all/themes/franceculture/ie.js?y"></script><![endif]--><script language="JavaScript">
-<!--
-//configuration
-OAS_url ='http://pub.ftv-publicite.fr/RealMedia/ads/';
-OAS_listpos = 'Middle,x02,BottomRight';
-OAS_query = '?';
-OAS_sitepage = 'www.radiofrance.fr/franceculture/les-retours-du-dimanche';
-//end of configuration
-OAS_version = 10;
-OAS_rn = '001234567890'; OAS_rns = '1234567890';
-OAS_rn = new String (Math.random()); OAS_rns = OAS_rn.substring (2, 11);
-function OAS_NORMAL(pos) { 
-  document.write("<a href='" + OAS_url + "click_nx.ads/" + OAS_sitepage + "/1" + OAS_rns + "@" + OAS_listpos + "!" + pos + OAS_query + "' target=_top>");
-  document.write("<img src='" + OAS_url + "adstream_nx.ads/" + OAS_sitepage + "/1" + OAS_rns + "@" + OAS_listpos + "!" + pos + OAS_query + "' border=0 alt='Click!'></a>");
-}
-//-->
-</script>
-<script language="JavaScript1.1">
-<!--
-OAS_version = 11;
-if (navigator.userAgent.indexOf('Mozilla/3') != -1)
-  OAS_version = 10;
-  if (OAS_version >= 11)
-    document.write("<sc"+"ript language='JavaScript1.1' src='" + OAS_url + "adstream_mjx.ads/" + OAS_sitepage + "/1" + OAS_rns + "@" + OAS_listpos + OAS_query + "'><\/script>");
-//-->
-</script><script language="JavaScript1.1" src="emission_fichiers/1219830366Middlex02BottomRight.js"></script><script language="JavaScript">
-<!-- 
-document.write('');
-function OAS_AD(pos) {
-  if (OAS_version >= 11 && typeof(OAS_RICH!='undefined'))
-    OAS_RICH(pos);
-  else
-    OAS_NORMAL(pos);
-}
-//-->
-</script>
-<style type="text/css">/**
- * Highlight style classes
- * .a background color
- * .b underline
- * .c underline + font color
- */
- 
-@media screen{
-em.diigoHighlight {
-	text-align:inherit;
-	text-decoration: inherit;
-	line-height:inherit;
-	font:inherit;
-	color:inherit;
-	display:inline;
-	position:relative;
-}
-em.diigoHighlight.a.mouseOvered {
-	background-color: #ffc62a !important;
-}	
-
-em.diigoHighlight.b.mouseOvered, em.diigoHighlight.c.mouseOvered {
-	border-bottom: solid 2px #ffc62a;
-}
-	
-em.diigoHighlight.c {
-	color: #000099;
-}
-em.diigoHighlight.c.mouseOvered {
-	color: #ffc62a;
-}	
-
-em.diigoHighlight.a.yellow {
-	background-color: #FF9;
-}
-
-em.diigoHighlight.b.yellow, em.diigoHighlight.c.yellow {
-	border-bottom: solid 2px #FF9;
-}
-	
-img.diigoHighlight.yellow {/*image highlight*/
-	cursor: pointer; 
-	outline:2px solid #FF9;
-}
-	
-em.diigoHighlight.a.blue {
-	background-color: #ABD5FF;
-}
-
-em.diigoHighlight.b.blue, em.diigoHighlight.c.blue {
-	border-bottom: solid 2px #ABD5FF;
-}
-	
-img.diigoHighlight.blue {/*image highlight*/
-	cursor: pointer; 
-	outline:2px solid #ABD5FF;
-}
-	
-	
-em.diigoHighlight.a.green {
-	background-color: #B2E57E;
-}
-
-em.diigoHighlight.b.green, em.diigoHighlight.c.green {
-	border-bottom: solid 2px #B2E57E;
-}
-
-img.diigoHighlight.green {/*image highlight*/
-	cursor: pointer; 
-	outline:2px solid #B2E57E;
-}	
-	
-	
-em.diigoHighlight.a.pink {
-	background-color: #ffcccc;
-}
-
-em.diigoHighlight.b.pink, em.diigoHighlight.c.pink {
-	border-bottom: solid 2px #ffcccc;
-}
-	
-img.diigoHighlight.pink {/*image highlight*/
-	cursor: pointer; 
-	outline:2px solid #ffcccc;
-}	
-	
-img.diigoHighlight.mouseOvered {
-	cursor: pointer; 
-	outline:2px solid #ffc62a;
-}	
-	
-
-div.diigotb-inline-cloud{
-	position:fixed !important;
-	width:440px !important;
-	height:370px !important;
-	left:0;top:0;
-	background-color:#fef5c7 !important;
-	z-index:9999999999 !important;
-	display:none;
-	-moz-border-radius:15px !important;
-}
-/*  capture image */
-
-.diigotb-body #diigotb-upload-cover{
-	cursor:crosshair!important;
-	z-index:1999999!important;
-	position:fixed!important;
-	left:0!important;
-	top:31px;
-}
-	
-.diigotb-body #diigotb-upload-tip{
-    color: #fff!important;
-    padding:2px 4px!important;
-    position:fixed!important;
-    z-index:11000001!important;
-}
-	
-.diigotb-body #diigotb-upload-select{
-	position:fixed!important;
-	z-index:1000001;
-}
-	
-.diigotb-body #diigotb-upload-resizer{
-	z-index:11000002!important;
-	position:fixed!important;
-	cursor:move!important;
-	border:1px dashed black!important;
-}
-	
-.diigotb-body #currentColor{
-  background-color: #fff!important;
-  width: 37px!important;
-  height: 37px!important;
-  padding: 1px!important;
-  border: 1px solid #2e68e6!important;
-  float: left!important;
-  margin: 0 5px 0 0!important;
-}
-	
-.diigotb-body #currentColor div{
-  width: 37px!important;
-  height: 37px!important;	
-  margin:0!important;
-}
-.diigotb-body .selectPanel{
-	margin-top:5px!important;
-}
-	
-.diigotb-body .colorCell{
-  float: left!important;
-  margin: 0 1px 1px 0!important;
-  border: 1px solid #5f92ff!important;
-  width: 18px!important;
-  height: 18px!important;
-}
-	
-.diigotb-body .colorCell:hover{
-  border: 1px solid #FF9900!important;
-}
-.diigotb-body .colorCell.actived{
-  border: 1px solid #FF9900!important;
-}	
-	
-.diigotb-body .colorCell div{
-  width: 18px!important;
-  height: 18px!important;
-  cursor:pointer!important;
-  margin:0!important;
-}
-
-.diigotb-body .capture-black{background-color:#000!important;}
-.diigotb-body .capture-white{background-color:#fff!important;}
-.diigotb-body .capture-gray{background-color:#808080!important;}
-.diigotb-body .capture-light-gray{background-color:#c0c0c0!important;}
-
-.diigotb-body .capture-red{background-color:#ff0000!important;}
-.diigotb-body .capture-cyan{background-color:#00ffff!important;}
-.diigotb-body .capture-orange{background-color:#ff9900!important;}
-.diigotb-body .capture-blue{background-color:#0000ff!important;}
-
-.diigotb-body .capture-yellow{background-color:#ffff00!important;}
-.diigotb-body .capture-purple{background-color:#9900ff!important;}
-.diigotb-body .capture-green{background-color:#00ff00!important;}
-.diigotb-body .capture-pink{background-color:#ff00ff!important;}
-	
-.diigotb-body #diigotb-colorpanel{
-	background:transparent url(chrome://diigotb/skin/ann-bar-palette-bg-left.png) no-repeat scroll left center!important;
-	display:block;
-	height:55px!important;
-	position:fixed!important;
-	width:180px!important;
-	z-index:11000022!important;
-	margin:0!important;
-}
-	
-.diigotb-body .diigotb-cbg{
-	background:transparent url(chrome://diigotb/skin/ann-bar-palette-bg-right.png) no-repeat scroll right top!important;
-	height:55px!important;
-	line-height:55px!important;
-	padding-left:6px!important;
-	width:180px!important;
-	margin:0!important;
-}
-
-	
-.diigotb-body #currentArrow{
-	background:transparent url(chrome://diigotb/skin/ann-bar-palette-arrow.png) no-repeat scroll 0 0!important;
-	height:6px!important;
-	left:0;
-	position:relative!important;
-	top:-5px;
-	width:7px!important;
-	margin:0!important;
-}
-	
-.diigotb-body #currentArrow._istop{
-	background:transparent url(chrome://diigotb/skin/ann-bar-palette-arrow-down.png) no-repeat scroll 0 0!important;
-	top:51px!important;
-}
-	
-	
-.diigotb-body #diigotb-text-area{
-	position:fixed!important;
-	z-index:11000010!important;
-}
-	
-.diigotb-body .diigotb-text-input{
-	font: 18px/22px Helvetica,Arial,sans-serif!important;
-	border:0px solid #5f92ff!important;
-	z-index:11000011!important;
-}	
-	
-.diigotb-body #diigotb-editpanel{
-	background:transparent url(chrome://diigotb/skin/ann-bar-bg-right.png) no-repeat scroll right center!important;
-	height:35px!important;
-	position: fixed!important;
-	z-index:11000022!important;
-	margin:0!important;
-}
-	
-	
-.diigotb-body .diigotb-btn div{
-	cursor:pointer!important;
-	width:18px!important;
-	height:18px!important;
-	margin:2px!important;
-}
-.diigotb-body .diigotb-btn{
-	width:23px!important;
-	height:23px!important;
-}
-		
-	
-.diigotb-body #diigotb-editpanel .diigotb-bg{
-	background:transparent url(chrome://diigotb/skin/ann-bar-bg-left.png) repeat-x scroll left center!important;
-	height:35px!important;
-	padding-left:6px!important;
-	line-height:35px!important;
-	margin:0!important;
-}
-	
-		
-.diigotb-body div.diigotb-tip{
-	-moz-border-radius:4px 4px 4px 4px;
-	background-color:#f1f2f7;
-	border:1px solid #767676;
-	color:black;
-	display:none;
-	-moz-box-shadow:5px 5px 5px -5px #767676;
-	font:12px Arial,Helvetica,sans-serif;
-	margin:0 !important;
-	padding:3px 6px !important;
-	position:absolute;
-	z-index:2147483647;
-}
-	
-.diigotb-body #diigotb-editpanel div.diigotb-btn{
-	padding:0px!important;
-	display:inline-table!important;
-	margin-bottom:0 !important;
-	margin-left:0 !important;
-	margin-right:0 !important;
-	margin-top:5px;
-}
-	
-	
-.diigotb-body #diigotb-editpanel div.diigotb-sep img{
-	pading:0!important;
-	margin:0!important;
-}
-	
-.diigotb-body #diigotb-editpanel div.diigotb-sep{
-	pading:4px 0!important;
-	display:inline-table!important;
-	margin:0!important;
-	line-height:0 !important;
-}	
-	
-.diigotb-body #diigotb-editpanel div.diigotb-btn.enabled:hover{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-current.png') no-repeat!important;
-}
-	
-.diigotb-body #diigotb-editpanel #diigotb-undo.enabled div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-undo.png') no-repeat center center!important;
-}
-	
-.diigotb-body #diigotb-editpanel div.diigotb-btn.actived{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-current.png') no-repeat!important;
-}
-	
-.diigotb-image-border{
-	border:1px solid #666 !important;
-}
-	
-#diigotb-imagepanel{
-	height:22px!important;
-	position: absolute!important;
-	z-index:11000022!important;
-	margin:0!important;
-}
-
-#diigotb-imagepanel .diigotb-btn{
-	cursor:pointer!important;
-	width:20px!important;
-	height:20px!important;
-	margin:2px!important;
-	float:left !important;
-	background:transparent url(chrome://diigotb/skin/save-image-action-icons.png) no-repeat scroll!important;
-}	
-	
-	
-#diigotb-imagepanel #diigotb-quick-save{
-	background-position:0 0!important;
-}
-		
-#diigotb-imagepanel.processing #diigotb-quick-save{
-	background-position:0 -20px!important;
-	cursor:default!important;
-}
-
-		
-#diigotb-imagepanel.needpremium #diigotb-quick-save{
-	background-position:0 -20px!important;
-	cursor:default!important;
-}	
-
-#diigotb-imagepanel.hassaved #diigotb-quick-save{
-	background-position: -60px 0!important;
-	cursor: pointer !important;
-}
-
-.diigotb-imagetip{
-	background:transparent url(chrome://diigotb/skin/notice-bar-bg-right.png) no-repeat scroll right center !important;
-	height:21px !important;
-	margin:0 !important;
-	position:absolute !important;
-	z-index:11000022 !important;
-	width:106px;
-}
-	
-.diigotb-imagebg{
-	background:transparent url(chrome://diigotb/skin/notice-bar-bg-left.png) repeat-x scroll left center !important;
-	height:21px !important;
-	margin:0 !important;
-	padding-left:6px !important;
-	width:90px;
-}
-	
-.diigotb-imagetip-text{
-	padding-left:20px!important;
-	font:11px/13px Helvetica,Arial,sans-serif!important;
-	color:white!important;
-	line-height:20px!important;
-	float:left;
-}
-	
-.diigotb-imagetip.processing .diigotb-imagetip-text{
-	background:transparent url(chrome://diigotb/skin/processing-fb.gif) no-repeat scroll left center !important;
-}
-	
-.diigotb-imagetip.hassaved .diigotb-imagetip-text{
-	background:transparent url(chrome://diigotb/skin/icon-done.png) no-repeat scroll left center !important;
-}
-	
-.diigotb-border{
-	position: absolute!important;
-	z-index:11000000!important;
-	margin:0!important;
-	background-color: #4b8cdc!important;
-}
-.diigotb-left{
-	width:1px!important;
-}
-.diigotb-right{
-	width:1px!important;
-}
-.diigotb-top{
-	height:1px!important;
-}
-.diigotb-bottom{
-	height:1px!important;
-}
-
-.diigotb-body #diigotb-rect div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-rectangle.png') no-repeat center center!important;
-}	
-.diigotb-body #diigotb-round div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-ellipse.png') no-repeat center center!important;
-}
-.diigotb-body #diigotb-text div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-font.png') no-repeat center center!important;
-}
-	
-.diigotb-body #diigotb-arrow div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-arrow.png') no-repeat center center!important;
-}
-	
-.diigotb-body .diigotb-sep{
-	background: transparent url('chrome://diigotb/skin/ann-bar-bg-separator.png') no-repeat center center!important;
-}
-	
-.diigotb-body #diigotb-undo div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-undo-disabled.png') no-repeat center center!important;
-}
-	
-.diigotb-body #diigotb-capture-save div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-quickly-save.png') no-repeat center center!important;
-}
-	
-	
-	
-.diigotb-body #diigotb-upload-resizer div {
-  position: absolute!important;
-  width: 9px!important;
-  height: 9px!important;
-  /*background-color: white;*/
-  z-index:11000002!important;
-  margin:0px!important;
-  background:transparent url(chrome://diigotb/skin/spot.png) no-repeat scroll left center!important;
-}
-
-.diigotb-body #diigotb-upload-resizer div.gleft {
-  left: -9px!important;
-}
-
-.diigotb-body #diigotb-upload-resizer div.gtop {
-  top: -9px!important;
-}
-
-.diigotb-body #diigotb-upload-resizer div.gright {
-  right: -9px!important;
-}
-
-.diigotb-body #diigotb-upload-resizer div.gbottom {
-  bottom: -9px!important;
-}
-
-.diigotb-body #diigotb-upload-resizer div.ghor {
-  margin-left: auto!important;
-  margin-right: auto!important;
-  left: 0px!important;
-  right: 0px!important;
-}
-
-.diigotb-body #diigotb-upload-resizer div.gver {
-  margin-top: auto!important;
-  margin-bottom: auto!important;
-  top: 0px!important;
-  bottom: 0px!important;
-}
-	
-.diigotb-body{
-	padding-top: 31px!important;
-}
-	
-.diigotb-body #diigotb-topbar{
-  background: url(chrome://diigotb/skin/topbar-bg.png) left top repeat-x!important;
-  border-bottom: 1px solid #999!important;
-  color: #555!important;
-  font: 12px/18px Helvetica,Arial,sans-serif!important;
-  height: 30px!important;
-  line-height: 30px!important;
-  position: fixed!important;
-  left: 0!important;
-  top: 0!important;
-  text-align:center!important;
-  z-index:1999999!important;
-}
-
-.diigotb-body #diigotb-msg img{
-  margin:0 5px 0 0!important;
-  vertical-align: middle!important;
-}
-	
-.diigotb-body #diigotb-msg{
-	color:#333!important;
-}
-
-.diigotb-body #diigotb-msg a{
-  color: #0044cc!important;
-  text-decoration: none!important;
-}
-
-.diigotb-body #diigotb-msg a:hover{
-  text-decoration: underline!important;
-}
-
-.diigotb-body #diigotb-escLink{
-  display: block!important;
-  float: right!important;
-  margin: 5px 5px 0 0!important;
-  text-decoration: none!important;
-  width: 50px!important;
-  cursor:pointer!important;
-}
-
-.diigotb-body #diigotb-escLink:hover{
-  text-decoration: underline!important;
-}
-
-.diigotb-body #diigotb-escLink span{
-  background: url(chrome://diigotb/skin/esc-right.png) right top no-repeat!important;
-  display: block!important;
-  padding-right: 9px!important;
-}
-
-.diigotb-body #diigotb-escLink span strong{
-  background: url(chrome://diigotb/skin/esc-left.png) left top no-repeat!important;
-  display: block!important;
-  color: #fff!important;
-  font-weight: 700!important;
-  line-height: 20px!important;
-  text-indent:7px!important;
-}
-	
-	
-
-/*highlight label*/
-.diigoHighlight .diigoHighlightLabel sup {
-	font:normal normal normal 8px/8px "lucida grande",tahoma,verdana,arial,sans-serif;
-	text-decoration:none;
-	background-color:inherit;
-	cursor:default;
-}
-	
-body.diigoHiPen.yellow{
-	cursor:url(chrome://diigotb/skin/highlighter-orange.cur), text !important
-}
-	
-body.diigoHiPen.blue{
-	cursor:url(chrome://diigotb/skin/highlighter-blue.cur), text !important
-}
-
-body.diigoHiPen.green{
-	cursor:url(chrome://diigotb/skin/highlighter-green.cur), text !important
-}	
-	
-body.diigoHiPen.pink{
-	cursor:url(chrome://diigotb/skin/highlighter-pink.cur), text !important
-}
-em.diigoHighlight.type_0.commented {	
-	padding-left:30px;
-}
-	
-/*float note*/
-div.diigoHighlight.type_2 {
-	position:absolute;
-	width:29px;
-	height:36px;
-	text-align:center;
-	background:transparent url('chrome://diigotb/skin/float_icon.png') no-repeat 50% 50%;
-	z-index:9996;
-}
-div.diigoHighlight.type_2.mouseOvered {
-	position:absolute;
-	width:37px;
-	height:31px;
-	text-align:center;
-	background:transparent url('chrome://diigotb/skin/float_icon.png') no-repeat;
-	z-index:9996;
-}	
-div.diigoHighlight.type_2 span {
-	color:#000;
-	font:bold 13px Arial, Helvetica, sans-serif;
-	cursor: default;
-	line-height: 37px;
-	text-shadow: #fff 0 1px 0;
-}
-/*
-* html div.diigoHighlight.type_2{
-	filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=scale, src="http://www.diigo.com/javascripts/webtoolbar/images/float_icon.png");
-	overflow:hidden;
-	background:none;
-}
-*/
-	
-
-div.diigoIcon.commented.TextIcon.diigoEdit{
-	background-repeat:no-repeat !important;
-	background-position:right !important;
-}
-
-	
-div.diigoIcon.commented.ImageIcon.diigoEdit{
-	background-repeat:no-repeat !important;
-	background-position:right !important;
-}
-
-
-/*mouse over effect*/
-/*
-.diigoHighlight.id_190e5778b533dc0fa1b1660653a4f6f5 {outline: 2px dotted green !important;}
-*/
-div.diigoIcon{
-	cursor:pointer !important;
-	margin: 0pt; 
-	padding: 0px 0px 0px 0px;
-	position: absolute;
-	display:none;
-	width: 24px !important; 
-	z-index:999999;
-	height: 23px !important;
-	background: transparent url('chrome://diigotb/skin/edit-highlight.png') no-repeat left;
-}
-
-div.diigoIcon span{
-	color:#000000;
-	display:block;
-	font-family:Helvetica,Arial,sans-serif;
-	font-size:13px;
-	font-weight:700;
-	line-height:18px;
-	text-align:center;
-	text-shadow:0 1px 1px #FFFFFF;
-}
-
-div.diigoIcon.commented.ImageIcon{
-	display:block !important;
-	background-color: transparent !important;
-}
-	
-div.diigoIcon:hover{
-	background-background: transparent !important;
-	background-repeat:no-repeat !important;
-	background-position:right !important;
-}
-	
-div.diigoIcon.commented.TextIcon{
-	display:block !important;
-	left:0;
-	bottom:0;
-}
-	
-div.diigoIcon.commented.public{
-	background: #FFFFFF url('chrome://diigotb/skin/public-annotation.png') no-repeat left;
-}
-
-div.diigoIcon.commented.private{
-	background: #FFFFFF url('chrome://diigotb/skin/private-annotation.png') no-repeat left;
-}
-	
-div.diigoIcon.commented.group{
-	background: #FFFFFF url('chrome://diigotb/skin/group-annotation.png') no-repeat left;
-}
-	
-/*Clip video*/
-div.diigoClipVideo{
-	float:left;
-	height:16px;
-	padding:0 16px 0 6px;
-	background:#f5f5f5 url(chrome://diigotb/skin/toolbar-clip-bg.gif) no-repeat right 0;
-	border:1px solid #ccc;
-	border-bottom-width:0;
-	font-family:"lucida grande",tahoma,verdana,arial,sans-serif;
-	z-index:999;
-	position:absolute;
-}
-
-div.diigoClipVideo.clipped {
-  background-position: right -32px; left: 717px; top: 135px;
-}
-
-	div.diigoClipVideo span{
-		font-weight:bold;
-		font-size:10px;
-		line-height:16px;
-		text-decoration:underline;
-		color:#03f;
-		cursor:pointer;
-		margin-right:6px
-	}
-	div.diigoClipVideo span:hover,div.diigoClipVideo span:active{
-		color:#00f
-	}
-	/*.diigolet input{
-		font-family:"lucida grande",tahoma,verdana,arial,sans-serif;
-		font-size:9px;
-	}*/
-	
-/*-----------notice msg--------------*/
-.diigotb-notice-img  {
-	float:left!important;
-	height:16px!important;
-	width:16px!important;
-	margin-top:6px!important;
-	margin-right:3px!important;
-}
-.success .diigotb-notice-img{
-	background:url("chrome://diigotb/skin/notice-icons.png") no-repeat scroll 0 0 transparent!important;
-}
-.failed .diigotb-notice-img{
-	background:url("chrome://diigotb/skin/notice-icons.png") no-repeat scroll -16px 0 transparent!important;
-}
-.info .diigotb-notice-img{
-	background:url("chrome://diigotb/skin/notice-icons.png") no-repeat scroll -32px 0 transparent!important;
-}
-.process .diigotb-notice-img{
-	background:url("chrome://diigotb/skin/processing.gif") no-repeat scroll left 0 transparent!important;
-}	
-	
-.diigotb-notice-msg-rt  {
-	background:url("chrome://diigotb/skin/notice-bar-2-bg-left.png") no-repeat scroll left bottom transparent!important;
-	line-height:28px!important;
-	padding-left:10px!important;
-	height:30px!important;
-}
-.failed .diigotb-notice-msg-rt  {
-	background:url("chrome://diigotb/skin/notice-bar-2-bg-left.png") no-repeat scroll left top transparent!important;
-}
-	
-.diigotb-notice-close{
-	float:right!important;
-	height:16px!important;
-	width:16px!important;
-	margin-left:20px!important;
-	margin-top:6px!important;
-	cursor:pointer;
-	background:url("chrome://diigotb/skin/notice-icons.png") no-repeat scroll -48px 0 transparent!important;
-}
-
-.diigotb-notice-close:hover{
-	background-position: -63px 0!important;
-}
-	
-.diigotb-notice-msg  {
-	background:url("chrome://diigotb/skin/notice-bar-2-bg-right.png") no-repeat scroll right bottom transparent!important;
-	float:right!important;
-	height:30px!important;
-	padding:0 11px 0 0!important;
-	border: none!important;
-	margin:0!important;
-	position:fixed!important;
-	font:12px/14px Helvetica,Arial,sans-serif!important;
-	z-index:100000!important;
-}
-.diigotb-notice-msg a {
-	color:#0044cc!important; 
-	text-decoration:underline!important;
-}
-	
-.failed.diigotb-notice-msg  {
-	background:url("chrome://diigotb/skin/notice-bar-2-bg-right.png") no-repeat scroll right top transparent!important;
-}
-	
-}
-
-
-@media print{
-em.diigoHighlight.a, em.diigoHighlight.b, em.diigoHighlight.c {
-	border-bottom:0.5pt dashed Black;
-}
-
-
-/*image highlight*/
-/*no inline comments*/
-img.diigoHighlight {
-	border:0.5pt dashed Black
-}
-
-/*float note*/
-div.diigoHighlight.type_2 {
-	display:none
-}
-div.diigoHighlight.type_2 span {
-	display:none
-}
-}</style><style id="diigo-activeHighlight" type="text/css">dummyRuleForDigg{}</style></head><body
- class="not-front not-logged-in node-type-rf-diffusion one-sidebar 
-sidebar-right emissions page-node-2347301 
-section-emission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg
- popups-processed tableHeader-processed"><div id="_atssh" 
-style="visibility: hidden; height: 1px; width: 1px; position: absolute; 
-z-index: 100000;"><iframe src="emission_fichiers/sh20.htm" 
-style="height: 1px; width: 1px; position: absolute; z-index: 100000; 
-border: 0pt none; left: 0pt; top: 0pt;" id="_atssh433"></iframe></div>
-	<div id="header-commun" class="header-footer content-header-footer"><div
- id="header-content"><ul><li class="first-header"><a 
-href="http://radiofrance.fr/" name="top-page-ancre">radiofrance.fr</a></li><li><a
- href="http://www.franceinter.com/">france inter</a></li><li><a 
-href="http://www.france-info.com/">france info</a></li><li><a 
-href="http://www.francebleu.com/">france bleu</a></li><li><a 
-href="http://www.franceculture.com/">france culture</a></li><li><a 
-href="http://www.francemusique.com/">france musique</a></li><li><a 
-href="http://fip-radio.com/">fip</a></li><li><a 
-href="http://www.lemouv.com/">le mouv'</a></li><li class="last-header"><a
- href="http://concerts.radiofrance.fr/">les orchestres</a></li></ul><div
- class="clearer">&nbsp;</div></div></div><div id="page">
-    <div id="page-inner"> 
-<!-- début du header -->
-                <div id="header">
-                    <!-- début du menu d'accès rapide -->
-                    <div id="acces-rapide"><a name="top"></a>
-                    <a href="#acces-navigation-primaire" 
-title="descriptif du lien">acces rapide a la navigation principale</a><br>
-                    <a href="#acces-navigation-secondaire" 
-title="descriptif du lien">acces rapide a la navigation secondaire</a><br>
-                    <a href="#acces-contenu" title="descriptif du lien">acces
- rapide au contenu</a><br>
-                    <a href="#acces-right" title="descriptif du lien">acces
- rapide au contenu de droite</a><br>
-                    <a href="#acces-footer" title="descriptif du lien">acces
- rapide au footer</a><br>
-                    </div>
-            <a href="http://www.franceculture.com/" class="retour-home"><img
- src="emission_fichiers/logo.png" alt="Accueil" height="106" width="106"></a>
-            <div id="block-simplenews-65" class="block block-simplenews">
-  <div class="block-inner">
-  
-  <div class="block-content">
-        <p>Recevez la lettre d'information</p>
-  
-      <form 
-action="/emission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg"
- accept-charset="UTF-8" method="post" id="simplenews-block-form-65">
-<div><div class="form-item" id="edit-mail-1-wrapper">
- <label for="edit-mail-1">E-mail&nbsp;: <span class="form-required" 
-title="Ce champ est obligatoire.">*</span></label>
- <input maxlength="128" name="mail" id="edit-mail-1" size="20" 
-value="identifiant@mail.com" class="form-text required idleField" 
-type="text">
-</div>
-<div class="form-radios"><div class="form-item" 
-id="edit-action-subscribe-wrapper">
- <label class="option" for="edit-action-subscribe"><input 
-id="edit-action-subscribe" name="action" value="subscribe" 
-checked="checked" class="form-radio" type="radio"> S'abonner</label>
-</div>
-<div class="form-item" id="edit-action-unsubscribe-wrapper">
- <label class="option" for="edit-action-unsubscribe"><input 
-id="edit-action-unsubscribe" name="action" value="unsubscribe" 
-class="form-radio" type="radio"> Se désabonner</label>
-</div>
-</div><input name="submit" value="Enregistrer" id="edit-submit-1" 
-class="form-submit submit" src="emission_fichiers/inscription.png" 
-type="image">
-<input name="form_build_id" id="form-d495e634489f3be0bd7ebbe9bf42e037" 
-value="form-d495e634489f3be0bd7ebbe9bf42e037" type="hidden">
-<input name="form_id" id="edit-simplenews-block-form-65" 
-value="simplenews_block_form_65" type="hidden">
-
-</div></form>
-  
-  
-  
-    </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
-            <div class="search"><form 
-action="/emission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg"
- accept-charset="UTF-8" method="post" id="antidot-search-block-form-1">
-<div><div class="form-item" id="search_top_page-wrapper">
- <label for="search_top_page">Cherchez sur France Culture&nbsp;: </label>
- <input maxlength="128" name="antidot_search_block_form" 
-id="search_top_page" size="15" title="Entrez les termes que vous voulez 
-rechercher." autocomplete="off" class="form-text idleField" type="text">
-</div>
-<input name="op" id="edit-submit" value="Recherche" class="submit 
-rollover" src="emission_fichiers/search-submit.png" alt="Rechercher" 
-height="26" type="image" width="26"><input name="form_build_id" 
-id="form-0fb0ec9e93007e0870ba7f8b130bd7f7" 
-value="form-0fb0ec9e93007e0870ba7f8b130bd7f7" type="hidden">
-<input name="form_id" id="edit-antidot-search-block-form-1" 
-value="antidot_search_block_form" type="hidden">
-
-</div></form>
-</div>            
-            <!--block de navigation secondaire -->
-            <a name="acces-navigation-secondaire"></a><a href="#top" 
-class="back-to-top">retour en haut de page</a>
-            <ul class="" id="menu-top"><li class="leaf first menu-top"><a
- href="http://www.franceculture.com/quelisentils" title="" accesskey="b">Que
- lisent-ils ?</a></li>
-<li class="leaf  menu-top"><a 
-href="http://www.franceculture.com/votre-agenda" title="" accesskey="b">Votre
- agenda Culture</a></li>
-<li class="leaf  menu-top"><a 
-href="http://www.franceculture.com/culture-academie" title="" 
-accesskey="b">Culture Académie</a></li>
-<li class="leaf  menu-top login"><a 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- title="Connexion [Popup]" alt="Connexion" class="popups-form-reload 
-popups-processed" accesskey="b">Connexion</a></li>
-<li class="leaf last menu-top register"><a 
-href="http://www.franceculture.com/user/register-profile" title="pas 
-encore membre ? [Popup]" alt="pas encore membre ?" 
-class="popups-form-reload popups-processed" accesskey="b">pas encore 
-membre ?</a></li>
-</ul>            <!-- block de navigation principale -->
-            <a name="acces-navigation-primaire"></a><a href="#top" 
-class="back-to-top">retour en haut de page</a>
-            <ul class="" id="menu-principal"><li class="leaf first 
-menu-principal"><a 
-href="http://www.franceculture.com/rubrique/information" title="" 
-accesskey="b">Information</a></li>
-<li class="leaf  menu-principal"><a 
-href="http://www.franceculture.com/rubrique/litt%C3%A9rature" title="" 
-accesskey="b">Littérature</a></li>
-<li class="leaf  menu-principal"><a 
-href="http://www.franceculture.com/rubrique/id%C3%A9es" title="" 
-accesskey="b">Idées</a></li>
-<li class="leaf  menu-principal"><a 
-href="http://www.franceculture.com/rubrique/arts-spectacles" title="" 
-accesskey="b">Arts et spectacles</a></li>
-<li class="leaf  menu-principal"><a 
-href="http://www.franceculture.com/rubrique/histoire" title="" 
-accesskey="b">Histoire</a></li>
-<li class="leaf  menu-principal"><a 
-href="http://www.franceculture.com/rubrique/sciences" title="" 
-accesskey="b">Sciences</a></li>
-<li class="leaf  first menu-action"><a 
-href="http://www.franceculture.com/podcasts" title="" accesskey="b">Podcasts</a></li>
-<li class="leaf  menu-action"><a 
-href="http://www.franceculture.com/emissions/titre" title="" 
-accesskey="b">Emissions</a></li>
-<li class="leaf last menu-action"><a 
-href="http://www.franceculture.com/grille-des-programmes/" title="" 
-accesskey="b">Programmes</a></li>
-</ul>            
-    <div id="x02">
-      <script language="JavaScript">
-        <!--
-        OAS_AD("x02");
-        //-->
-      </script>
-    </div>        </div><!-- /header -->
-        
-        <!-- début du contenu -->   
-        <div id="main"><a name="acces-contenu"></a><a href="#top" 
-class="back-to-top">retour en haut de page</a>
-            
-            <div id="content">
-                                                                      
-                <div id="content-inner">
-                                    <div id="content-top">
-                      <div id="block-fcbloc-emission-header" 
-class="block block-fcbloc">
-  <div class="block-inner">
-  
-  <div class="block-content">
-  
-	<div class="bandeau">
-		<h1 class="theme1-130">Les Retours du dimanche 
-			<a href="http://www.franceculture.com/emission/1232581/rss" 
-class="feed-icon"><img src="emission_fichiers/picto-rss.gif" 
-alt="Syndiquer le contenu" title="Les Retours du dimanche " height="16" 
-width="16"></a>
-			<span class="emission-producteurs">par <a 
-href="http://www.franceculture.com/personne-caroline-brou%C3%A9.html">Caroline
- Broué</a>, <a 
-href="http://www.franceculture.com/personne-herve-gardette.html">Hervé 
-Gardette</a></span>
-			<a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche.html"
- class="site" title="Les Retours du dimanche ">Le site de l'émission</a>
-		</h1>
-		<div class="image">
-		<img src="emission_fichiers/retour_dimanche.png" alt="Les Retours du 
-dimanche " title="" height="100" width="640">
-		<a href="http://www.franceculture.com/podcast/1232581" title="Les 
-Retours du dimanche "><img 
-src="emission_fichiers/culture_les_retours_du_dimanche.jpg" 
-alt="Emission Les Retours du dimanche " title="" class="illu-small" 
-height="75" width="75"></a>
-		</div>
-		<p>le dimanche de 18h10 à 19h </p>
-	</div>
-		  </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
- 
-                  </div>
-                                                      
-                  <div id="node-2347301" class="node node-rf_diffusion">
-
-	
-	  	  <div class="titre-plus">
-	    <div class="listen">
-                  <a class="rf-player-open rf-player-open-processed" 
-href="http://www.franceculture.com/player?p=reecoute-2347301#reecoute-2347301">
-            <img alt="Ecoutez l'émission" 
-src="emission_fichiers/listen.png" height="78" width="78">
-          </a>
-	  <span>50 minutes</span>
-        	    </div>
-	    <h2 class="title">
-	      Le salaire de la politique ; les vuvuzelas ; l'actualité 
-politique belge          	      <a class="num-com" href="#comments">
-	          <span>0</span>
-	        </a>
-        	    </h2>
-	    <p>
-	      <span class="date">20.06.2010 - 18:10</span>
-	      	    </p>
-	    <div class="clear"></div>
-	    	  </div>
-	  	  	
-	  	
-	  	  <span class="print-link"></span><div class="field 
-field-type-multimedia-editorial-element field-field-contenu">
-    <div class="field-items">
-            <div class="field-item odd">
-                    <div class="dnd-drop-wrapper">
-
-  
-  <div class="image atom-Image">
-      <img class="dnd-dropped" src="emission_fichiers/Garrigou.jpg" 
-alt="">
-      <div class="opaque"><p>le sociologue Alain Garrigou <span>©Radio 
-France</span></p></div>
-  </div>
-  
-
-</div><p>Au sommaire des <strong>Retours du dimanche </strong>:</p><p>&nbsp;</p><p>La
-
-
- revue 
-d'actualités : rappel des petits et grands évènements de la semaine. : <a
- title=" ça s'est passé cette semaine" 
-href="http://www.franceculture.com/2010-06-19-20-juin-2010-ca-s-039-est-passe-cette-semaine.html">il
- faut reconnaître un mérite à Raymond Domenech et à ses joueurs...</a></p><p>&nbsp;</p><p>L'entretien
-
-
-
- : "<a href="#t=700">Le salaire de la politique</a>", <span><span 
-class="262252614-17062010">après que la question de la rémunération des 
-politiques a été posée par le 
-premier ministre&nbsp;cette semaine. Invité : </span></span>l'historien 
-et professeur en science politique <strong>Alain Garrigou</strong>, 
-auteur de <em>Mourir pour des Idées, la vie posthume d'Alphone Baudin</em>,
- paru aux éditions Les Belles Lettres en avril 2010.</p><p>&nbsp;</p><p>&nbsp;</p>
- 
- <!-- START Integration testing  ###################################### --> 
- <!-- IRI PLAYER EXPERIMENTATION --> 
-	
-	<script type="text/javascript" src="../build/LdtPlayer-release.js"></script> 
-	
-	<div id="LdtPlayer"></div> 
-	
-	<script  type="text/javascript">	
-		var config = {
-						metadata:{
-							format:'cinelab',
-							src:'http://exp.iri.centrepompidou.fr/franceculture/franceculture/ldt/cljson/id/ef4dcc2e-8d3b-11df-8a24-00145ea4a2be',
-							load:'jsonp'},
-						gui:{
-							width:650,
-							height:1,
-							mode:'radio',
-							container:'LdtPlayer',
-							debug:false,
-							css:'../src/css/LdtPlayerFc.css'},
-						player:{
-							type:'jwplayer',
-							src:'../res/swf/player.swf'}
-					};
-		__IriSP.init(config);     
-	</script> 
- 
- 
-<!-- END  ###################################### ####################################--> 
- 
- <br/>
- 
- <p> <a href="#t=1773">La
- revue de 
-presse </a>: les <strong>vuvuzelas comme phénomène identitaire</strong>, ces
- trompettes qui occupent le fond sonore de tous les matchs de la coupe 
-du monde de football qui se déroule en ce moment en Afrique du Sud.<br>
-<br> <a href="#t=1846"> La bulle sonore :</a><strong> Patrick Roegiers</strong><strong> </strong>pour revenir
- sur<strong> l'actualité politique en Belgique. </strong>Notre invité 
-est romancier, auteur de <em>La Belgique, Le roman d'un pays</em>, paru 
-chez Découvertes Gallimard en 2005, et <em>Le mal du pays, autoportrait 
-de la Belgique</em>, publié au Seuil en 2003. Il a récemment publié <em>La
- Nuit du Monde</em>, au Seuil en janvier 2010.</p><p>&nbsp;</p><p>
- <a href="#t=2647">La 
-chronique d'Anthony Bellanger de </a> <strong>Courrier
- 
-International.</strong></p> 
-<p><br>Et comme chaque semaine : le sujet choisi par l'invité, notre 
-choix pour 
-la semaine à venir...</p>        </div>
-        </div>
-</div>
-	            <div class="clear"></div>
-	  
-          <p class="invites">Invités :<br>
-      <a 
-href="http://www.franceculture.com/personne-alain-garrigou.html">Alain 
-Garrigou</a>, professeur agrégé d'histoire et docteur en science 
-politique à l'université de Paris-X Nanterre<br><a 
-href="http://www.franceculture.com/personne-patrick-roegiers.html">Patrick
- Roegiers</a>      </p>
-        	    <p class="theme">Thèmes : 
-        <a href="http://www.franceculture.com/rubrique/information" 
-title="">Information</a>| <a 
-href="http://www.franceculture.com/theme/d%C3%A9bat" title="">Débat</a>|
- <a href="http://www.franceculture.com/theme/gouvernement" title="">Gouvernement</a>|
- <a 
-href="http://www.franceculture.com/theme/sciences-dures-et-sciences-humaines/histoire"
- title="">Histoire</a>      </p>
-	  	  	  	  	  <div class="rel-doc">
-	    <h2 class="titre-barre"><span>Documents</span></h2>
-	    <ul><li><p>
-  <a 
-href="http://www.franceculture.com/oeuvre-mourir-pour-des-idees-la-vie-posthume-d-alphone-baudin-de-alain-garrigou.html">
-    Mourir pour des idées, la vie posthume d'Alphone Baudin  </a>
-  <a href="http://www.franceculture.com/personne-alain-garrigou.html">Alain
- Garrigou</a>  <span>
-  Belles lettres,   2010  </span>
-  </p>
-<a 
-href="http://www.franceculture.com/oeuvre-mourir-pour-des-idees-la-vie-posthume-d-alphone-baudin-de-alain-garrigou.html">
-  <img src="emission_fichiers/baudin.jpg" alt="" title="" 
-class="imagecache imagecache-oeuvre_image_liste" height="143" width="95"></a>
-</li><li><p>
-  <a 
-href="http://www.franceculture.com/oeuvre-les-elites-contre-la-republique-histoire-et-mutations-de-sciences-po-et-de-l-ena-de-alain-gar">
-    Les élites contre la République : histoire et mutations de Sciences 
-Po et de l'ENA  </a>
-  <a href="http://www.franceculture.com/personne-alain-garrigou.html">Alain
- Garrigou</a>  <span>
-  Editions La découverte,     </span>
-  </p>
-<a 
-href="http://www.franceculture.com/oeuvre-les-elites-contre-la-republique-histoire-et-mutations-de-sciences-po-et-de-l-ena-de-alain-gar">
-  <img 
-src="emission_fichiers/les_lites_contre_la_rpublique_histoire_et_mutations_de_scien.jpg"
- alt="" title="" class="imagecache imagecache-oeuvre_image_liste" 
-height="157" width="95"></a>
-</li><li><p>
-  <a 
-href="http://www.franceculture.com/oeuvre-le-mal-du-pays-autobiographie-de-la-belgique-de-patrick-roegiers.html">
-    Le mal du pays : autobiographie de la Belgique  </a>
-  <a href="http://www.franceculture.com/personne-patrick-roegiers.html">Patrick
- Roegiers</a>  <span>
-  Seuil,   2003  </span>
-  </p>
-<a 
-href="http://www.franceculture.com/oeuvre-le-mal-du-pays-autobiographie-de-la-belgique-de-patrick-roegiers.html">
-  <img 
-src="emission_fichiers/le_mal_du_pays_autobiographie_de_la_belgique20100424.jpg"
- alt="" title="" class="imagecache imagecache-oeuvre_image_liste" 
-height="161" width="95"></a>
-</li><li style="display: none;" class="more-liste liste-clear"></li><li 
-style="display: none;" class="more-liste"><p>
-  <a 
-href="http://www.franceculture.com/oeuvre-la-nuit-du-monde-de-patrick-roegiers.html">
-    La nuit du monde  </a>
-  <a href="http://www.franceculture.com/personne-patrick-roegiers.html">Patrick
- Roegiers</a>  <span>
-  Seuil,   2010  </span>
-  </p>
-<a 
-href="http://www.franceculture.com/oeuvre-la-nuit-du-monde-de-patrick-roegiers.html">
-  <img src="emission_fichiers/la_nuit_du_monde20100423.jpg" alt="" 
-title="" class="imagecache imagecache-oeuvre_image_liste" height="143" 
-width="95"></a>
-</li><li style="display: none;" class="more-liste"><p>
-  <a 
-href="http://www.franceculture.com/oeuvre-l-evangile-selon-jesus-christ-de-jose-saramago.html">
-    L'évangile selon Jésus-Christ  </a>
-  <a 
-href="http://www.franceculture.com/personne-jos%C3%A9-saramago.html">José
- Saramago</a>  <span>
-  Ed. du Seuil - coll. Points,   2000  </span>
-  </p>
-<a 
-href="http://www.franceculture.com/oeuvre-l-evangile-selon-jesus-christ-de-jose-saramago.html">
-  <img src="emission_fichiers/97820204039860-2000020811.jpg" alt="" 
-title="" class="imagecache imagecache-oeuvre_image_liste" height="158" 
-width="95"></a>
-</li></ul><div class="clear"></div><a style="background: 
-url(&quot;/sites/all/themes/franceculture/images/urg-down.png&quot;) 
-no-repeat scroll 100% 4px transparent;" class="more-doc">voir les 5 
-documents</a>	  </div>
-	  	  	<div class="clear"></div>
-	</div> <!-- /node -->
-  <div id="comments" class="com">
-    <h2 class="titre-barre"><span>0 commentaire</span></h2>
-    <div class="box">
-          <h2 class="title titre-barre"><span>Votre commentaire</span></h2>
-        <form action="/comment/reply/2347301" accept-charset="UTF-8" 
-method="post" id="comment-form">
-<div><div class="form-item" id="edit-name-wrapper">
- <label for="edit-name">votre nom&nbsp;: </label>
- <input maxlength="60" name="name" id="edit-name" size="30" 
-value="Anonyme" class="form-text idleField" type="text">
-</div>
-<div class="form-item" id="edit-mail-wrapper">
- <label for="edit-mail">votre adresse électronique&nbsp;: </label>
- <input maxlength="64" name="mail" id="edit-mail" size="30" 
-class="form-text idleField" type="text">
-</div>
-<div class="form-item" id="edit-comment-wrapper">
- <label for="edit-comment">votre commentaire&nbsp;: <span 
-class="form-required" title="Ce champ est obligatoire.">*</span></label>
- <div class="resizable-textarea"><span><textarea cols="60" rows="15" 
-name="comment" id="edit-comment" class="form-textarea resizable required
- clearonfocus textarea-processed">Tapez ici vos commentaires</textarea><div
- style="margin-right: -33px;" class="grippie"></div></span></div>
-</div>
-<div class="wysiwyg wysiwyg-format-5 wysiwyg-editor-none 
-wysiwyg-field-edit-comment wysiwyg-status-1 wysiwyg-toggle-1 
-wysiwyg-resizable-1"> </div><input name="form_build_id" 
-id="form-3d46a280b7c4d6960ed80ba3c5ae0418" 
-value="form-3d46a280b7c4d6960ed80ba3c5ae0418" type="hidden">
-<input name="form_id" id="edit-comment-form" value="comment_form" 
-type="hidden">
-<input name="op" id="edit-submit" value="Envoyer" class="form-submit" 
-type="submit"><div id="saving"><p class="saving">Enregistrement des 
-données…</p></div>
-<input name="op" id="edit-preview" value="Aperçu" class="form-submit" 
-type="submit">
-
-</div></form>
-</div> <!-- /box -->
-  </div>
- <!-- /comment wrapper -->
-<div id="block-print-0" class="block block-print">
-  <div class="block-inner">
-  
-  <div class="block-content">
-  <span class="print_html"><a 
-href="http://www.franceculture.com/print/463861" title="Imprimer le 
-contenu" class="print-page" onclick="window.open(this.href); return 
-false" rel="nofollow">imprimer</a></span>  </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
-<div id="share" class="block block-addthis share-script">
-  
-		<div class="addthis_toolbox addthis_default_style">
-			<a class="addthis_button_email share-mail at300b" title="partager par
- courier"><span class="at300bs at15t_email"></span>envoyer par courriel</a>
-			
-			<span class="more-services">
-				<a title="Send to Facebook" target="_blank" 
-href="http://www.addthis.com/bookmark.php?pub=&amp;v=250&amp;source=tbx-250&amp;tt=0&amp;s=facebook&amp;url=http%3A%2F%2Fwww.franceculture.com%2Femission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg&amp;title=Le%20salaire%20de%20la%20politique%20%3B%20les%20vuvuzelas%20%3B%20l%27actualit%C3%A9%20politique%20belge%20-%20Information%20-%20France%20Culture&amp;content=&amp;sms_ss=1&amp;lng=fr"
- class="addthis_button_facebook share-services at300b"><span 
-class="at300bs at15t_facebook"></span>facebook</a>
-				<a title="Tweet This" target="_blank" 
-href="http://www.addthis.com/bookmark.php?pub=&amp;v=250&amp;source=tbx-250&amp;tt=0&amp;s=twitter&amp;url=http%3A%2F%2Fwww.franceculture.com%2Femission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg&amp;title=Le%20salaire%20de%20la%20politique%20%3B%20les%20vuvuzelas%20%3B%20l%27actualit%C3%A9%20politique%20belge%20-%20Information%20-%20France%20Culture&amp;content=&amp;sms_ss=1&amp;lng=fr"
- class="addthis_button_twitter share-services at300b"><span 
-class="at300bs at15t_twitter"></span>twitter</a>
-				<a title="Send to Netvibes" target="_blank" 
-href="http://www.addthis.com/bookmark.php?pub=&amp;v=250&amp;source=tbx-250&amp;tt=0&amp;s=netvibes&amp;url=http%3A%2F%2Fwww.franceculture.com%2Femission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg&amp;title=Le%20salaire%20de%20la%20politique%20%3B%20les%20vuvuzelas%20%3B%20l%27actualit%C3%A9%20politique%20belge%20-%20Information%20-%20France%20Culture&amp;content=&amp;sms_ss=1&amp;lng=fr"
- class="addthis_button_netvibes share-services at300b"><span 
-class="at300bs at15t_netvibes"></span>netvibes</a>
-				<a title="Send to Delicious" target="_blank" 
-href="http://www.addthis.com/bookmark.php?pub=&amp;v=250&amp;source=tbx-250&amp;tt=0&amp;s=delicious&amp;url=http%3A%2F%2Fwww.franceculture.com%2Femission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg&amp;title=Le%20salaire%20de%20la%20politique%20%3B%20les%20vuvuzelas%20%3B%20l%27actualit%C3%A9%20politique%20belge%20-%20Information%20-%20France%20Culture&amp;content=&amp;sms_ss=1&amp;lng=fr"
- class="addthis_button_delicious share-services at300b"><span 
-class="at300bs at15t_delicious"></span>delicious</a>
-			</span>
-			<a style="background: 
-url(&quot;/sites/all/themes/franceculture/images/share-more.png&quot;) 
-no-repeat scroll 100% 4px transparent;" href="#" title="plus d'actions 
-de partage" class="share-more">partager</a>
-		<div class="atclear"></div></div>
-		<script type="text/javascript" src="emission_fichiers/addthis_widget.js"></script>
-		</div>
- 
-                  
-                  <div class="clear"></div>
-               </div> <!-- /content-inner -->
-                
-                            
-            </div> <!-- /content -->
-            
-                        <!-- début de sidebar-right -->   
-            <div id="sidebar-right"><a name="acces-right"></a><a 
-href="#top" class="back-to-top">retour en haut de page</a>
-               <div id="block-fc_bloc_direct-direct" class="block 
-block-fc_bloc_direct block-ecoute">
-  <div class="block-inner">
-      <h2 class="titre-barre"><span>Ecoutez France Culture</span></h2>
-    <div class="content"><div class="context">
-	<a href="http://www.franceculture.com/player" title="écouter le direct"
- class="rf-player-open img-float rf-player-open-processed">
-		<img src="emission_fichiers/direct.png" alt="écouter le direct" 
-height="72" width="72">
-	</a>
-	<h3>
-		<span class="timer"><a href="http://www.franceculture.com/player" 
-class="rf-player-open rf-player-open-processed">En direct</a></span>
-		<a class="rf-player-open rf-player-open-processed" 
-href="http://www.franceculture.com/player" title="écouter le direct">Sur
- France Culture</a>
-		<a class="rf-player-open rf-player-open-processed" 
-href="http://www.franceculture.com/player" title="écouter le direct"></a>
-	</h3>
-	<p></p>
-	<div class="clear"></div>
-</div>
-<p>
-	<span class="timer"></span>
-	
-</p>
-<p class="auteur">
-	
-</p>
-</div>
-    </div>
-</div><div id="block-fcbloc-emission-equipe" class="block block-fcbloc">
-  <div class="block-inner">
-      <h2 class="title"><span>L'équipe</span></h2>
-  
-  <div class="block-content">
-  <div class="item-list"><ul><li class="first">
-			<h3>Production</h3>
-			<p><a 
-href="http://www.franceculture.com/personne-caroline-brou%C3%A9.html">Caroline
- Broué</a>, <a 
-href="http://www.franceculture.com/personne-herve-gardette.html">Hervé 
-Gardette</a></p>
-			</li>
-<li>
-			<h3>Réalisation</h3>
-			<p>Jean-Christophe Francis</p>
-			</li>
-<li>
-			<h3>Collaboratrice(s) Spécialisée(s)</h3>
-			<p>Soline Ledésert</p>
-			</li>
-<li class="last">
-			<h3>Chronique(s)</h3>
-			<p><a 
-href="http://www.franceculture.com/personne-anthony-bellanger.html">Anthony
- Bellanger</a></p>
-			</li>
-</ul></div>  </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
-<div id="block-fcbloc-publicite" class="block block-fcbloc">
-  <div class="block-inner">
-  
-  <div class="block-content">
-  <p class="pub-notice">publicité</p><div class="pub-inner"><script language="JavaScript">
-<!--
-OAS_AD("Middle");
-//-->
-</script>&nbsp;</div>  </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
-<div id="block-fcbloc-sur-le-meme-theme" class="block block-fcbloc">
-  <div class="block-inner">
-      <h2 class="title"><span>Sur le même thème</span></h2>
-  
-  <div class="block-content">
-  <div class="view view-commun-fo-blocs-full-node 
-view-id-commun_fo_blocs_full_node view-display-id-page_1 view-dom-id-12">
-    
-  
-  
-      <div class="view-content">
-        <ul>
-    <li class="first odd">
-      
-  
-    
-      <a 
-href="http://www.franceculture.com/culture-ac-seminaire-d%E2%80%99antoine-compagnon-ecrire-la-vie-26.html">Écrire
- la vie (2/6)</a>
-  
-
-      <span class="date">
-  
-    
-      <div class="clear"></div>
-00:00
-
-      </span>
-  
-    </li>
-      <li class="even">
-      
-  
-    
-      <a 
-href="http://www.franceculture.com/emission-dossier-du-jour-conference-des-donateurs-a-kaboul-2010-07-20.html">Conférence
- des donateurs à Kaboul</a>
-  
-
-      <p>
-  
-    
-      <a 
-href="http://www.franceculture.com/emission-dossier-du-jour.html"> 
-Dossier du jour </a>
-      </p>
-  
-
-      <span class="date">
-  
-    
-      <div class="clear"></div>
-À écouter le 19.07.2010
-
-      </span>
-  
-
-      <span>
-  
-    
-      <span class="timer"><span class="date-display-single">4</span> 
-min.</span>
-      </span>
-  
-    </li>
-      <li class="last odd">
-      
-  
-    
-      <a 
-href="http://www.franceculture.com/emission-place-de-la-toile-lift-marseille-2010-07-24.html">Lift
- Marseille</a>
-  
-
-      <p>
-  
-    
-      <a 
-href="http://www.franceculture.com/emission-place-de-la-toile.html">Place
- de la toile</a>
-      </p>
-  
-
-      <span class="date">
-  
-    
-      <div class="clear"></div>
-À écouter le 16.07.2010
-
-      </span>
-  
-
-      <span>
-  
-    
-      <span class="timer"><span class="date-display-single">59</span> 
-min.</span>
-      </span>
-  
-    </li>
-    </ul>
-    </div>
-  
-  
-  
-  
-  
-  
-</div>   </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
-<div id="block-views-diffusion_fo_blocs-block_1" class="block 
-block-views">
-  <div class="block-inner">
-      <h2 class="title"><span>Dernières diffusions</span></h2>
-  
-  <div class="block-content">
-  <div class="view view-diffusion-fo-blocs view-id-diffusion_fo_blocs 
-view-display-id-block_1 view-dom-id-13">
-    
-  
-  
-      <div class="view-content">
-      <div class="item-list">
-    <ul>
-          <li class="views-row views-row-1 views-row-odd 
-views-row-first">  
-  <div class="views-field-title-1">
-                <span class="field-content"><a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche-les-retours-du-dimanche-best-of-12-2010-07-18.html">LES
- RETOURS DU DIMANCHE - Best of 1/2</a></span>
-  </div>
-  
-  <div class="views-field-field-contenu-value">
-                <span class="field-content"><a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche-les-retours-du-dimanche-best-of-12-2010-07-18.html"
- title="Audio"><img src="emission_fichiers/picto-ecoute-rouge.png" 
-alt="Écouter l'émission" title="Écouter l'émission" class="pictos 
-rollover" height="15" width="15"></a><a title="[Popup]" 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- class="popups-form-reload popups-processed"><img 
-src="emission_fichiers/more-red.png" alt="Ajouter à ma liste de lecture"
- title="Ajouter à ma liste de lecture" class="pictos rollover" 
-height="15" width="15"></a><a 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- title="Mobile [Popup]" class="popups-form-reload popups-processed"><img
- src="emission_fichiers/picto-mobile.png" alt="Recevoir l'émission sur 
-mon mobile" title="Recevoir l'émission sur mon mobile" class="pictos 
-rollover" height="15" width="15"></a></span>
-  </div>
-  
-  <span class="views-field-field-diffusion-date-debut-fin-value">
-                <span class="field-content"><span 
-class="date-display-single">18.07.2010</span></span>
-  </span>
-  
-  <span class="views-field-field-diffusion-date-debut-fin-value-1">
-                <span class="field-content"><span class="timer"><span 
-class="date-display-single">49</span> min.</span></span>
-  </span>
-</li>
-          <li class="views-row views-row-2 views-row-even">  
-  <div class="views-field-title-1">
-                <span class="field-content"><a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche-medias-et-democratie-quel-est-le-role-du-journaliste-le-declin-du-m">Médias
- et démocratie: quel est le rôle du journaliste ? ; le déclin du 
-ministère des affaires étrangères ; les Roms</a></span>
-  </div>
-  
-  <div class="views-field-field-contenu-value">
-                <span class="field-content"><a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche-medias-et-democratie-quel-est-le-role-du-journaliste-le-declin-du-m"
- title="Audio"><img src="emission_fichiers/picto-ecoute-rouge.png" 
-alt="Écouter l'émission" title="Écouter l'émission" class="pictos 
-rollover" height="15" width="15"></a><a title="[Popup]" 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- class="popups-form-reload popups-processed"><img 
-src="emission_fichiers/more-red.png" alt="Ajouter à ma liste de lecture"
- title="Ajouter à ma liste de lecture" class="pictos rollover" 
-height="15" width="15"></a><a 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- title="Mobile [Popup]" class="popups-form-reload popups-processed"><img
- src="emission_fichiers/picto-mobile.png" alt="Recevoir l'émission sur 
-mon mobile" title="Recevoir l'émission sur mon mobile" class="pictos 
-rollover" height="15" width="15"></a></span>
-  </div>
-  
-  <span class="views-field-field-diffusion-date-debut-fin-value">
-                <span class="field-content"><span 
-class="date-display-single">11.07.2010</span></span>
-  </span>
-  
-  <span class="views-field-field-diffusion-date-debut-fin-value-1">
-                <span class="field-content"><span class="timer"><span 
-class="date-display-single">50</span> min.</span></span>
-  </span>
-</li>
-          <li class="views-row views-row-3 views-row-odd views-row-last">
-  
-  <div class="views-field-title-1">
-                <span class="field-content"><a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche-qu-est-ce-qu-une-decouverte-scientifique-l-avenir-d-eric-woerth-au-">Qu'est-ce
- qu'une découverte scientifique ? ; l'avenir d'Eric Woerth au 
-gouvernement ; hommage à Laurent Terzieff ; Percy Kemp</a></span>
-  </div>
-  
-  <div class="views-field-field-contenu-value">
-                <span class="field-content"><a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche-qu-est-ce-qu-une-decouverte-scientifique-l-avenir-d-eric-woerth-au-"
- title="Audio"><img src="emission_fichiers/picto-ecoute-rouge.png" 
-alt="Écouter l'émission" title="Écouter l'émission" class="pictos 
-rollover" height="15" width="15"></a><a title="[Popup]" 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- class="popups-form-reload popups-processed"><img 
-src="emission_fichiers/more-red.png" alt="Ajouter à ma liste de lecture"
- title="Ajouter à ma liste de lecture" class="pictos rollover" 
-height="15" width="15"></a><a 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- title="Mobile [Popup]" class="popups-form-reload popups-processed"><img
- src="emission_fichiers/picto-mobile.png" alt="Recevoir l'émission sur 
-mon mobile" title="Recevoir l'émission sur mon mobile" class="pictos 
-rollover" height="15" width="15"></a></span>
-  </div>
-  
-  <span class="views-field-field-diffusion-date-debut-fin-value">
-                <span class="field-content"><span 
-class="date-display-single">04.07.2010</span></span>
-  </span>
-  
-  <span class="views-field-field-diffusion-date-debut-fin-value-1">
-                <span class="field-content"><span class="timer"><span 
-class="date-display-single">50</span> min.</span></span>
-  </span>
-</li>
-      </ul>
-</div>    </div>
-  
-  
-  
-  
-  
-  
-</div>   </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
- 
-            </div> <!-- /sidebar-right -->
-                    
-        <div class="clear"></div>
-        </div> <!-- /main -->
-
-        <!-- début du footer -->   
-        <div id="footer-top"><a name="acces-footer"></a><a href="#top" 
-class="back-to-top">retour en haut de page</a>
-           
-        <br class="clear">
-<div id="pub-bottom-right">
-           <div id="block-fcbloc-footer-adsense" class="block 
-block-fcbloc">
-  <div class="block-inner">
-  
-  <div class="block-content">
-  
-            <script language="JavaScript">
-            <!--
-              OAS_AD("BottomRight");
-            //-->
-            </script>  </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
-         </div>
-        </div> <!-- /footer -->
-    
-    </div> <!-- /page-inner -->
-</div> <!-- /page -->
-  <div id="footer-commun" class="header-footer footer-franceculture"><div
- class="content-header-footer"><div id="footer-chaine"><div 
-id="colonne-liens-footer" class="colonne-footer colonne-footer-first"><a
- href="http://www.franceculture.com/"><img 
-src="emission_fichiers/franceculture.png" alt="logo de franceculture"></a><p><a
- href="http://www.franceculture.com/sitemap">plan du site</a></p><p><a 
-href="http://www.franceculture.com/a_propos">à propos</a></p><p><a 
-href="http://www.franceculture.com/contact">contact</a></p></div><!--fin de div colonne-liens-footer--><div
- id="colonne-ecouter-footer" class="colonne-footer"><h4>écouter</h4><ul><li
- class="color-chaine "><a href="http://www.franceculture.com/player" 
-class="rf-player-open rf-player-open-processed">direct</a></li><li><a 
-href="http://www.franceculture.com/programmes">grille</a></li><li><a 
-href="http://www.franceculture.com/frequences">fréquences</a></li><li><a
- href="http://www.franceculture.com/podcasts">podcasts</a></li><li><a 
-href="http://www.radiofrance.fr/boite-a-outils/widget/">applis</a></li><li><a
- href="http://www.radiofrance.fr/boite-a-outils/faq/">aide à l'écoute</a></li></ul></div><!--fin de div colonne-thematique-footer--><div
- id="colonne-thematique-footer" class="colonne-footer"><h4>thématiques</h4><ul><li><a
- href="http://www.franceculture.com/rubrique/information">information</a>
- - <span>économie, justice, politique française, relations 
-internationales</span></li><li><a 
-href="http://www.franceculture.com/rubrique/litterature">littérature</a>
- - <span>édition, poésie, prix littéraires, roman, théâtre</span></li><li><a
- href="http://www.franceculture.com/rubrique/idees">idées</a> - <span>débats,
- philosophie, sociologie</span></li><li><a 
-href="http://www.franceculture.com/rubrique/arts-spectacles">arts &amp; 
-spectacles</a> - <span>architecture, cinéma, danse, musique, spectacle, 
-télévision</span></li><li><a 
-href="http://www.franceculture.com/rubrique/histoire">histoire</a> - <span>histoire
- de l'art, histoire de France, histoire des idées, histoire des sciences</span></li><li><a
- href="http://www.franceculture.com/rubrique/sciences">sciences</a> - <span>astronomie,
- biologie, mathématiques, physique</span></li><li><a 
-href="http://www.franceculture.com/quelisentils">que lisent-ils</a> - <a
- href="http://www.franceculture.com/votre-agenda">votre agenda culturel</a>
- - <a href="http://www.franceculture.com/culture-academie">culture 
-académie</a> - <a href="http://www.franceculture.com/blogs">les blogs</a></li></ul></div><!--fin de div colonne-partager-footer--><div
- id="colonne-partager-footer" class="colonne-footer colonne-footer-last"><div
- id="liens-partage-footer"><h4>nous rejoindre</h4><ul><li 
-id="facebook-footer"><a 
-href="http://www.facebook.com/pages/FRANCE-CULTURE/83625483348?ref=ts" 
-class="gris">facebook</a></li><li id="twitter-footer"><a 
-href="http://www.twitter.com/france_culture" class="gris">twitter</a></li><li
- id="dailymotion-footer"><a 
-href="http://www.dailymotion.com/franceculture" class="gris">dailymotion</a></li><li
- class="clearer">&nbsp;</li></ul></div><!--fin de bloc 1--><div><h4>s'abonner</h4><span><a
- href="http://www.franceculture.com/podcasts" class="gris">podcasts</a></span>
- - <span><a href="http://www.franceculture.com/la-lettre" 
-class="color-chaine">newsletter</a></span></div></div><!--fin de div colonne-partager-footer--><div
- class="clearer">&nbsp;</div></div><div id="sous-footer"><div 
-id="footer-rf"><ul><li class="first"><a 
-href="http://www.radiofrance.fr/">radiofrance.fr</a></li><li><a 
-href="http://www.radiofrance.fr/les-blogs/blog-du-mediateur/">médiateur</a></li><li><a
- href="http://www.radiofrance.fr/liens-bas-de-page/mentionslegales/">mentions
- légales</a></li><li class="last"><a 
-href="http://www.radiofrance.fr/boite-a-outils/frequences/">fréquences</a></li><li
- class="last-page"><span class="haut-de-page"><a href="#top-page-ancre" 
-id="top-page" class="gris">haut de page</a></span></li></ul><p>Radio 
-France décline toute responsabilité quant au contenu des sites proposés 
-en liens</p></div><!--fin de div footer-rf--></div></div></div>  <script type="text/javascript">
-<!--//--><![CDATA[//><!--
-$.post(Drupal.settings.basePath + 'jstats.php', {"path":"node\/2347301","nid":"2347301"});
-//--><!]]>
-</script>
-<!-- eStat -->
-<script language="JavaScript">
-<!--
-var _PJS=0;
-//-->
-</script>
-<script language="JavaScript" src="emission_fichiers/265074200838.js"></script>
-<script language="JavaScript">
-<!--
-if(_PJS)
-{
-  eStat_id.cmclient("franceculture");
-  eStat_id.niveau(1,"information");
-  eStat_id.niveau(2,"les-retours-du-dimanche");
-  eStat_id.niveau(3,"le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belge-2010-06-20");
-  eStat_id.niveau(4,"histoire-gouvernement-debat");
-  eStat_tag.post("ml");
-}
-//-->
-</script>
-<noscript>
-<img src="http://stat3.cybermonitor.com/franceculture_v?c=information&p=les-retours-du-dimanche&l3=le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belge-2010-06-20&l4=histoire-gouvernement-debatst=0&sjs=0" border="0" width="1" height="1" />
-</noscript>
-<!-- /eStat -->
-<!-- xiti -->
-<script type="text/javascript">
-<!--
-xtnv = document;        //parent.document or top.document or document         
-xtsd = "http://logp";
-xtsite = "24121";
-xtn2 = "3";   // level 2 site 
-xtpage ="Emissions::les-retours-du-dimanche::le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belge-2010-06-20";        //page name
-xtdi = "";        //implication degree
-//-->
-</script>
-
-<script type="text/javascript" src="emission_fichiers/xtcore.js"></script>
-
-<noscript>
-<img width="1" height="1" alt="" src="http://logp.xiti.com/hit.xiti?s=24121&s2=3&p=Emissions::les-retours-du-dimanche::le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belge-2010-06-20&di=&" >
-</noscript>
-<!-- /xiti -->
-</body><div style="display: none; width: 24px;" id="diigotb-imagepanel"><div
- class="diigotb-btn enabled" title="Save this image to Diigo" 
-id="diigotb-quick-save"></div></div><div style="display: none;" 
-class="diigotb-border diigotb-left"></div><div style="display: none;" 
-class="diigotb-border diigotb-top"></div><div style="display: none;" 
-class="diigotb-border diigotb-right"></div><div style="display: none;" 
-class="diigotb-border diigotb-bottom"></div></html>
\ No newline at end of file
--- a/test/indexFC2.htm	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1974 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html class="js" dir="ltr" xml:lang="fr" 
-xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><link media="all" 
-href="emission_fichiers/widget40.css" type="text/css" rel="stylesheet">
-
-
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<script type="text/javascript" src="emission_fichiers/swfobject.txt"></script>
-<meta name="afs:suggest/onload" content="onSuggestLoad()">
-<link rel="shortcut icon" 
-href="http://www.franceculture.com/sites/default/files/franceculture_favicon.png"
- type="image/x-icon">
-<link rel="alternate" type="application/rss+xml" title="Les Retours du 
-dimanche " href="http://www.franceculture.com/emission/1232581/rss">
-  <title>Le salaire de la politique ; les vuvuzelas ; l'actualité 
-politique belge - Information - France Culture</title>
-  <link type="text/css" rel="stylesheet" media="all" 
-href="emission_fichiers/css_e94d821d2c09c140834405452127e5ae.css">
-<link type="text/css" rel="stylesheet" media="screen" 
-href="emission_fichiers/css_bf9cf64d750be06f6006828a2bed7b98.css">
-<link type="text/css" rel="stylesheet" media="print" 
-href="emission_fichiers/css_8af77a07a1f960afe4e4736580827c7c.css">
-<!--[if lte IE 7]>
-<link type="text/css" rel="stylesheet" media="all" href="/sites/all/themes/franceculture/ie.css?y" />
-<link type="text/css" rel="stylesheet" media="all" href="/sites/all/themes/franceculture/footer2.css?y" />
-<![endif]-->
-  <script type="text/javascript" src="emission_fichiers/jquery_005.js"></script>
-<script type="text/javascript" src="emission_fichiers/drupal.js"></script>
-<script type="text/javascript" src="emission_fichiers/fr_4fb8f115d8d263374d07dafa1b2a40b5.js"></script>
-<script type="text/javascript" src="emission_fichiers/fc_widget_twitter.js"></script>
-<script type="text/javascript" src="emission_fichiers/youtube.js"></script>
-<script type="text/javascript" src="emission_fichiers/fivestar.js"></script>
-<script type="text/javascript" src="emission_fichiers/high.js"></script>
-<script type="text/javascript" src="emission_fichiers/fc_antidot_recherche.js"></script>
-<script type="text/javascript" src="emission_fichiers/panels.js"></script>
-<script type="text/javascript" src="emission_fichiers/popups_002.js"></script>
-<script type="text/javascript" src="emission_fichiers/popups.js"></script>
-<script type="text/javascript" src="emission_fichiers/tableheader.js"></script>
-<script type="text/javascript" src="emission_fichiers/comment.js"></script>
-<script type="text/javascript" src="emission_fichiers/textarea.js"></script>
-<script type="text/javascript" src="emission_fichiers/fc_bloc_direct.js"></script>
-<script type="text/javascript" src="emission_fichiers/ajax-responder.js"></script>
-<script type="text/javascript" src="emission_fichiers/jquery_006.js"></script>
-<script type="text/javascript" src="emission_fichiers/rf_player.js"></script>
-<script type="text/javascript" src="emission_fichiers/rollover.js"></script>
-<script type="text/javascript" src="emission_fichiers/jquery_002.js"></script>
-<script type="text/javascript" src="emission_fichiers/jquery_003.js"></script>
-<script type="text/javascript" src="emission_fichiers/jquery.js"></script>
-<script type="text/javascript" src="emission_fichiers/footer.js"></script>
-<script type="text/javascript" src="emission_fichiers/jquery_004.js"></script>
-<script type="text/javascript" src="emission_fichiers/script.js"></script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-jQuery.extend(Drupal.settings, {"basePath":"\/","fivestar":{"titleUser":"Your rating: ","titleAverage":"Average: ","feedbackSavingVote":"Saving your vote...","feedbackVoteSaved":"Your vote has been saved.","feedbackDeletingVote":"Deleting your vote...","feedbackVoteDeleted":"Your vote has been deleted."},"adresseProxy":"http:\/\/www.franceculture.com\/proxy","popups":{"originalPath":"node\/2347301","defaultTargetSelector":"#main","modulePath":"sites\/all\/modules\/contrib\/popups","autoCloseFinalMessage":1},"fc_bloc_direct":{"interval":60000,"refresh_on_load":1}});
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-
-function quelisentils_redirect() {
-  location.href = Drupal.settings.basePath + 'quelisentils/oeuvre/2169101#fc-quelisentils-comment-form';
-  location.reload(true);
-  return false;
-}
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-
-function quelisentils_redirect() {
-  location.href = Drupal.settings.basePath + 'quelisentils/oeuvre/778481#fc-quelisentils-comment-form';
-  location.reload(true);
-  return false;
-}
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-
-function quelisentils_redirect() {
-  location.href = Drupal.settings.basePath + 'quelisentils/oeuvre/1061061#fc-quelisentils-comment-form';
-  location.reload(true);
-  return false;
-}
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-
-function quelisentils_redirect() {
-  location.href = Drupal.settings.basePath + 'quelisentils/oeuvre/437741#fc-quelisentils-comment-form';
-  location.reload(true);
-  return false;
-}
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-
-function quelisentils_redirect() {
-  location.href = Drupal.settings.basePath + 'quelisentils/oeuvre/2357521#fc-quelisentils-comment-form';
-  location.reload(true);
-  return false;
-}
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-jQuery(document).ready(function() {
-    $(".more-doc").text("voir les 5 documents").css("background" , 'url("/sites/all/themes/franceculture/images/urg-down.png") no-repeat 100% 4px');
-    $(".rel-doc .more-liste").hide();
-    
-$(".more-doc").toggle(
-function(){
-$(".rel-doc .more-liste").show("slow");
-$(this).text("n'afficher que les 3 premiers").css("background" , 'url("/sites/all/themes/franceculture/images/urg-up.png") no-repeat 100% 4px');
-},
-function(){
-$(".rel-doc .more-liste").hide("slow");
-$(this).text("voir les 5 documents").css("background" , 'url("/sites/all/themes/franceculture/images/urg-down.png") no-repeat 100% 4px');
-});
-});
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
-
-    $(document).ready(function(){  
-      $('#cb-left').addClass('script-vertical');
-      $('#script-scroll').addClass('script');
-			$('#share').addClass('share-script');
-			$('.share-more').css('background' , 'url("/sites/all/themes/franceculture/images/share-more.png") no-repeat 100% 4px');
-
-			$('.share-more').toggle(
-				function(){
-					$('.share-script .more-services').addClass('active');
-					$(this).css('background' , 'url("/sites/all/themes/franceculture/images/share-less.png") no-repeat 100% 4px');
-				},
-				function(){
-					$('.share-script .more-services').removeClass('active');
-					$(this).css('background' , 'url("/sites/all/themes/franceculture/images/share-more.png") no-repeat 100% 4px');
-				}
-			);
-      $('span.more-services a.addthis_button_facebook').click(function() {
-        window.open(this.href, 'facebook-share', 'resizable=no,with=500,height=315');
-        return false;
-      });
-  });
-//--><!]]>
-</script>
-<script type="text/javascript">
-<!--//--><![CDATA[//><!--
- 
-    $.fn.cleartextonfocus = function() {
-    	return this.focus(function() {
-    		if(this.value == this.defaultValue) {
-    			this.value = '';
-    		}
-    	}).blur(function() {
-    		if(!this.value.length) {
-    			this.value = this.defaultValue;
-    		}
-    	});
-    };
-
-    $(document).ready(function(){
-      $('textarea.clearonfocus').cleartextonfocus();
-    });
-  
-//--><!]]>
-</script>
-  <!--[if lte IE 7]><script type="text/javascript" src="/sites/all/themes/franceculture/ie.js?y"></script><![endif]--><script language="JavaScript">
-<!--
-//configuration
-OAS_url ='http://pub.ftv-publicite.fr/RealMedia/ads/';
-OAS_listpos = 'Middle,x02,BottomRight';
-OAS_query = '?';
-OAS_sitepage = 'www.radiofrance.fr/franceculture/les-retours-du-dimanche';
-//end of configuration
-OAS_version = 10;
-OAS_rn = '001234567890'; OAS_rns = '1234567890';
-OAS_rn = new String (Math.random()); OAS_rns = OAS_rn.substring (2, 11);
-function OAS_NORMAL(pos) { 
-  document.write("<a href='" + OAS_url + "click_nx.ads/" + OAS_sitepage + "/1" + OAS_rns + "@" + OAS_listpos + "!" + pos + OAS_query + "' target=_top>");
-  document.write("<img src='" + OAS_url + "adstream_nx.ads/" + OAS_sitepage + "/1" + OAS_rns + "@" + OAS_listpos + "!" + pos + OAS_query + "' border=0 alt='Click!'></a>");
-}
-//-->
-</script>
-<script language="JavaScript1.1">
-<!--
-OAS_version = 11;
-if (navigator.userAgent.indexOf('Mozilla/3') != -1)
-  OAS_version = 10;
-  if (OAS_version >= 11)
-    document.write("<sc"+"ript language='JavaScript1.1' src='" + OAS_url + "adstream_mjx.ads/" + OAS_sitepage + "/1" + OAS_rns + "@" + OAS_listpos + OAS_query + "'><\/script>");
-//-->
-</script><script language="JavaScript1.1" src="emission_fichiers/1219830366Middlex02BottomRight.js"></script><script language="JavaScript">
-<!-- 
-document.write('');
-function OAS_AD(pos) {
-  if (OAS_version >= 11 && typeof(OAS_RICH!='undefined'))
-    OAS_RICH(pos);
-  else
-    OAS_NORMAL(pos);
-}
-//-->
-</script>
-<style type="text/css">/**
- * Highlight style classes
- * .a background color
- * .b underline
- * .c underline + font color
- */
- 
-@media screen{
-em.diigoHighlight {
-	text-align:inherit;
-	text-decoration: inherit;
-	line-height:inherit;
-	font:inherit;
-	color:inherit;
-	display:inline;
-	position:relative;
-}
-em.diigoHighlight.a.mouseOvered {
-	background-color: #ffc62a !important;
-}	
-
-em.diigoHighlight.b.mouseOvered, em.diigoHighlight.c.mouseOvered {
-	border-bottom: solid 2px #ffc62a;
-}
-	
-em.diigoHighlight.c {
-	color: #000099;
-}
-em.diigoHighlight.c.mouseOvered {
-	color: #ffc62a;
-}	
-
-em.diigoHighlight.a.yellow {
-	background-color: #FF9;
-}
-
-em.diigoHighlight.b.yellow, em.diigoHighlight.c.yellow {
-	border-bottom: solid 2px #FF9;
-}
-	
-img.diigoHighlight.yellow {/*image highlight*/
-	cursor: pointer; 
-	outline:2px solid #FF9;
-}
-	
-em.diigoHighlight.a.blue {
-	background-color: #ABD5FF;
-}
-
-em.diigoHighlight.b.blue, em.diigoHighlight.c.blue {
-	border-bottom: solid 2px #ABD5FF;
-}
-	
-img.diigoHighlight.blue {/*image highlight*/
-	cursor: pointer; 
-	outline:2px solid #ABD5FF;
-}
-	
-	
-em.diigoHighlight.a.green {
-	background-color: #B2E57E;
-}
-
-em.diigoHighlight.b.green, em.diigoHighlight.c.green {
-	border-bottom: solid 2px #B2E57E;
-}
-
-img.diigoHighlight.green {/*image highlight*/
-	cursor: pointer; 
-	outline:2px solid #B2E57E;
-}	
-	
-	
-em.diigoHighlight.a.pink {
-	background-color: #ffcccc;
-}
-
-em.diigoHighlight.b.pink, em.diigoHighlight.c.pink {
-	border-bottom: solid 2px #ffcccc;
-}
-	
-img.diigoHighlight.pink {/*image highlight*/
-	cursor: pointer; 
-	outline:2px solid #ffcccc;
-}	
-	
-img.diigoHighlight.mouseOvered {
-	cursor: pointer; 
-	outline:2px solid #ffc62a;
-}	
-	
-
-div.diigotb-inline-cloud{
-	position:fixed !important;
-	width:440px !important;
-	height:370px !important;
-	left:0;top:0;
-	background-color:#fef5c7 !important;
-	z-index:9999999999 !important;
-	display:none;
-	-moz-border-radius:15px !important;
-}
-/*  capture image */
-
-.diigotb-body #diigotb-upload-cover{
-	cursor:crosshair!important;
-	z-index:1999999!important;
-	position:fixed!important;
-	left:0!important;
-	top:31px;
-}
-	
-.diigotb-body #diigotb-upload-tip{
-    color: #fff!important;
-    padding:2px 4px!important;
-    position:fixed!important;
-    z-index:11000001!important;
-}
-	
-.diigotb-body #diigotb-upload-select{
-	position:fixed!important;
-	z-index:1000001;
-}
-	
-.diigotb-body #diigotb-upload-resizer{
-	z-index:11000002!important;
-	position:fixed!important;
-	cursor:move!important;
-	border:1px dashed black!important;
-}
-	
-.diigotb-body #currentColor{
-  background-color: #fff!important;
-  width: 37px!important;
-  height: 37px!important;
-  padding: 1px!important;
-  border: 1px solid #2e68e6!important;
-  float: left!important;
-  margin: 0 5px 0 0!important;
-}
-	
-.diigotb-body #currentColor div{
-  width: 37px!important;
-  height: 37px!important;	
-  margin:0!important;
-}
-.diigotb-body .selectPanel{
-	margin-top:5px!important;
-}
-	
-.diigotb-body .colorCell{
-  float: left!important;
-  margin: 0 1px 1px 0!important;
-  border: 1px solid #5f92ff!important;
-  width: 18px!important;
-  height: 18px!important;
-}
-	
-.diigotb-body .colorCell:hover{
-  border: 1px solid #FF9900!important;
-}
-.diigotb-body .colorCell.actived{
-  border: 1px solid #FF9900!important;
-}	
-	
-.diigotb-body .colorCell div{
-  width: 18px!important;
-  height: 18px!important;
-  cursor:pointer!important;
-  margin:0!important;
-}
-
-.diigotb-body .capture-black{background-color:#000!important;}
-.diigotb-body .capture-white{background-color:#fff!important;}
-.diigotb-body .capture-gray{background-color:#808080!important;}
-.diigotb-body .capture-light-gray{background-color:#c0c0c0!important;}
-
-.diigotb-body .capture-red{background-color:#ff0000!important;}
-.diigotb-body .capture-cyan{background-color:#00ffff!important;}
-.diigotb-body .capture-orange{background-color:#ff9900!important;}
-.diigotb-body .capture-blue{background-color:#0000ff!important;}
-
-.diigotb-body .capture-yellow{background-color:#ffff00!important;}
-.diigotb-body .capture-purple{background-color:#9900ff!important;}
-.diigotb-body .capture-green{background-color:#00ff00!important;}
-.diigotb-body .capture-pink{background-color:#ff00ff!important;}
-	
-.diigotb-body #diigotb-colorpanel{
-	background:transparent url(chrome://diigotb/skin/ann-bar-palette-bg-left.png) no-repeat scroll left center!important;
-	display:block;
-	height:55px!important;
-	position:fixed!important;
-	width:180px!important;
-	z-index:11000022!important;
-	margin:0!important;
-}
-	
-.diigotb-body .diigotb-cbg{
-	background:transparent url(chrome://diigotb/skin/ann-bar-palette-bg-right.png) no-repeat scroll right top!important;
-	height:55px!important;
-	line-height:55px!important;
-	padding-left:6px!important;
-	width:180px!important;
-	margin:0!important;
-}
-
-	
-.diigotb-body #currentArrow{
-	background:transparent url(chrome://diigotb/skin/ann-bar-palette-arrow.png) no-repeat scroll 0 0!important;
-	height:6px!important;
-	left:0;
-	position:relative!important;
-	top:-5px;
-	width:7px!important;
-	margin:0!important;
-}
-	
-.diigotb-body #currentArrow._istop{
-	background:transparent url(chrome://diigotb/skin/ann-bar-palette-arrow-down.png) no-repeat scroll 0 0!important;
-	top:51px!important;
-}
-	
-	
-.diigotb-body #diigotb-text-area{
-	position:fixed!important;
-	z-index:11000010!important;
-}
-	
-.diigotb-body .diigotb-text-input{
-	font: 18px/22px Helvetica,Arial,sans-serif!important;
-	border:0px solid #5f92ff!important;
-	z-index:11000011!important;
-}	
-	
-.diigotb-body #diigotb-editpanel{
-	background:transparent url(chrome://diigotb/skin/ann-bar-bg-right.png) no-repeat scroll right center!important;
-	height:35px!important;
-	position: fixed!important;
-	z-index:11000022!important;
-	margin:0!important;
-}
-	
-	
-.diigotb-body .diigotb-btn div{
-	cursor:pointer!important;
-	width:18px!important;
-	height:18px!important;
-	margin:2px!important;
-}
-.diigotb-body .diigotb-btn{
-	width:23px!important;
-	height:23px!important;
-}
-		
-	
-.diigotb-body #diigotb-editpanel .diigotb-bg{
-	background:transparent url(chrome://diigotb/skin/ann-bar-bg-left.png) repeat-x scroll left center!important;
-	height:35px!important;
-	padding-left:6px!important;
-	line-height:35px!important;
-	margin:0!important;
-}
-	
-		
-.diigotb-body div.diigotb-tip{
-	-moz-border-radius:4px 4px 4px 4px;
-	background-color:#f1f2f7;
-	border:1px solid #767676;
-	color:black;
-	display:none;
-	-moz-box-shadow:5px 5px 5px -5px #767676;
-	font:12px Arial,Helvetica,sans-serif;
-	margin:0 !important;
-	padding:3px 6px !important;
-	position:absolute;
-	z-index:2147483647;
-}
-	
-.diigotb-body #diigotb-editpanel div.diigotb-btn{
-	padding:0px!important;
-	display:inline-table!important;
-	margin-bottom:0 !important;
-	margin-left:0 !important;
-	margin-right:0 !important;
-	margin-top:5px;
-}
-	
-	
-.diigotb-body #diigotb-editpanel div.diigotb-sep img{
-	pading:0!important;
-	margin:0!important;
-}
-	
-.diigotb-body #diigotb-editpanel div.diigotb-sep{
-	pading:4px 0!important;
-	display:inline-table!important;
-	margin:0!important;
-	line-height:0 !important;
-}	
-	
-.diigotb-body #diigotb-editpanel div.diigotb-btn.enabled:hover{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-current.png') no-repeat!important;
-}
-	
-.diigotb-body #diigotb-editpanel #diigotb-undo.enabled div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-undo.png') no-repeat center center!important;
-}
-	
-.diigotb-body #diigotb-editpanel div.diigotb-btn.actived{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-current.png') no-repeat!important;
-}
-	
-.diigotb-image-border{
-	border:1px solid #666 !important;
-}
-	
-#diigotb-imagepanel{
-	height:22px!important;
-	position: absolute!important;
-	z-index:11000022!important;
-	margin:0!important;
-}
-
-#diigotb-imagepanel .diigotb-btn{
-	cursor:pointer!important;
-	width:20px!important;
-	height:20px!important;
-	margin:2px!important;
-	float:left !important;
-	background:transparent url(chrome://diigotb/skin/save-image-action-icons.png) no-repeat scroll!important;
-}	
-	
-	
-#diigotb-imagepanel #diigotb-quick-save{
-	background-position:0 0!important;
-}
-		
-#diigotb-imagepanel.processing #diigotb-quick-save{
-	background-position:0 -20px!important;
-	cursor:default!important;
-}
-
-		
-#diigotb-imagepanel.needpremium #diigotb-quick-save{
-	background-position:0 -20px!important;
-	cursor:default!important;
-}	
-
-#diigotb-imagepanel.hassaved #diigotb-quick-save{
-	background-position: -60px 0!important;
-	cursor: pointer !important;
-}
-
-.diigotb-imagetip{
-	background:transparent url(chrome://diigotb/skin/notice-bar-bg-right.png) no-repeat scroll right center !important;
-	height:21px !important;
-	margin:0 !important;
-	position:absolute !important;
-	z-index:11000022 !important;
-	width:106px;
-}
-	
-.diigotb-imagebg{
-	background:transparent url(chrome://diigotb/skin/notice-bar-bg-left.png) repeat-x scroll left center !important;
-	height:21px !important;
-	margin:0 !important;
-	padding-left:6px !important;
-	width:90px;
-}
-	
-.diigotb-imagetip-text{
-	padding-left:20px!important;
-	font:11px/13px Helvetica,Arial,sans-serif!important;
-	color:white!important;
-	line-height:20px!important;
-	float:left;
-}
-	
-.diigotb-imagetip.processing .diigotb-imagetip-text{
-	background:transparent url(chrome://diigotb/skin/processing-fb.gif) no-repeat scroll left center !important;
-}
-	
-.diigotb-imagetip.hassaved .diigotb-imagetip-text{
-	background:transparent url(chrome://diigotb/skin/icon-done.png) no-repeat scroll left center !important;
-}
-	
-.diigotb-border{
-	position: absolute!important;
-	z-index:11000000!important;
-	margin:0!important;
-	background-color: #4b8cdc!important;
-}
-.diigotb-left{
-	width:1px!important;
-}
-.diigotb-right{
-	width:1px!important;
-}
-.diigotb-top{
-	height:1px!important;
-}
-.diigotb-bottom{
-	height:1px!important;
-}
-
-.diigotb-body #diigotb-rect div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-rectangle.png') no-repeat center center!important;
-}	
-.diigotb-body #diigotb-round div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-ellipse.png') no-repeat center center!important;
-}
-.diigotb-body #diigotb-text div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-font.png') no-repeat center center!important;
-}
-	
-.diigotb-body #diigotb-arrow div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-arrow.png') no-repeat center center!important;
-}
-	
-.diigotb-body .diigotb-sep{
-	background: transparent url('chrome://diigotb/skin/ann-bar-bg-separator.png') no-repeat center center!important;
-}
-	
-.diigotb-body #diigotb-undo div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-undo-disabled.png') no-repeat center center!important;
-}
-	
-.diigotb-body #diigotb-capture-save div{
-	background: transparent url('chrome://diigotb/skin/ann-bar-opt-quickly-save.png') no-repeat center center!important;
-}
-	
-	
-	
-.diigotb-body #diigotb-upload-resizer div {
-  position: absolute!important;
-  width: 9px!important;
-  height: 9px!important;
-  /*background-color: white;*/
-  z-index:11000002!important;
-  margin:0px!important;
-  background:transparent url(chrome://diigotb/skin/spot.png) no-repeat scroll left center!important;
-}
-
-.diigotb-body #diigotb-upload-resizer div.gleft {
-  left: -9px!important;
-}
-
-.diigotb-body #diigotb-upload-resizer div.gtop {
-  top: -9px!important;
-}
-
-.diigotb-body #diigotb-upload-resizer div.gright {
-  right: -9px!important;
-}
-
-.diigotb-body #diigotb-upload-resizer div.gbottom {
-  bottom: -9px!important;
-}
-
-.diigotb-body #diigotb-upload-resizer div.ghor {
-  margin-left: auto!important;
-  margin-right: auto!important;
-  left: 0px!important;
-  right: 0px!important;
-}
-
-.diigotb-body #diigotb-upload-resizer div.gver {
-  margin-top: auto!important;
-  margin-bottom: auto!important;
-  top: 0px!important;
-  bottom: 0px!important;
-}
-	
-.diigotb-body{
-	padding-top: 31px!important;
-}
-	
-.diigotb-body #diigotb-topbar{
-  background: url(chrome://diigotb/skin/topbar-bg.png) left top repeat-x!important;
-  border-bottom: 1px solid #999!important;
-  color: #555!important;
-  font: 12px/18px Helvetica,Arial,sans-serif!important;
-  height: 30px!important;
-  line-height: 30px!important;
-  position: fixed!important;
-  left: 0!important;
-  top: 0!important;
-  text-align:center!important;
-  z-index:1999999!important;
-}
-
-.diigotb-body #diigotb-msg img{
-  margin:0 5px 0 0!important;
-  vertical-align: middle!important;
-}
-	
-.diigotb-body #diigotb-msg{
-	color:#333!important;
-}
-
-.diigotb-body #diigotb-msg a{
-  color: #0044cc!important;
-  text-decoration: none!important;
-}
-
-.diigotb-body #diigotb-msg a:hover{
-  text-decoration: underline!important;
-}
-
-.diigotb-body #diigotb-escLink{
-  display: block!important;
-  float: right!important;
-  margin: 5px 5px 0 0!important;
-  text-decoration: none!important;
-  width: 50px!important;
-  cursor:pointer!important;
-}
-
-.diigotb-body #diigotb-escLink:hover{
-  text-decoration: underline!important;
-}
-
-.diigotb-body #diigotb-escLink span{
-  background: url(chrome://diigotb/skin/esc-right.png) right top no-repeat!important;
-  display: block!important;
-  padding-right: 9px!important;
-}
-
-.diigotb-body #diigotb-escLink span strong{
-  background: url(chrome://diigotb/skin/esc-left.png) left top no-repeat!important;
-  display: block!important;
-  color: #fff!important;
-  font-weight: 700!important;
-  line-height: 20px!important;
-  text-indent:7px!important;
-}
-	
-	
-
-/*highlight label*/
-.diigoHighlight .diigoHighlightLabel sup {
-	font:normal normal normal 8px/8px "lucida grande",tahoma,verdana,arial,sans-serif;
-	text-decoration:none;
-	background-color:inherit;
-	cursor:default;
-}
-	
-body.diigoHiPen.yellow{
-	cursor:url(chrome://diigotb/skin/highlighter-orange.cur), text !important
-}
-	
-body.diigoHiPen.blue{
-	cursor:url(chrome://diigotb/skin/highlighter-blue.cur), text !important
-}
-
-body.diigoHiPen.green{
-	cursor:url(chrome://diigotb/skin/highlighter-green.cur), text !important
-}	
-	
-body.diigoHiPen.pink{
-	cursor:url(chrome://diigotb/skin/highlighter-pink.cur), text !important
-}
-em.diigoHighlight.type_0.commented {	
-	padding-left:30px;
-}
-	
-/*float note*/
-div.diigoHighlight.type_2 {
-	position:absolute;
-	width:29px;
-	height:36px;
-	text-align:center;
-	background:transparent url('chrome://diigotb/skin/float_icon.png') no-repeat 50% 50%;
-	z-index:9996;
-}
-div.diigoHighlight.type_2.mouseOvered {
-	position:absolute;
-	width:37px;
-	height:31px;
-	text-align:center;
-	background:transparent url('chrome://diigotb/skin/float_icon.png') no-repeat;
-	z-index:9996;
-}	
-div.diigoHighlight.type_2 span {
-	color:#000;
-	font:bold 13px Arial, Helvetica, sans-serif;
-	cursor: default;
-	line-height: 37px;
-	text-shadow: #fff 0 1px 0;
-}
-/*
-* html div.diigoHighlight.type_2{
-	filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=scale, src="http://www.diigo.com/javascripts/webtoolbar/images/float_icon.png");
-	overflow:hidden;
-	background:none;
-}
-*/
-	
-
-div.diigoIcon.commented.TextIcon.diigoEdit{
-	background-repeat:no-repeat !important;
-	background-position:right !important;
-}
-
-	
-div.diigoIcon.commented.ImageIcon.diigoEdit{
-	background-repeat:no-repeat !important;
-	background-position:right !important;
-}
-
-
-/*mouse over effect*/
-/*
-.diigoHighlight.id_190e5778b533dc0fa1b1660653a4f6f5 {outline: 2px dotted green !important;}
-*/
-div.diigoIcon{
-	cursor:pointer !important;
-	margin: 0pt; 
-	padding: 0px 0px 0px 0px;
-	position: absolute;
-	display:none;
-	width: 24px !important; 
-	z-index:999999;
-	height: 23px !important;
-	background: transparent url('chrome://diigotb/skin/edit-highlight.png') no-repeat left;
-}
-
-div.diigoIcon span{
-	color:#000000;
-	display:block;
-	font-family:Helvetica,Arial,sans-serif;
-	font-size:13px;
-	font-weight:700;
-	line-height:18px;
-	text-align:center;
-	text-shadow:0 1px 1px #FFFFFF;
-}
-
-div.diigoIcon.commented.ImageIcon{
-	display:block !important;
-	background-color: transparent !important;
-}
-	
-div.diigoIcon:hover{
-	background-background: transparent !important;
-	background-repeat:no-repeat !important;
-	background-position:right !important;
-}
-	
-div.diigoIcon.commented.TextIcon{
-	display:block !important;
-	left:0;
-	bottom:0;
-}
-	
-div.diigoIcon.commented.public{
-	background: #FFFFFF url('chrome://diigotb/skin/public-annotation.png') no-repeat left;
-}
-
-div.diigoIcon.commented.private{
-	background: #FFFFFF url('chrome://diigotb/skin/private-annotation.png') no-repeat left;
-}
-	
-div.diigoIcon.commented.group{
-	background: #FFFFFF url('chrome://diigotb/skin/group-annotation.png') no-repeat left;
-}
-	
-/*Clip video*/
-div.diigoClipVideo{
-	float:left;
-	height:16px;
-	padding:0 16px 0 6px;
-	background:#f5f5f5 url(chrome://diigotb/skin/toolbar-clip-bg.gif) no-repeat right 0;
-	border:1px solid #ccc;
-	border-bottom-width:0;
-	font-family:"lucida grande",tahoma,verdana,arial,sans-serif;
-	z-index:999;
-	position:absolute;
-}
-
-div.diigoClipVideo.clipped {
-  background-position: right -32px; left: 717px; top: 135px;
-}
-
-	div.diigoClipVideo span{
-		font-weight:bold;
-		font-size:10px;
-		line-height:16px;
-		text-decoration:underline;
-		color:#03f;
-		cursor:pointer;
-		margin-right:6px
-	}
-	div.diigoClipVideo span:hover,div.diigoClipVideo span:active{
-		color:#00f
-	}
-	/*.diigolet input{
-		font-family:"lucida grande",tahoma,verdana,arial,sans-serif;
-		font-size:9px;
-	}*/
-	
-/*-----------notice msg--------------*/
-.diigotb-notice-img  {
-	float:left!important;
-	height:16px!important;
-	width:16px!important;
-	margin-top:6px!important;
-	margin-right:3px!important;
-}
-.success .diigotb-notice-img{
-	background:url("chrome://diigotb/skin/notice-icons.png") no-repeat scroll 0 0 transparent!important;
-}
-.failed .diigotb-notice-img{
-	background:url("chrome://diigotb/skin/notice-icons.png") no-repeat scroll -16px 0 transparent!important;
-}
-.info .diigotb-notice-img{
-	background:url("chrome://diigotb/skin/notice-icons.png") no-repeat scroll -32px 0 transparent!important;
-}
-.process .diigotb-notice-img{
-	background:url("chrome://diigotb/skin/processing.gif") no-repeat scroll left 0 transparent!important;
-}	
-	
-.diigotb-notice-msg-rt  {
-	background:url("chrome://diigotb/skin/notice-bar-2-bg-left.png") no-repeat scroll left bottom transparent!important;
-	line-height:28px!important;
-	padding-left:10px!important;
-	height:30px!important;
-}
-.failed .diigotb-notice-msg-rt  {
-	background:url("chrome://diigotb/skin/notice-bar-2-bg-left.png") no-repeat scroll left top transparent!important;
-}
-	
-.diigotb-notice-close{
-	float:right!important;
-	height:16px!important;
-	width:16px!important;
-	margin-left:20px!important;
-	margin-top:6px!important;
-	cursor:pointer;
-	background:url("chrome://diigotb/skin/notice-icons.png") no-repeat scroll -48px 0 transparent!important;
-}
-
-.diigotb-notice-close:hover{
-	background-position: -63px 0!important;
-}
-	
-.diigotb-notice-msg  {
-	background:url("chrome://diigotb/skin/notice-bar-2-bg-right.png") no-repeat scroll right bottom transparent!important;
-	float:right!important;
-	height:30px!important;
-	padding:0 11px 0 0!important;
-	border: none!important;
-	margin:0!important;
-	position:fixed!important;
-	font:12px/14px Helvetica,Arial,sans-serif!important;
-	z-index:100000!important;
-}
-.diigotb-notice-msg a {
-	color:#0044cc!important; 
-	text-decoration:underline!important;
-}
-	
-.failed.diigotb-notice-msg  {
-	background:url("chrome://diigotb/skin/notice-bar-2-bg-right.png") no-repeat scroll right top transparent!important;
-}
-	
-}
-
-
-@media print{
-em.diigoHighlight.a, em.diigoHighlight.b, em.diigoHighlight.c {
-	border-bottom:0.5pt dashed Black;
-}
-
-
-/*image highlight*/
-/*no inline comments*/
-img.diigoHighlight {
-	border:0.5pt dashed Black
-}
-
-/*float note*/
-div.diigoHighlight.type_2 {
-	display:none
-}
-div.diigoHighlight.type_2 span {
-	display:none
-}
-}</style><style id="diigo-activeHighlight" type="text/css">dummyRuleForDigg{}</style></head><body
- class="not-front not-logged-in node-type-rf-diffusion one-sidebar 
-sidebar-right emissions page-node-2347301 
-section-emission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg
- popups-processed tableHeader-processed"><div id="_atssh" 
-style="visibility: hidden; height: 1px; width: 1px; position: absolute; 
-z-index: 100000;"><iframe src="emission_fichiers/sh20.htm" 
-style="height: 1px; width: 1px; position: absolute; z-index: 100000; 
-border: 0pt none; left: 0pt; top: 0pt;" id="_atssh433"></iframe></div>
-	<div id="header-commun" class="header-footer content-header-footer"><div
- id="header-content"><ul><li class="first-header"><a 
-href="http://radiofrance.fr/" name="top-page-ancre">radiofrance.fr</a></li><li><a
- href="http://www.franceinter.com/">france inter</a></li><li><a 
-href="http://www.france-info.com/">france info</a></li><li><a 
-href="http://www.francebleu.com/">france bleu</a></li><li><a 
-href="http://www.franceculture.com/">france culture</a></li><li><a 
-href="http://www.francemusique.com/">france musique</a></li><li><a 
-href="http://fip-radio.com/">fip</a></li><li><a 
-href="http://www.lemouv.com/">le mouv'</a></li><li class="last-header"><a
- href="http://concerts.radiofrance.fr/">les orchestres</a></li></ul><div
- class="clearer">&nbsp;</div></div></div><div id="page">
-    <div id="page-inner"> 
-<!-- début du header -->
-                <div id="header">
-                    <!-- début du menu d'accès rapide -->
-                    <div id="acces-rapide"><a name="top"></a>
-                    <a href="#acces-navigation-primaire" 
-title="descriptif du lien">acces rapide a la navigation principale</a><br>
-                    <a href="#acces-navigation-secondaire" 
-title="descriptif du lien">acces rapide a la navigation secondaire</a><br>
-                    <a href="#acces-contenu" title="descriptif du lien">acces
- rapide au contenu</a><br>
-                    <a href="#acces-right" title="descriptif du lien">acces
- rapide au contenu de droite</a><br>
-                    <a href="#acces-footer" title="descriptif du lien">acces
- rapide au footer</a><br>
-                    </div>
-            <a href="http://www.franceculture.com/" class="retour-home"><img
- src="emission_fichiers/logo.png" alt="Accueil" height="106" width="106"></a>
-            <div id="block-simplenews-65" class="block block-simplenews">
-  <div class="block-inner">
-  
-  <div class="block-content">
-        <p>Recevez la lettre d'information</p>
-  
-      <form 
-action="/emission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg"
- accept-charset="UTF-8" method="post" id="simplenews-block-form-65">
-<div><div class="form-item" id="edit-mail-1-wrapper">
- <label for="edit-mail-1">E-mail&nbsp;: <span class="form-required" 
-title="Ce champ est obligatoire.">*</span></label>
- <input maxlength="128" name="mail" id="edit-mail-1" size="20" 
-value="identifiant@mail.com" class="form-text required idleField" 
-type="text">
-</div>
-<div class="form-radios"><div class="form-item" 
-id="edit-action-subscribe-wrapper">
- <label class="option" for="edit-action-subscribe"><input 
-id="edit-action-subscribe" name="action" value="subscribe" 
-checked="checked" class="form-radio" type="radio"> S'abonner</label>
-</div>
-<div class="form-item" id="edit-action-unsubscribe-wrapper">
- <label class="option" for="edit-action-unsubscribe"><input 
-id="edit-action-unsubscribe" name="action" value="unsubscribe" 
-class="form-radio" type="radio"> Se désabonner</label>
-</div>
-</div><input name="submit" value="Enregistrer" id="edit-submit-1" 
-class="form-submit submit" src="emission_fichiers/inscription.png" 
-type="image">
-<input name="form_build_id" id="form-d495e634489f3be0bd7ebbe9bf42e037" 
-value="form-d495e634489f3be0bd7ebbe9bf42e037" type="hidden">
-<input name="form_id" id="edit-simplenews-block-form-65" 
-value="simplenews_block_form_65" type="hidden">
-
-</div></form>
-  
-  
-  
-    </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
-            <div class="search"><form 
-action="/emission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg"
- accept-charset="UTF-8" method="post" id="antidot-search-block-form-1">
-<div><div class="form-item" id="search_top_page-wrapper">
- <label for="search_top_page">Cherchez sur France Culture&nbsp;: </label>
- <input maxlength="128" name="antidot_search_block_form" 
-id="search_top_page" size="15" title="Entrez les termes que vous voulez 
-rechercher." autocomplete="off" class="form-text idleField" type="text">
-</div>
-<input name="op" id="edit-submit" value="Recherche" class="submit 
-rollover" src="emission_fichiers/search-submit.png" alt="Rechercher" 
-height="26" type="image" width="26"><input name="form_build_id" 
-id="form-0fb0ec9e93007e0870ba7f8b130bd7f7" 
-value="form-0fb0ec9e93007e0870ba7f8b130bd7f7" type="hidden">
-<input name="form_id" id="edit-antidot-search-block-form-1" 
-value="antidot_search_block_form" type="hidden">
-
-</div></form>
-</div>            
-            <!--block de navigation secondaire -->
-            <a name="acces-navigation-secondaire"></a><a href="#top" 
-class="back-to-top">retour en haut de page</a>
-            <ul class="" id="menu-top"><li class="leaf first menu-top"><a
- href="http://www.franceculture.com/quelisentils" title="" accesskey="b">Que
- lisent-ils ?</a></li>
-<li class="leaf  menu-top"><a 
-href="http://www.franceculture.com/votre-agenda" title="" accesskey="b">Votre
- agenda Culture</a></li>
-<li class="leaf  menu-top"><a 
-href="http://www.franceculture.com/culture-academie" title="" 
-accesskey="b">Culture Académie</a></li>
-<li class="leaf  menu-top login"><a 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- title="Connexion [Popup]" alt="Connexion" class="popups-form-reload 
-popups-processed" accesskey="b">Connexion</a></li>
-<li class="leaf last menu-top register"><a 
-href="http://www.franceculture.com/user/register-profile" title="pas 
-encore membre ? [Popup]" alt="pas encore membre ?" 
-class="popups-form-reload popups-processed" accesskey="b">pas encore 
-membre ?</a></li>
-</ul>            <!-- block de navigation principale -->
-            <a name="acces-navigation-primaire"></a><a href="#top" 
-class="back-to-top">retour en haut de page</a>
-            <ul class="" id="menu-principal"><li class="leaf first 
-menu-principal"><a 
-href="http://www.franceculture.com/rubrique/information" title="" 
-accesskey="b">Information</a></li>
-<li class="leaf  menu-principal"><a 
-href="http://www.franceculture.com/rubrique/litt%C3%A9rature" title="" 
-accesskey="b">Littérature</a></li>
-<li class="leaf  menu-principal"><a 
-href="http://www.franceculture.com/rubrique/id%C3%A9es" title="" 
-accesskey="b">Idées</a></li>
-<li class="leaf  menu-principal"><a 
-href="http://www.franceculture.com/rubrique/arts-spectacles" title="" 
-accesskey="b">Arts et spectacles</a></li>
-<li class="leaf  menu-principal"><a 
-href="http://www.franceculture.com/rubrique/histoire" title="" 
-accesskey="b">Histoire</a></li>
-<li class="leaf  menu-principal"><a 
-href="http://www.franceculture.com/rubrique/sciences" title="" 
-accesskey="b">Sciences</a></li>
-<li class="leaf  first menu-action"><a 
-href="http://www.franceculture.com/podcasts" title="" accesskey="b">Podcasts</a></li>
-<li class="leaf  menu-action"><a 
-href="http://www.franceculture.com/emissions/titre" title="" 
-accesskey="b">Emissions</a></li>
-<li class="leaf last menu-action"><a 
-href="http://www.franceculture.com/grille-des-programmes/" title="" 
-accesskey="b">Programmes</a></li>
-</ul>            
-    <div id="x02">
-      <script language="JavaScript">
-        <!--
-        OAS_AD("x02");
-        //-->
-      </script>
-    </div>        </div><!-- /header -->
-        
-        <!-- début du contenu -->   
-        <div id="main"><a name="acces-contenu"></a><a href="#top" 
-class="back-to-top">retour en haut de page</a>
-            
-            <div id="content">
-                                                                      
-                <div id="content-inner">
-                                    <div id="content-top">
-                      <div id="block-fcbloc-emission-header" 
-class="block block-fcbloc">
-  <div class="block-inner">
-  
-  <div class="block-content">
-  
-	<div class="bandeau">
-		<h1 class="theme1-130">Les Retours du dimanche 
-			<a href="http://www.franceculture.com/emission/1232581/rss" 
-class="feed-icon"><img src="emission_fichiers/picto-rss.gif" 
-alt="Syndiquer le contenu" title="Les Retours du dimanche " height="16" 
-width="16"></a>
-			<span class="emission-producteurs">par <a 
-href="http://www.franceculture.com/personne-caroline-brou%C3%A9.html">Caroline
- Broué</a>, <a 
-href="http://www.franceculture.com/personne-herve-gardette.html">Hervé 
-Gardette</a></span>
-			<a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche.html"
- class="site" title="Les Retours du dimanche ">Le site de l'émission</a>
-		</h1>
-		<div class="image">
-		<img src="emission_fichiers/retour_dimanche.png" alt="Les Retours du 
-dimanche " title="" height="100" width="640">
-		<a href="http://www.franceculture.com/podcast/1232581" title="Les 
-Retours du dimanche "><img 
-src="emission_fichiers/culture_les_retours_du_dimanche.jpg" 
-alt="Emission Les Retours du dimanche " title="" class="illu-small" 
-height="75" width="75"></a>
-		</div>
-		<p>le dimanche de 18h10 à 19h </p>
-	</div>
-		  </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
- 
-                  </div>
-                                                      
-                  <div id="node-2347301" class="node node-rf_diffusion">
-
-	
-	  	  <div class="titre-plus">
-	    <div class="listen">
-                  <a class="rf-player-open rf-player-open-processed" 
-href="http://www.franceculture.com/player?p=reecoute-2347301#reecoute-2347301">
-            <img alt="Ecoutez l'émission" 
-src="emission_fichiers/listen.png" height="78" width="78">
-          </a>
-	  <span>50 minutes</span>
-        	    </div>
-	    <h2 class="title">
-	      Le salaire de la politique ; les vuvuzelas ; l'actualité 
-politique belge          	      <a class="num-com" href="#comments">
-	          <span>0</span>
-	        </a>
-        	    </h2>
-	    <p>
-	      <span class="date">20.06.2010 - 18:10</span>
-	      	    </p>
-	    <div class="clear"></div>
-	    	  </div>
-	  	  	
-	  	
-	  	  <span class="print-link"></span><div class="field 
-field-type-multimedia-editorial-element field-field-contenu">
-    <div class="field-items">
-            <div class="field-item odd">
-                    <div class="dnd-drop-wrapper">
-
-  
-  <div class="image atom-Image">
-      <img class="dnd-dropped" src="emission_fichiers/Garrigou.jpg" 
-alt="">
-      <div class="opaque"><p>le sociologue Alain Garrigou <span>©Radio 
-France</span></p></div>
-  </div>
-  
-
-</div><p>Au sommaire des <strong>Retours du dimanche </strong>:</p><p>&nbsp;</p><p>La
-
-
- revue 
-d'actualités : rappel des petits et grands évènements de la semaine. : <a
- title=" ça s'est passé cette semaine" 
-href="http://www.franceculture.com/2010-06-19-20-juin-2010-ca-s-039-est-passe-cette-semaine.html">il
- faut reconnaître un mérite à Raymond Domenech et à ses joueurs...</a></p><p>&nbsp;</p><p>L'entretien
-
-
-
- : "<a href="#t=700">Le salaire de la politique</a>", <span><span 
-class="262252614-17062010">après que la question de la rémunération des 
-politiques a été posée par le 
-premier ministre&nbsp;cette semaine. Invité : </span></span>l'historien 
-et professeur en science politique <strong>Alain Garrigou</strong>, 
-auteur de <em>Mourir pour des Idées, la vie posthume d'Alphone Baudin</em>,
- paru aux éditions Les Belles Lettres en avril 2010.</p><p>&nbsp;</p><p>&nbsp;</p>
- 
- <!-- START Integration testing  ###################################### --> 
- <!-- IRI PLAYER EXPERIMENTATION --> 
-	
-	<script type="text/javascript" src="../build/LdtPlayer-release.js"></script> 
-	
-	<div id="LdtPlayer"></div> 
-	
-	<script  type="text/javascript">	
-		var config = {
-						metadata:{
-							format:'cinelab',
-							src:'http://exp.iri.centrepompidou.fr/franceculture/franceculture/ldt/cljson/id/ef4dcc2e-8d3b-11df-8a24-00145ea4a2be',
-							load:'jsonp'},
-						gui:{
-							width:650,
-							height:1,
-							mode:'radio',
-							container:'LdtPlayer',
-							debug:false,
-							css:'../src/css/LdtPlayer.css'},
-						player:{
-							type:'jwplayer',
-							src:'../res/swf/player.swf'}
-					};
-		__IriSP.init(config);     
-	</script> 
- 
- 
-<!-- END  ###################################### ####################################--> 
- 
- <br/>
- 
- <p> <a href="#t=1773">La
- revue de 
-presse </a>: les <strong>vuvuzelas comme phénomène identitaire</strong>, ces
- trompettes qui occupent le fond sonore de tous les matchs de la coupe 
-du monde de football qui se déroule en ce moment en Afrique du Sud.<br>
-<br> <a href="#t=1846"> La bulle sonore :</a><strong> Patrick Roegiers</strong><strong> </strong>pour revenir
- sur<strong> l'actualité politique en Belgique. </strong>Notre invité 
-est romancier, auteur de <em>La Belgique, Le roman d'un pays</em>, paru 
-chez Découvertes Gallimard en 2005, et <em>Le mal du pays, autoportrait 
-de la Belgique</em>, publié au Seuil en 2003. Il a récemment publié <em>La
- Nuit du Monde</em>, au Seuil en janvier 2010.</p><p>&nbsp;</p><p>
- <a href="#t=2647">La 
-chronique d'Anthony Bellanger de </a> <strong>Courrier
- 
-International.</strong></p> 
-<p><br>Et comme chaque semaine : le sujet choisi par l'invité, notre 
-choix pour 
-la semaine à venir...</p>        </div>
-        </div>
-</div>
-	            <div class="clear"></div>
-	  
-          <p class="invites">Invités :<br>
-      <a 
-href="http://www.franceculture.com/personne-alain-garrigou.html">Alain 
-Garrigou</a>, professeur agrégé d'histoire et docteur en science 
-politique à l'université de Paris-X Nanterre<br><a 
-href="http://www.franceculture.com/personne-patrick-roegiers.html">Patrick
- Roegiers</a>      </p>
-        	    <p class="theme">Thèmes : 
-        <a href="http://www.franceculture.com/rubrique/information" 
-title="">Information</a>| <a 
-href="http://www.franceculture.com/theme/d%C3%A9bat" title="">Débat</a>|
- <a href="http://www.franceculture.com/theme/gouvernement" title="">Gouvernement</a>|
- <a 
-href="http://www.franceculture.com/theme/sciences-dures-et-sciences-humaines/histoire"
- title="">Histoire</a>      </p>
-	  	  	  	  	  <div class="rel-doc">
-	    <h2 class="titre-barre"><span>Documents</span></h2>
-	    <ul><li><p>
-  <a 
-href="http://www.franceculture.com/oeuvre-mourir-pour-des-idees-la-vie-posthume-d-alphone-baudin-de-alain-garrigou.html">
-    Mourir pour des idées, la vie posthume d'Alphone Baudin  </a>
-  <a href="http://www.franceculture.com/personne-alain-garrigou.html">Alain
- Garrigou</a>  <span>
-  Belles lettres,   2010  </span>
-  </p>
-<a 
-href="http://www.franceculture.com/oeuvre-mourir-pour-des-idees-la-vie-posthume-d-alphone-baudin-de-alain-garrigou.html">
-  <img src="emission_fichiers/baudin.jpg" alt="" title="" 
-class="imagecache imagecache-oeuvre_image_liste" height="143" width="95"></a>
-</li><li><p>
-  <a 
-href="http://www.franceculture.com/oeuvre-les-elites-contre-la-republique-histoire-et-mutations-de-sciences-po-et-de-l-ena-de-alain-gar">
-    Les élites contre la République : histoire et mutations de Sciences 
-Po et de l'ENA  </a>
-  <a href="http://www.franceculture.com/personne-alain-garrigou.html">Alain
- Garrigou</a>  <span>
-  Editions La découverte,     </span>
-  </p>
-<a 
-href="http://www.franceculture.com/oeuvre-les-elites-contre-la-republique-histoire-et-mutations-de-sciences-po-et-de-l-ena-de-alain-gar">
-  <img 
-src="emission_fichiers/les_lites_contre_la_rpublique_histoire_et_mutations_de_scien.jpg"
- alt="" title="" class="imagecache imagecache-oeuvre_image_liste" 
-height="157" width="95"></a>
-</li><li><p>
-  <a 
-href="http://www.franceculture.com/oeuvre-le-mal-du-pays-autobiographie-de-la-belgique-de-patrick-roegiers.html">
-    Le mal du pays : autobiographie de la Belgique  </a>
-  <a href="http://www.franceculture.com/personne-patrick-roegiers.html">Patrick
- Roegiers</a>  <span>
-  Seuil,   2003  </span>
-  </p>
-<a 
-href="http://www.franceculture.com/oeuvre-le-mal-du-pays-autobiographie-de-la-belgique-de-patrick-roegiers.html">
-  <img 
-src="emission_fichiers/le_mal_du_pays_autobiographie_de_la_belgique20100424.jpg"
- alt="" title="" class="imagecache imagecache-oeuvre_image_liste" 
-height="161" width="95"></a>
-</li><li style="display: none;" class="more-liste liste-clear"></li><li 
-style="display: none;" class="more-liste"><p>
-  <a 
-href="http://www.franceculture.com/oeuvre-la-nuit-du-monde-de-patrick-roegiers.html">
-    La nuit du monde  </a>
-  <a href="http://www.franceculture.com/personne-patrick-roegiers.html">Patrick
- Roegiers</a>  <span>
-  Seuil,   2010  </span>
-  </p>
-<a 
-href="http://www.franceculture.com/oeuvre-la-nuit-du-monde-de-patrick-roegiers.html">
-  <img src="emission_fichiers/la_nuit_du_monde20100423.jpg" alt="" 
-title="" class="imagecache imagecache-oeuvre_image_liste" height="143" 
-width="95"></a>
-</li><li style="display: none;" class="more-liste"><p>
-  <a 
-href="http://www.franceculture.com/oeuvre-l-evangile-selon-jesus-christ-de-jose-saramago.html">
-    L'évangile selon Jésus-Christ  </a>
-  <a 
-href="http://www.franceculture.com/personne-jos%C3%A9-saramago.html">José
- Saramago</a>  <span>
-  Ed. du Seuil - coll. Points,   2000  </span>
-  </p>
-<a 
-href="http://www.franceculture.com/oeuvre-l-evangile-selon-jesus-christ-de-jose-saramago.html">
-  <img src="emission_fichiers/97820204039860-2000020811.jpg" alt="" 
-title="" class="imagecache imagecache-oeuvre_image_liste" height="158" 
-width="95"></a>
-</li></ul><div class="clear"></div><a style="background: 
-url(&quot;/sites/all/themes/franceculture/images/urg-down.png&quot;) 
-no-repeat scroll 100% 4px transparent;" class="more-doc">voir les 5 
-documents</a>	  </div>
-	  	  	<div class="clear"></div>
-	</div> <!-- /node -->
-  <div id="comments" class="com">
-    <h2 class="titre-barre"><span>0 commentaire</span></h2>
-    <div class="box">
-          <h2 class="title titre-barre"><span>Votre commentaire</span></h2>
-        <form action="/comment/reply/2347301" accept-charset="UTF-8" 
-method="post" id="comment-form">
-<div><div class="form-item" id="edit-name-wrapper">
- <label for="edit-name">votre nom&nbsp;: </label>
- <input maxlength="60" name="name" id="edit-name" size="30" 
-value="Anonyme" class="form-text idleField" type="text">
-</div>
-<div class="form-item" id="edit-mail-wrapper">
- <label for="edit-mail">votre adresse électronique&nbsp;: </label>
- <input maxlength="64" name="mail" id="edit-mail" size="30" 
-class="form-text idleField" type="text">
-</div>
-<div class="form-item" id="edit-comment-wrapper">
- <label for="edit-comment">votre commentaire&nbsp;: <span 
-class="form-required" title="Ce champ est obligatoire.">*</span></label>
- <div class="resizable-textarea"><span><textarea cols="60" rows="15" 
-name="comment" id="edit-comment" class="form-textarea resizable required
- clearonfocus textarea-processed">Tapez ici vos commentaires</textarea><div
- style="margin-right: -33px;" class="grippie"></div></span></div>
-</div>
-<div class="wysiwyg wysiwyg-format-5 wysiwyg-editor-none 
-wysiwyg-field-edit-comment wysiwyg-status-1 wysiwyg-toggle-1 
-wysiwyg-resizable-1"> </div><input name="form_build_id" 
-id="form-3d46a280b7c4d6960ed80ba3c5ae0418" 
-value="form-3d46a280b7c4d6960ed80ba3c5ae0418" type="hidden">
-<input name="form_id" id="edit-comment-form" value="comment_form" 
-type="hidden">
-<input name="op" id="edit-submit" value="Envoyer" class="form-submit" 
-type="submit"><div id="saving"><p class="saving">Enregistrement des 
-données…</p></div>
-<input name="op" id="edit-preview" value="Aperçu" class="form-submit" 
-type="submit">
-
-</div></form>
-</div> <!-- /box -->
-  </div>
- <!-- /comment wrapper -->
-<div id="block-print-0" class="block block-print">
-  <div class="block-inner">
-  
-  <div class="block-content">
-  <span class="print_html"><a 
-href="http://www.franceculture.com/print/463861" title="Imprimer le 
-contenu" class="print-page" onclick="window.open(this.href); return 
-false" rel="nofollow">imprimer</a></span>  </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
-<div id="share" class="block block-addthis share-script">
-  
-		<div class="addthis_toolbox addthis_default_style">
-			<a class="addthis_button_email share-mail at300b" title="partager par
- courier"><span class="at300bs at15t_email"></span>envoyer par courriel</a>
-			
-			<span class="more-services">
-				<a title="Send to Facebook" target="_blank" 
-href="http://www.addthis.com/bookmark.php?pub=&amp;v=250&amp;source=tbx-250&amp;tt=0&amp;s=facebook&amp;url=http%3A%2F%2Fwww.franceculture.com%2Femission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg&amp;title=Le%20salaire%20de%20la%20politique%20%3B%20les%20vuvuzelas%20%3B%20l%27actualit%C3%A9%20politique%20belge%20-%20Information%20-%20France%20Culture&amp;content=&amp;sms_ss=1&amp;lng=fr"
- class="addthis_button_facebook share-services at300b"><span 
-class="at300bs at15t_facebook"></span>facebook</a>
-				<a title="Tweet This" target="_blank" 
-href="http://www.addthis.com/bookmark.php?pub=&amp;v=250&amp;source=tbx-250&amp;tt=0&amp;s=twitter&amp;url=http%3A%2F%2Fwww.franceculture.com%2Femission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg&amp;title=Le%20salaire%20de%20la%20politique%20%3B%20les%20vuvuzelas%20%3B%20l%27actualit%C3%A9%20politique%20belge%20-%20Information%20-%20France%20Culture&amp;content=&amp;sms_ss=1&amp;lng=fr"
- class="addthis_button_twitter share-services at300b"><span 
-class="at300bs at15t_twitter"></span>twitter</a>
-				<a title="Send to Netvibes" target="_blank" 
-href="http://www.addthis.com/bookmark.php?pub=&amp;v=250&amp;source=tbx-250&amp;tt=0&amp;s=netvibes&amp;url=http%3A%2F%2Fwww.franceculture.com%2Femission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg&amp;title=Le%20salaire%20de%20la%20politique%20%3B%20les%20vuvuzelas%20%3B%20l%27actualit%C3%A9%20politique%20belge%20-%20Information%20-%20France%20Culture&amp;content=&amp;sms_ss=1&amp;lng=fr"
- class="addthis_button_netvibes share-services at300b"><span 
-class="at300bs at15t_netvibes"></span>netvibes</a>
-				<a title="Send to Delicious" target="_blank" 
-href="http://www.addthis.com/bookmark.php?pub=&amp;v=250&amp;source=tbx-250&amp;tt=0&amp;s=delicious&amp;url=http%3A%2F%2Fwww.franceculture.com%2Femission-les-retours-du-dimanche-le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belg&amp;title=Le%20salaire%20de%20la%20politique%20%3B%20les%20vuvuzelas%20%3B%20l%27actualit%C3%A9%20politique%20belge%20-%20Information%20-%20France%20Culture&amp;content=&amp;sms_ss=1&amp;lng=fr"
- class="addthis_button_delicious share-services at300b"><span 
-class="at300bs at15t_delicious"></span>delicious</a>
-			</span>
-			<a style="background: 
-url(&quot;/sites/all/themes/franceculture/images/share-more.png&quot;) 
-no-repeat scroll 100% 4px transparent;" href="#" title="plus d'actions 
-de partage" class="share-more">partager</a>
-		<div class="atclear"></div></div>
-		<script type="text/javascript" src="emission_fichiers/addthis_widget.js"></script>
-		</div>
- 
-                  
-                  <div class="clear"></div>
-               </div> <!-- /content-inner -->
-                
-                            
-            </div> <!-- /content -->
-            
-                        <!-- début de sidebar-right -->   
-            <div id="sidebar-right"><a name="acces-right"></a><a 
-href="#top" class="back-to-top">retour en haut de page</a>
-               <div id="block-fc_bloc_direct-direct" class="block 
-block-fc_bloc_direct block-ecoute">
-  <div class="block-inner">
-      <h2 class="titre-barre"><span>Ecoutez France Culture</span></h2>
-    <div class="content"><div class="context">
-	<a href="http://www.franceculture.com/player" title="écouter le direct"
- class="rf-player-open img-float rf-player-open-processed">
-		<img src="emission_fichiers/direct.png" alt="écouter le direct" 
-height="72" width="72">
-	</a>
-	<h3>
-		<span class="timer"><a href="http://www.franceculture.com/player" 
-class="rf-player-open rf-player-open-processed">En direct</a></span>
-		<a class="rf-player-open rf-player-open-processed" 
-href="http://www.franceculture.com/player" title="écouter le direct">Sur
- France Culture</a>
-		<a class="rf-player-open rf-player-open-processed" 
-href="http://www.franceculture.com/player" title="écouter le direct"></a>
-	</h3>
-	<p></p>
-	<div class="clear"></div>
-</div>
-<p>
-	<span class="timer"></span>
-	
-</p>
-<p class="auteur">
-	
-</p>
-</div>
-    </div>
-</div><div id="block-fcbloc-emission-equipe" class="block block-fcbloc">
-  <div class="block-inner">
-      <h2 class="title"><span>L'équipe</span></h2>
-  
-  <div class="block-content">
-  <div class="item-list"><ul><li class="first">
-			<h3>Production</h3>
-			<p><a 
-href="http://www.franceculture.com/personne-caroline-brou%C3%A9.html">Caroline
- Broué</a>, <a 
-href="http://www.franceculture.com/personne-herve-gardette.html">Hervé 
-Gardette</a></p>
-			</li>
-<li>
-			<h3>Réalisation</h3>
-			<p>Jean-Christophe Francis</p>
-			</li>
-<li>
-			<h3>Collaboratrice(s) Spécialisée(s)</h3>
-			<p>Soline Ledésert</p>
-			</li>
-<li class="last">
-			<h3>Chronique(s)</h3>
-			<p><a 
-href="http://www.franceculture.com/personne-anthony-bellanger.html">Anthony
- Bellanger</a></p>
-			</li>
-</ul></div>  </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
-<div id="block-fcbloc-publicite" class="block block-fcbloc">
-  <div class="block-inner">
-  
-  <div class="block-content">
-  <p class="pub-notice">publicité</p><div class="pub-inner"><script language="JavaScript">
-<!--
-OAS_AD("Middle");
-//-->
-</script>&nbsp;</div>  </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
-<div id="block-fcbloc-sur-le-meme-theme" class="block block-fcbloc">
-  <div class="block-inner">
-      <h2 class="title"><span>Sur le même thème</span></h2>
-  
-  <div class="block-content">
-  <div class="view view-commun-fo-blocs-full-node 
-view-id-commun_fo_blocs_full_node view-display-id-page_1 view-dom-id-12">
-    
-  
-  
-      <div class="view-content">
-        <ul>
-    <li class="first odd">
-      
-  
-    
-      <a 
-href="http://www.franceculture.com/culture-ac-seminaire-d%E2%80%99antoine-compagnon-ecrire-la-vie-26.html">Écrire
- la vie (2/6)</a>
-  
-
-      <span class="date">
-  
-    
-      <div class="clear"></div>
-00:00
-
-      </span>
-  
-    </li>
-      <li class="even">
-      
-  
-    
-      <a 
-href="http://www.franceculture.com/emission-dossier-du-jour-conference-des-donateurs-a-kaboul-2010-07-20.html">Conférence
- des donateurs à Kaboul</a>
-  
-
-      <p>
-  
-    
-      <a 
-href="http://www.franceculture.com/emission-dossier-du-jour.html"> 
-Dossier du jour </a>
-      </p>
-  
-
-      <span class="date">
-  
-    
-      <div class="clear"></div>
-À écouter le 19.07.2010
-
-      </span>
-  
-
-      <span>
-  
-    
-      <span class="timer"><span class="date-display-single">4</span> 
-min.</span>
-      </span>
-  
-    </li>
-      <li class="last odd">
-      
-  
-    
-      <a 
-href="http://www.franceculture.com/emission-place-de-la-toile-lift-marseille-2010-07-24.html">Lift
- Marseille</a>
-  
-
-      <p>
-  
-    
-      <a 
-href="http://www.franceculture.com/emission-place-de-la-toile.html">Place
- de la toile</a>
-      </p>
-  
-
-      <span class="date">
-  
-    
-      <div class="clear"></div>
-À écouter le 16.07.2010
-
-      </span>
-  
-
-      <span>
-  
-    
-      <span class="timer"><span class="date-display-single">59</span> 
-min.</span>
-      </span>
-  
-    </li>
-    </ul>
-    </div>
-  
-  
-  
-  
-  
-  
-</div>   </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
-<div id="block-views-diffusion_fo_blocs-block_1" class="block 
-block-views">
-  <div class="block-inner">
-      <h2 class="title"><span>Dernières diffusions</span></h2>
-  
-  <div class="block-content">
-  <div class="view view-diffusion-fo-blocs view-id-diffusion_fo_blocs 
-view-display-id-block_1 view-dom-id-13">
-    
-  
-  
-      <div class="view-content">
-      <div class="item-list">
-    <ul>
-          <li class="views-row views-row-1 views-row-odd 
-views-row-first">  
-  <div class="views-field-title-1">
-                <span class="field-content"><a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche-les-retours-du-dimanche-best-of-12-2010-07-18.html">LES
- RETOURS DU DIMANCHE - Best of 1/2</a></span>
-  </div>
-  
-  <div class="views-field-field-contenu-value">
-                <span class="field-content"><a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche-les-retours-du-dimanche-best-of-12-2010-07-18.html"
- title="Audio"><img src="emission_fichiers/picto-ecoute-rouge.png" 
-alt="Écouter l'émission" title="Écouter l'émission" class="pictos 
-rollover" height="15" width="15"></a><a title="[Popup]" 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- class="popups-form-reload popups-processed"><img 
-src="emission_fichiers/more-red.png" alt="Ajouter à ma liste de lecture"
- title="Ajouter à ma liste de lecture" class="pictos rollover" 
-height="15" width="15"></a><a 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- title="Mobile [Popup]" class="popups-form-reload popups-processed"><img
- src="emission_fichiers/picto-mobile.png" alt="Recevoir l'émission sur 
-mon mobile" title="Recevoir l'émission sur mon mobile" class="pictos 
-rollover" height="15" width="15"></a></span>
-  </div>
-  
-  <span class="views-field-field-diffusion-date-debut-fin-value">
-                <span class="field-content"><span 
-class="date-display-single">18.07.2010</span></span>
-  </span>
-  
-  <span class="views-field-field-diffusion-date-debut-fin-value-1">
-                <span class="field-content"><span class="timer"><span 
-class="date-display-single">49</span> min.</span></span>
-  </span>
-</li>
-          <li class="views-row views-row-2 views-row-even">  
-  <div class="views-field-title-1">
-                <span class="field-content"><a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche-medias-et-democratie-quel-est-le-role-du-journaliste-le-declin-du-m">Médias
- et démocratie: quel est le rôle du journaliste ? ; le déclin du 
-ministère des affaires étrangères ; les Roms</a></span>
-  </div>
-  
-  <div class="views-field-field-contenu-value">
-                <span class="field-content"><a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche-medias-et-democratie-quel-est-le-role-du-journaliste-le-declin-du-m"
- title="Audio"><img src="emission_fichiers/picto-ecoute-rouge.png" 
-alt="Écouter l'émission" title="Écouter l'émission" class="pictos 
-rollover" height="15" width="15"></a><a title="[Popup]" 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- class="popups-form-reload popups-processed"><img 
-src="emission_fichiers/more-red.png" alt="Ajouter à ma liste de lecture"
- title="Ajouter à ma liste de lecture" class="pictos rollover" 
-height="15" width="15"></a><a 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- title="Mobile [Popup]" class="popups-form-reload popups-processed"><img
- src="emission_fichiers/picto-mobile.png" alt="Recevoir l'émission sur 
-mon mobile" title="Recevoir l'émission sur mon mobile" class="pictos 
-rollover" height="15" width="15"></a></span>
-  </div>
-  
-  <span class="views-field-field-diffusion-date-debut-fin-value">
-                <span class="field-content"><span 
-class="date-display-single">11.07.2010</span></span>
-  </span>
-  
-  <span class="views-field-field-diffusion-date-debut-fin-value-1">
-                <span class="field-content"><span class="timer"><span 
-class="date-display-single">50</span> min.</span></span>
-  </span>
-</li>
-          <li class="views-row views-row-3 views-row-odd views-row-last">
-  
-  <div class="views-field-title-1">
-                <span class="field-content"><a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche-qu-est-ce-qu-une-decouverte-scientifique-l-avenir-d-eric-woerth-au-">Qu'est-ce
- qu'une découverte scientifique ? ; l'avenir d'Eric Woerth au 
-gouvernement ; hommage à Laurent Terzieff ; Percy Kemp</a></span>
-  </div>
-  
-  <div class="views-field-field-contenu-value">
-                <span class="field-content"><a 
-href="http://www.franceculture.com/emission-les-retours-du-dimanche-qu-est-ce-qu-une-decouverte-scientifique-l-avenir-d-eric-woerth-au-"
- title="Audio"><img src="emission_fichiers/picto-ecoute-rouge.png" 
-alt="Écouter l'émission" title="Écouter l'émission" class="pictos 
-rollover" height="15" width="15"></a><a title="[Popup]" 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- class="popups-form-reload popups-processed"><img 
-src="emission_fichiers/more-red.png" alt="Ajouter à ma liste de lecture"
- title="Ajouter à ma liste de lecture" class="pictos rollover" 
-height="15" width="15"></a><a 
-href="http://www.franceculture.com/user/connect?destination=node%2F2347301"
- title="Mobile [Popup]" class="popups-form-reload popups-processed"><img
- src="emission_fichiers/picto-mobile.png" alt="Recevoir l'émission sur 
-mon mobile" title="Recevoir l'émission sur mon mobile" class="pictos 
-rollover" height="15" width="15"></a></span>
-  </div>
-  
-  <span class="views-field-field-diffusion-date-debut-fin-value">
-                <span class="field-content"><span 
-class="date-display-single">04.07.2010</span></span>
-  </span>
-  
-  <span class="views-field-field-diffusion-date-debut-fin-value-1">
-                <span class="field-content"><span class="timer"><span 
-class="date-display-single">50</span> min.</span></span>
-  </span>
-</li>
-      </ul>
-</div>    </div>
-  
-  
-  
-  
-  
-  
-</div>   </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
- 
-            </div> <!-- /sidebar-right -->
-                    
-        <div class="clear"></div>
-        </div> <!-- /main -->
-
-        <!-- début du footer -->   
-        <div id="footer-top"><a name="acces-footer"></a><a href="#top" 
-class="back-to-top">retour en haut de page</a>
-           
-        <br class="clear">
-<div id="pub-bottom-right">
-           <div id="block-fcbloc-footer-adsense" class="block 
-block-fcbloc">
-  <div class="block-inner">
-  
-  <div class="block-content">
-  
-            <script language="JavaScript">
-            <!--
-              OAS_AD("BottomRight");
-            //-->
-            </script>  </div>
-
-      <div class="closure"></div>
-  </div>
-</div> <!-- /block -->
-         </div>
-        </div> <!-- /footer -->
-    
-    </div> <!-- /page-inner -->
-</div> <!-- /page -->
-  <div id="footer-commun" class="header-footer footer-franceculture"><div
- class="content-header-footer"><div id="footer-chaine"><div 
-id="colonne-liens-footer" class="colonne-footer colonne-footer-first"><a
- href="http://www.franceculture.com/"><img 
-src="emission_fichiers/franceculture.png" alt="logo de franceculture"></a><p><a
- href="http://www.franceculture.com/sitemap">plan du site</a></p><p><a 
-href="http://www.franceculture.com/a_propos">à propos</a></p><p><a 
-href="http://www.franceculture.com/contact">contact</a></p></div><!--fin de div colonne-liens-footer--><div
- id="colonne-ecouter-footer" class="colonne-footer"><h4>écouter</h4><ul><li
- class="color-chaine "><a href="http://www.franceculture.com/player" 
-class="rf-player-open rf-player-open-processed">direct</a></li><li><a 
-href="http://www.franceculture.com/programmes">grille</a></li><li><a 
-href="http://www.franceculture.com/frequences">fréquences</a></li><li><a
- href="http://www.franceculture.com/podcasts">podcasts</a></li><li><a 
-href="http://www.radiofrance.fr/boite-a-outils/widget/">applis</a></li><li><a
- href="http://www.radiofrance.fr/boite-a-outils/faq/">aide à l'écoute</a></li></ul></div><!--fin de div colonne-thematique-footer--><div
- id="colonne-thematique-footer" class="colonne-footer"><h4>thématiques</h4><ul><li><a
- href="http://www.franceculture.com/rubrique/information">information</a>
- - <span>économie, justice, politique française, relations 
-internationales</span></li><li><a 
-href="http://www.franceculture.com/rubrique/litterature">littérature</a>
- - <span>édition, poésie, prix littéraires, roman, théâtre</span></li><li><a
- href="http://www.franceculture.com/rubrique/idees">idées</a> - <span>débats,
- philosophie, sociologie</span></li><li><a 
-href="http://www.franceculture.com/rubrique/arts-spectacles">arts &amp; 
-spectacles</a> - <span>architecture, cinéma, danse, musique, spectacle, 
-télévision</span></li><li><a 
-href="http://www.franceculture.com/rubrique/histoire">histoire</a> - <span>histoire
- de l'art, histoire de France, histoire des idées, histoire des sciences</span></li><li><a
- href="http://www.franceculture.com/rubrique/sciences">sciences</a> - <span>astronomie,
- biologie, mathématiques, physique</span></li><li><a 
-href="http://www.franceculture.com/quelisentils">que lisent-ils</a> - <a
- href="http://www.franceculture.com/votre-agenda">votre agenda culturel</a>
- - <a href="http://www.franceculture.com/culture-academie">culture 
-académie</a> - <a href="http://www.franceculture.com/blogs">les blogs</a></li></ul></div><!--fin de div colonne-partager-footer--><div
- id="colonne-partager-footer" class="colonne-footer colonne-footer-last"><div
- id="liens-partage-footer"><h4>nous rejoindre</h4><ul><li 
-id="facebook-footer"><a 
-href="http://www.facebook.com/pages/FRANCE-CULTURE/83625483348?ref=ts" 
-class="gris">facebook</a></li><li id="twitter-footer"><a 
-href="http://www.twitter.com/france_culture" class="gris">twitter</a></li><li
- id="dailymotion-footer"><a 
-href="http://www.dailymotion.com/franceculture" class="gris">dailymotion</a></li><li
- class="clearer">&nbsp;</li></ul></div><!--fin de bloc 1--><div><h4>s'abonner</h4><span><a
- href="http://www.franceculture.com/podcasts" class="gris">podcasts</a></span>
- - <span><a href="http://www.franceculture.com/la-lettre" 
-class="color-chaine">newsletter</a></span></div></div><!--fin de div colonne-partager-footer--><div
- class="clearer">&nbsp;</div></div><div id="sous-footer"><div 
-id="footer-rf"><ul><li class="first"><a 
-href="http://www.radiofrance.fr/">radiofrance.fr</a></li><li><a 
-href="http://www.radiofrance.fr/les-blogs/blog-du-mediateur/">médiateur</a></li><li><a
- href="http://www.radiofrance.fr/liens-bas-de-page/mentionslegales/">mentions
- légales</a></li><li class="last"><a 
-href="http://www.radiofrance.fr/boite-a-outils/frequences/">fréquences</a></li><li
- class="last-page"><span class="haut-de-page"><a href="#top-page-ancre" 
-id="top-page" class="gris">haut de page</a></span></li></ul><p>Radio 
-France décline toute responsabilité quant au contenu des sites proposés 
-en liens</p></div><!--fin de div footer-rf--></div></div></div>  <script type="text/javascript">
-<!--//--><![CDATA[//><!--
-$.post(Drupal.settings.basePath + 'jstats.php', {"path":"node\/2347301","nid":"2347301"});
-//--><!]]>
-</script>
-<!-- eStat -->
-<script language="JavaScript">
-<!--
-var _PJS=0;
-//-->
-</script>
-<script language="JavaScript" src="emission_fichiers/265074200838.js"></script>
-<script language="JavaScript">
-<!--
-if(_PJS)
-{
-  eStat_id.cmclient("franceculture");
-  eStat_id.niveau(1,"information");
-  eStat_id.niveau(2,"les-retours-du-dimanche");
-  eStat_id.niveau(3,"le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belge-2010-06-20");
-  eStat_id.niveau(4,"histoire-gouvernement-debat");
-  eStat_tag.post("ml");
-}
-//-->
-</script>
-<noscript>
-<img src="http://stat3.cybermonitor.com/franceculture_v?c=information&p=les-retours-du-dimanche&l3=le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belge-2010-06-20&l4=histoire-gouvernement-debatst=0&sjs=0" border="0" width="1" height="1" />
-</noscript>
-<!-- /eStat -->
-<!-- xiti -->
-<script type="text/javascript">
-<!--
-xtnv = document;        //parent.document or top.document or document         
-xtsd = "http://logp";
-xtsite = "24121";
-xtn2 = "3";   // level 2 site 
-xtpage ="Emissions::les-retours-du-dimanche::le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belge-2010-06-20";        //page name
-xtdi = "";        //implication degree
-//-->
-</script>
-
-<script type="text/javascript" src="emission_fichiers/xtcore.js"></script>
-
-<noscript>
-<img width="1" height="1" alt="" src="http://logp.xiti.com/hit.xiti?s=24121&s2=3&p=Emissions::les-retours-du-dimanche::le-salaire-de-la-politique-les-vuvuzelas-l-actualite-politique-belge-2010-06-20&di=&" >
-</noscript>
-<!-- /xiti -->
-</body><div style="display: none; width: 24px;" id="diigotb-imagepanel"><div
- class="diigotb-btn enabled" title="Save this image to Diigo" 
-id="diigotb-quick-save"></div></div><div style="display: none;" 
-class="diigotb-border diigotb-left"></div><div style="display: none;" 
-class="diigotb-border diigotb-top"></div><div style="display: none;" 
-class="diigotb-border diigotb-right"></div><div style="display: none;" 
-class="diigotb-border diigotb-bottom"></div></html>
\ No newline at end of file
Binary file test/integration/allocine_dossier_independant/allocine_test/AcPlayer_v3.0_new.swf has changed
Binary file test/integration/allocine_dossier_independant/allocine_test/avatar.png has changed
--- a/test/integration/allocine_dossier_independant/allocine_test/data_cinecast_new.xml	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,198 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<AcVision>
-    <AcVisionVideo refType="mediatheme"
-    ref="18644642"
-    refTitle="La Minute"
-    cmedia="19299288"
-    videoTitle="La Minute N°1033 - Mardi 17 janvier 2012"
-    mediaType="show"
-    genre=""
-    urlGen="/video/emissions/laminute/episode/?cmedia=19299288"
-    ld_path="http://b.fr.mediaplayer.allocine.fr/nmedia/18/64/46/42/19299288_minute_2012_01_17_l_001.flv"
-    md_path="http://h.fr.mediaplayer.allocine.fr/nmedia/18/64/46/42/19299288_minute_2012_01_17_m_001.flv"
-    hd_path="http://hd.fr.mediaplayer.allocine.fr/nmedia/18/64/46/42/19299288_minute_2012_01_17_sd_001.flv"
-    xt_title="19299288_la_minute_emission_allocinetv"
-    thumb=""
-    urlFiche="laminute_home"
-/>
-    <AcVisionVideoSlides>
-        <AcVisionVideoSlide title="La Minute N°1043 - Mardi 31 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19303868_minute_2012_01_31.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19303868" />
-        <AcVisionVideoSlide title="La Minute N°1042 - Lundi 30 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19303866_minute_2012_01_30.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19303866" />
-        <AcVisionVideoSlide title="La Minute N°1041 - Samedi 28 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19303864_minute_2012_01_28.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19303864" />
-        <AcVisionVideoSlide title="La Minute N°1040 - Jeudi 26 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19303192_minute_2012_01_26.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19303192" />
-        <AcVisionVideoSlide title="La Minute N°1039 - Mercredi 25 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19302927_minute_2012_01_25.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19302927" />
-        <AcVisionVideoSlide title="La Minute N°1038 - Mardi 24 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19300902_minute_2012_01_24.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19300902" />
-        <AcVisionVideoSlide title="La Minute N°1037 - Lundi 23 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19300590_minute_2012_01_23.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19300590" />
-        <AcVisionVideoSlide title="La Minute N°1036 - Vendredi 20 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19300162_minute_2012_01_20.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19300162" />
-        <AcVisionVideoSlide title="La Minute N°1035 - Jeudi 19 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19299668_minute_2012_01_19.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19299668" />
-        <AcVisionVideoSlide title="La Minute N°1034 - Mercredi 18 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19299358_minute_2012_01_18.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19299358" />
-        <AcVisionVideoSlide title="La Minute N°1032 - Lundi 16 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19298693_minute_2012_01_16.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19298693" />
-        <AcVisionVideoSlide title="La Minute N°1031 - Vendredi 13 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19298503_minute_2012_01_13.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19298503" />
-        <AcVisionVideoSlide title="La Minute N°1030 - Jeudi 12 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19298131_minute_2012_01_12.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19298131" />
-
-        <AcVisionVideoSlide title="La Minute N°1029 - Mercredi 11 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19296197_minute_2012_01_11.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19296197" />
-        <AcVisionVideoSlide title="La Minute N°1028 - Mardi 10 janvier 2012"
-        thumb="/c_100_80/medias/nmedia/18/64/46/42/19290943_minute_2012_01_10.jpg"
-        link="/video/emissions/laminute/episode/?cmedia=19290943" />
-    </AcVisionVideoSlides>
-    <!-- skinSource: update cinecast -->
-    <AcVisionSkin skinSource="allocine_test/skin_fr.swf">
-        <clip nameId="titleTopPostRoll">
-            <label>
-                <![CDATA[AlloCiné présente: | Cliquez ici pour en savoir plus]]>
-            </label>
-        </clip>
-        <clip nameId="mcAddPostRoll" layer1="McAddPostRoll" x="0" y="0">
-            <label>
-                <![CDATA[Vidéo suivante dans|secondes]]>
-            </label>
-        </clip>
-        <clip nameId="bgAddPostRoll" layer1="BgAddPostRoll" y="20"/>
-        <clip nameId="pixAddPostRoll" y="20"/>
-        <clip nameId="titleAddPostRoll" y="30" x="100"/>
-
-        <clip nameId="accountAddPostRoll" x="10" y="2"/>
-        <clip nameId="fondNavPlayer" layer1="FondNavPlayer" width="760" height="36"/>
-        <clip nameId="soundVolume" x="77" y="13" width="36" height="36" layer3="SoundVolumeLayer1" layer2="SoundVolumeLayer2" layer1="SoundVolumeLayer3">
-            <info>
-                <![CDATA[Modifier le volume de la vidéo]]>
-            </info>
-        </clip>
-        <clip nameId="cutSound" x="55" y="13" stateOn="BtCutSoundOn" stateOff="BtCutSoundOff" stateClickOff="BtCutSoundClickOff" stateClickOn="BtCutSoundClickOn">
-            <info>
-                <![CDATA[Couper le son de la vidéo]]>
-            </info>
-        </clip>
-        <clip nameId="puceTimeLine" stateOn="PuceTimeLineOn" stateOff="PuceTimeLineOff"/>
-        <clip nameId="btPlay" x="4" y="11" width="42" height="22" stateOn="BtPlayOn" stateOff="BtPlayOff"/>
-        <clip nameId="btPause" x="4" y="11" width="42" height="22" stateOn="BtPauseOn" stateOff="BtPauseOff"/>
-        <clip nameId="btReplay2" x="4" y="11" width="42" height="22" stateOn="BtReplay2On" stateOff="BtReplay2Off" />
-        <clip nameId="btBigPlay" stateOn="BtBigPlayOn" stateOff="BtBigPlayOff"/>
-
-        <clip nameId="btHd" x="553" y="11" stateOn="BtHdOn" stateOff="BtHdOff" stateClickOn="BtHdClickOn">
-            <info>
-                <![CDATA[Changer la qualité de la vidéo]]>
-            </info>
-        </clip>
-        <clip nameId="btMenu" x="626" y="11" stateOn="BtMenuOn" stateOff="BtMenuOff"/>
-        <clip nameId="btMarque" link="www.allocine.fr" linkTarget="_blank" x="688" y="16" stateOn="BtMarqueOn" stateOff="BtMarqueOff">
-            <info>
-                <![CDATA[Se rendre sur allocine.fr]]>
-            </info>
-        </clip>
-        <clip nameId="btFullScreen" x="593" y="11" stateOn="BtFullScreenOn" stateOff="BtFullScreenOff" stateClickOn="BtFullScreenClickOn" stateClickOff="BtFullScreenClickOff">
-            <info>
-                <![CDATA[Mettre la vidéo en plein écran]]>
-            </info>
-        </clip>
-        <clip nameId="textTimer" x="120" y="13" color="0x444444"/>
-
-        <clip nameId="menuSubtitle" x="330" y="-2" color="0x9ea6b8"/>
-        <clip nameId="menuFlow" x="230" y="-2" color="0x9ea6b8"/>
-        <clip nameId="textTitle" x="215" y="13" color="0x005ea8" />
-        <clip nameId="btClose" stateOn="BtCloseOn" stateOff="BtCloseOff"/>
-        <clip nameId="logo" layer1="Logo" x="0" y="5"/>
-        <clip nameId="timeLine" x="2" y="2" round="false" width="756" height="5" color1="0xD6D6D6" color2="0x898989" color3="0x005ea8"/>
-        <clip nameId="btSearch" x="507" y="12" width="103" height="32" stateOn="BtSearchOn" stateOff="BtSearchOff">
-            <label>
-                <![CDATA[<b>Recherche</b>]]>
-            </label>
-        </clip>
-        <clip nameId="searchEngine">
-            <label>
-                <![CDATA[/recherche/?q=|&x=73&y=14&rub=0]]>
-            </label>
-        </clip>
-        <clip nameId="btCopy" x="360" width="73" height="30" stateOn="BtCopyOn" stateOff="BtCopyOff">
-
-            <label>
-                <![CDATA[<b>Copier</b>]]>
-            </label>
-        </clip>
-        <clip nameId="mcShare">
-            <label>
-                <![CDATA[Permalien :]]>
-            </label>
-        </clip>
-        <clip nameId="mcBlog">
-            <label>
-                <![CDATA[Lecteur exportable :|allocine_blog]]>
-            </label>
-        </clip>
-        <clip nameId="btScrollRight" stateOn="BtScrollRightOn" stateOff="BtScrollRightOff"/>
-        <clip nameId="btScrollLeft" stateOn="BtScrollLeftOn" stateOff="BtScrollLeftOff"/>
-        <clip nameId="btReplay" type="navCenter" action="replayHandler" y="115" stateOn="BtReplayOn" stateOff="BtReplayOff">
-
-            <label>
-                <![CDATA[<b>REJOUER</b>]]>
-            </label>
-        </clip>
-        <clip nameId="btShare" type="navCenter" action="shareHandler" x="110" y="115" stateOn="BtShareOn" stateOff="BtShareOff">
-            <label>
-                <![CDATA[<b>PARTAGER</b>]]>
-            </label>
-        </clip>
-        <clip nameId="btBlog" type="navCenter" action="blogHandler" x="220 " y="115" stateOn="BtBlogOn" stateOff="BtBlogOff">
-            <label>
-                <![CDATA[<b>SUR MON BLOG</b>]]>
-            </label>
-        </clip>
-        <clip nameId="btVideoSim" type="navCenter" action="videoSimHandler" x="330" y="115" stateOn="BtVideoSimOn" stateOff="BtVideoSimOff">
-            <label>
-                <![CDATA[<b>VIDÉOS <br>SIMILAIRES</b>]]>
-
-            </label>
-        </clip>
-        <clip nameId="titleEndScreen" >
-            <label>
-                <![CDATA[<b>Choisissez votre prochaine vidéo </b>]]>
-            </label>
-        </clip>
-        <clip nameId="textError" >
-            <label>
-                <![CDATA[<b>Erreur : cette vidéo n'est pas disponible.</b>]]>
-            </label>
-        </clip>
-        <clip nameId="errorAdBlock" >
-            <label>
-                <![CDATA[Cette vidéo ne se lance pas ?<br>Vous avez probablement activé une extension comme AdBlock dans votre navigateur. Merci de la désactiver et de recharger la page afin de lire cette vidéo.<br>Si votre problème persiste, n’hésitez pas à <b><a href='http://allocine.uservoice.com/forums/30575-allocin-v6-probl-mes-et-erreurs'>nous contacter</a></b> !]]>
-            </label>
-        </clip>
-
-    </AcVisionSkin>
-    <services>
-        <!--service className="McXitiService" nameService="xiti" file="services/xitiService.swf" pathConfig="http://www.allocine.fr/Modules/video/xml/XiTiTag.xml" /-->
-        <service className="McVastService" nameService="vast" file="services/vastService.swf" pathConfig="http://smart.allocine.fr/call/pubx/10936/[part]/7292/S/[timestamp]/[target]" >
-            <![CDATA[<b>Publicité</b> : votre vidéo commence dans | secondes]]>
-        </service>
-        <!---->
-    </services>
-</AcVision>
\ No newline at end of file
Binary file test/integration/allocine_dossier_independant/allocine_test/skin_fr.swf has changed
--- a/test/integration/allocine_dossier_independant/css/LdtPlayer.css	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,529 +0,0 @@
-/* Some general styling classes */
-
-.Ldt-floatClear {
-    display: block; width: 100%; height: 0; clear: both;
-}
-
-ul.Ldt-floatList {
-    padding: 0; margin: 0; list-style: none;
-}
-
-.Ldt-floatList li {
-    float: left;
-}
-
-/* */
-
-#demo-frame > div.demo { padding: 5px !important; };
-
-button.ui-button-icon-only  {
-  height:1.5em;
-  width:1.5em;
-}
-
-#Ldt-loader {
-    background:url(imgs/loader.gif) center no-repeat;
-    text-indent: -9999px;
-    position: absolute;
-}
-
-/* general class for all buttons */
-.Ldt-button {
-
-}
-
-.Ldt-SegmentsWidget {
- /* overflow: auto; /* clear the floats */
-  margin-top: 1px;
-  padding-bottom: 8px; /* FIXME: only a temporary fix. This should be put into the layout manager. */
-}
-
-.Ldt-iri-chapter {
-  position: absolute;
-  height: 10px;
-  border-right: 1px solid white;
-}
-
-.Ldt-SegmentPositionMarker {
-  position: absolute;
-  z-index: 100;
-  width: 1px;
-  height: 10px;
-  background-color: white;
-}
-.tooltip {
-  display:none;
-  background:transparent url(imgs/black_arrow_mini.png);
-  font-size:12px;
-  height:55px;
-  width:180px;
-  padding:10px;
-  padding-left:15px;
-  padding-top:15px;
-  padding-right:15px;
-  color:#000;
-  font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
-}
-#Ldt-Root{
-  font-family: "Trebuchet MS", "Helvetica", "Arial",  "Verdana", "sans-serif";
-}
-#Ldt-Hat{
-  height:3px;
-}
-
-.Ldt-AnnotationsWidget {
-  font-size: 12px;
-  font-family: "Arial",  "Verdana", "sans-serif";
-  background-color:#eeeeee;
-}
-
-.Ldt-AnnotationContent {
-  padding:5px;
-  padding-left: 12px;
-
-}
-
-.Ldt-fbShare {
-  display: block;
-  float: left;
-  width: 24px;
-  height: 24px;
-  background:url('imgs/facebook.png');
-}
-
-.Ldt-TwShare {
-  display: block;
-  float: left;
-  width: 24px;
-  height: 24px;
-  background:url('imgs/twitter.png');
-}
-
-.Ldt-GplusShare {
-  display: block;
-  float: left;
-  width: 24px;
-  height: 24px;
-  background:url('imgs/google.png');
-}
-
-.Ldt-SaTitle{
-  padding-top:2px;
-  padding-bottom:3px;
-  font-size: 12pt;
-  color : #0068c4;
-}
-
-.Ldt-SaDescription{
-  font-size:12px;
-}
-
-.Ldt-SaKeywords {  
-  font-weight:bold;  
-  font-size:10px;
-}
-
-.Ldt-AnnotationShareIcons {
-  float:right;
-  position: relative;
-}
-
-
-#Ldt-PlaceHolder{
-  position:absolue;
-  float:none;
-}
-
-.Ldt-Segments{
-  float:left;
-  font-size: 62.5%;
-}
-
-.Ldt-mode-radio{
-  visibility:hidden;
-  height:0px;
-  display:none
-}
-    
-.Ldt-cleaner {
-  clear:both;
-}
-
-.cleaner {
-  clear:both;
-}
-
-.share {
-  background:url('imgs/widget20.png') no-repeat scroll 0 0 transparent ;
-  display:block;
-  height:16px;
-  line-height:16px !important;
-  overflow:hidden;
-  width:16px;
-  float:left;
-  cursor:pointer;
-  margin:2px;
-}
-.shareFacebook{
-  background-position:0 -704px;
-}
-.shareMySpace{
-  background-position:0 -736px;
-}
-.shareTwitter{
-  background-position:0 -1072px;
-}
-.shareGoogle{
-  background-position:0 -752px;
-}
-.shareDelicious{
-  background-position:0 -672px;
-}
-.shareJamesPot{
-  background-position:0 -1808px;
-}
-
-.tip{
-  position: absolute;
-  padding : 3px;
-  z-index: 10000000000;
-  max-width: 200px;
-  background: transparent url("imgs/black_arrow_long.png");
-  font-size: 12px;
-  height: 115px;
-  width: 180px;
-  padding: 15px 15px 20px;
-  color: #ffffff;
-  font-family: "Trebuchet MS", "Helvetica", "Arial", "Verdana", "sans-serif";
-  overflow:hidden;
-}
-
-.tipcolor {
-    float: left; margin: 2px 4px 2px 0;
-}
-
-.tip img {
-    max-width: 140px; max-height: 70px; margin: 0 20px;
-}
-
-
-
-/* sparkline widget */
-.Ldt-sparklineWidget {
-  position: relative;
-  margin-bottom: 5px;
-}
-
-.Ldt-sparkLinePositionMarker {
-  position: absolute;
-  top: 0px;
-  width: 0px;
-  background-color: #333333;
-  border-right: solid 1px pink;
-  z-index: 3;
-  opacity: 0.2;
-}
-
-.Ldt-sparkLine {
-  position: absolute;
-  top: 0px;
-}
-
-.Ldt-sparkLineClickOverlay {
-  position: absolute;
-  width: 640px;
-  height: 60px;
-  z-index: 4;
-  top: 0px;
-  opacity: 0.3;
-}
-
-/* CINECAST Annotation Widget block */
-
-.Ldt-createAnnotationWidget {
-    width: 610px; padding-bottom: 10px; clear: both;
-    color: #fff;
-    background: url(img-cinecast/createannbgd.png) no-repeat bottom right;
-}
-
-.Ldt-createAnnotation-DoubleBorder {
-    width: 590px; position: relative; clear: both;
-    background: url(img-cinecast/createannbgd.png) no-repeat top left;
-    padding: 20px 10px 0;
-  min-height: 150px;
-}
-/* */
-
-.Ldt-createAnnotation-Title {
-  font-size: 12pt;
-  color : #0068c4;  
-  float: left;
-  margin-right: 5px;
-}
-
-.Ldt-createAnnotation-TimeFrame {
-  font-size: 12pt;
-  color : #ff5589;  
-  float: left;
-}
-.Ldt-createAnnotation-Container {
-  float: left; width: 100%; clear: both;
-}
-
-.Ldt-createAnnotation-userAvatar { 
-  float: right; 
-  width: 80px;
-  height: 64px;
-  border: 1px #ffffff;
-  margin: 5px 0;
-}
-
-.Ldt-createAnnotation-userAvatar img { 
-  margin: 0 auto; 
-  display: block;
-  max-width: 100%;
-  max-height: 100%;
-}
-
-.Ldt-createAnnotationWidget .Ldt-floatClear {
-    height: 30px; background: url(img-cinecast/logo.iri.small.png) left no-repeat;
-}
-
-/* CINECAST HIDE ARROW */
-
-.Ldt-createAnnotation-profileArrow {
-  display: none;
-}
-
-/* CINECAST SPECIFIC TEXTAREA */
-
-.Ldt-createAnnotation-Description {
-  float: left; background: url(img-cinecast/textarea.png); border: none; margin: 0; padding: 4px 8px 4px 4px; width: 493px; height: 68px;
-  resize: none;
-}
-/* */
-
-.Ldt-createAnnotation-btnblock {
-}
-
-.Ldt-createAnnotation-btnblock label {
-    float: left; margin-top: 20px; width: 480px; font-size: 14px; color: #ffffff;
-}
-
-/* CINECAST SPECIFIC TAG BUTTONS */
-
-.Ldt-createAnnotation-keywords ul {
-    width: 100%; clear: both;
-}
-
-.Ldt-createAnnotation-keywords li {
-    border: none; margin: 0 10px 5px 0; height: 23px; padding: 0 0 0 15px;
-    background: url(img-cinecast/tag.png) left top no-repeat;
-    cursor: pointer;
-}
-
-.Ldt-createAnnotation-keyword-button {
-  font-size: 13px; color: #ffffff; width: 170px; text-shadow: 1px 1px 1px #000000;
-  height: 23px; padding: 0 5px 0 0; border: none; margin: 0;
-  background: url(img-cinecast/tag.png) right top no-repeat;
-  cursor: pointer;
-}
-
-.Ldt-createAnnotation-keywords li:hover {
-  background-position: left -23px;
-}
-
-.Ldt-createAnnotation-keywords li:hover .Ldt-createAnnotation-keyword-button {
-  background-position: right -23px;
-}
-
-.Ldt-createAnnotation-keywords li.Ldt-createAnnotation-active-button {
-  background-position: left -46px; margin: 0 0 5px 0;
-}
-
-.Ldt-createAnnotation-keywords li.Ldt-createAnnotation-active-button .Ldt-createAnnotation-keyword-button {
-  background-position: right -46px; padding: 0 15px 0 0; width: 180px;
-}
-/* */
-
-/* CINECAST SUBMIT BUTTON */
-
-.Ldt-createAnnotation-submitButton {
-  float: right;
-  width: 96px;
-  height: 34px;
-  background: url(img-cinecast/greenbutton.png);
-  border: none;
-  margin: 8px 0;
-  font-size: 13px;
-  text-transform: uppercase;
-  cursor: pointer;
-}
-
-.Ldt-createAnnotation-submitButton:hover {
-    background-position: 0 -34px;
-}
-
-/* */
-
-.Ldt-createAnnotation-endScreen {
-  background-color: #ffffff;
-  margin-left: 5px;
-  margin-right: 5px;
-  border: 1px solid #d6d6d6;
-  padding: 10px;
-  font-size: 13px;
-  font-weight: bold;
-  color : #f7268e;
-  text-align: center;
-}
-
-.Ldt-createAnnotation-errorMessage {
-  color: #D93C71;
-}
-
-.Ldt-createAnnotation-Minimize {
-  position: relative;
-  float: right;
-  height: 17px;
-  width: 17px;
-  right: 0px;
-  background:url('imgs/minimize.png');
-}
-
-/* */
-
-.Ldt-createAnnotation-spinner {
-	display: inline;
-	width: 16px;
-	height: 16px;
-	background-image('imgs/spinner.gif');
-}
-
-.Ldt-createAnnotation-endScreen-TweetLink {
-	width: 54px;
-	height: 20px;
-	background-image('imgs/tweet_button.png');
-}
-
-.Ldt-createAnnotation-endScreen-FbLink {
-	width: 55px;
-	height: 20px;
-	background-image('imgs/facebook_button.png');
-}
-
-.Ldt-createAnnotation-endScreen-GplusLink {
-	width: 50px;
-	height: 20px;
-	background-image('imgs/gplus_button.png');
-}
-/* AnnotationsListWidget */
-
-.Ldt-AnnotationsListWidget {
-  font-size: 12px;
-  font-family: "Arial",  "Verdana", "sans-serif";
-}
-
-.Ldt-AnnotationsList-ul {
-  list-style: none;
-  padding: 0 3px;
-}
-
-.Ldt-AnnotationsList-li {
-  float: left; width: 100%; clear: both;
-  margin: 2px 0; padding: 2px 0;
-  position: relative;
-  min-height: 70px;
-  background: #000000;
-}
-
-.Ldt-AnnotationsList-li:hover {
-  background-color: #333333;
-}
-
-.Ldt-AnnotationsListWidget a {
-  text-decoration: none;
-}
-
-.Ldt-AnnotationsListWidget a:hover {
-  text-decoration: underline;
-}
-
-.Ldt-AnnotationsList-Thumbnail {
-    border: none;
-    float: left;
-    max-width: 75px;
-    max-height: 48px;
-}
-
-.Ldt-AnnotationsList-Duration {  
-  color : #ffffff;
-  position: absolute; top: 55px; left: 5px; text-align: center;
-}
-
-.Ldt-AnnotationsList-TcSeparator, .Ldt-AnnotationsList-End {
-    display: none;
-}
-
-.Ldt-AnnotationsList-Title {
-  font-size: 13px;
-  margin: 0 0 2px 80px;
-  color: #ffffff;
-}
-
-.Ldt-AnnotationsList-Description {
-  font-style: italic;
-  margin: 0 0 2px 80px;
-}
-
-.Ldt-AnnotationsList-Description a {
-    color: #dddddd;
-}
-
-.Ldt-AnnotationsList-Tags {
-    float: left; clear: both; padding: 0; margin: 2px 0 0 80px; list-style: none;
-}
-
-.Ldt-AnnotationsList-Tag-Li {
-    float: left; border: none; margin: 0 0 0 5px; height: 23px; padding: 0 0 0 20px;
-    background: url(img-cinecast/tag.png) left top no-repeat;
-    cursor: pointer;
-}
-
-.Ldt-AnnotationsList-Tag-Div {
-  font-size: 13px; color: #ffffff; text-shadow: 1px 1px 1px #000000;
-  height: 19px; padding: 4px 5px 0 0; border: none; margin: 0;
-  background: url(img-cinecast/tag.png) right top no-repeat;
-    cursor: pointer;
-}
-
-.Ldt-createAnnotation-moar-keywordz {
-    float: right; font-size: 13px; color: #ffffff; text-shadow: 1px 1px 1px #000000; cursor: pointer;
-    width: 140px; height: 23px; background: url(img-cinecast/moar.png); border: none; margin: 0 15px;
-}
-
-.Ldt-createAnnotation-moar-keywordz:hover {
-    background-position: bottom;
-}
-
-/* Tagcloud */
-
-.Ldt-TagCloud {
-    font-family: "PT Sans", Arial, Helvetica, sans-serif;
-}
-
-.Ldt-TagCloud ul {
-    list-style: none; padding: 0; margin: 5px; text-align: center;
-}
-
-.Ldt-TagCloud li {
-    display: inline-block; margin: 2px; cursor:pointer; cursor:hand;
-}
-
-.Ldt-TagCloud li:hover {
-    color: #0099ff;
-}
-
-.Ldt-TagCloud-actif {
-    color: #c000c0;
-}
Binary file test/integration/allocine_dossier_independant/css/img-cinecast/controlbarbgd.png has changed
Binary file test/integration/allocine_dossier_independant/css/img-cinecast/controlbarspacer.png has changed
Binary file test/integration/allocine_dossier_independant/css/img-cinecast/createannbgd.png has changed
Binary file test/integration/allocine_dossier_independant/css/img-cinecast/greenbutton.png has changed
Binary file test/integration/allocine_dossier_independant/css/img-cinecast/logo.iri.small.png has changed
Binary file test/integration/allocine_dossier_independant/css/img-cinecast/moar.png has changed
Binary file test/integration/allocine_dossier_independant/css/img-cinecast/player-sprites.png has changed
Binary file test/integration/allocine_dossier_independant/css/img-cinecast/sliderpos.png has changed
Binary file test/integration/allocine_dossier_independant/css/img-cinecast/tag.png has changed
Binary file test/integration/allocine_dossier_independant/css/img-cinecast/textarea.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/annotate_arrow.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/arrow.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/black.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/black_arrow.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/black_arrow_big.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/black_arrow_long.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/black_big.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/delicious.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/facebook.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/facebook_button.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/google.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/gplus_button.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/grey_arrow_Show.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/left_edge_arrow.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/left_handle.gif has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/linkedin.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/loader.gif has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/minimize.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/player_gradient.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/polemic_buttons_sprite.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/purple_arrow_Show.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/reply_sprite.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/retweet_sprite.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/right_edge_arrow.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/right_handle.gif has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/spinner.gif has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/submit_annotation.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/transBlack.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/tweet_button.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/twitter.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/user_default_icon.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/video_sequence.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/white.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/white_arrow.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/white_arrow_big.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/white_arrow_long.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/white_arrow_mini.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/white_big.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/widget20.png has changed
Binary file test/integration/allocine_dossier_independant/css/imgs/wire_pattern.png has changed
--- a/test/integration/allocine_dossier_independant/js/LdtPlayer-release.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6255 +0,0 @@
-/* 
- * 	
- *	Copyright 2010-2012 Institut de recherche et d'innovation 
- *	contributor(s) : Karim Hamidou, Samuel Huron, Raphael Velt, Thibaut Cavalie
- *	 
- *	contact@iri.centrepompidou.fr
- *	http://www.iri.centrepompidou.fr 
- *	 
- *	This software is a computer program whose purpose is to show and add annotations on a video .
- *	This software is governed by the CeCILL-C license under French law and
- *	abiding by the rules of distribution of free software. You can  use, 
- *	modify and/ or redistribute the software under the terms of the CeCILL-C
- *	license as circulated by CEA, CNRS and INRIA at the following URL
- *	"http://www.cecill.info". 
- *	
- *	The fact that you are presently reading this means that you have had
- *	knowledge of the CeCILL-C license and that you accept its terms.
-*/
-/*! LAB.js (LABjs :: Loading And Blocking JavaScript)
-    v2.0.3 (c) Kyle Simpson
-    MIT License
-*/
-
-(function(global){
-	var _$LAB = global.$LAB,
-	
-		// constants for the valid keys of the options object
-		_UseLocalXHR = "UseLocalXHR",
-		_AlwaysPreserveOrder = "AlwaysPreserveOrder",
-		_AllowDuplicates = "AllowDuplicates",
-		_CacheBust = "CacheBust",
-		/*!START_DEBUG*/_Debug = "Debug",/*!END_DEBUG*/
-		_BasePath = "BasePath",
-		
-		// stateless variables used across all $LAB instances
-		root_page = /^[^?#]*\//.exec(location.href)[0],
-		root_domain = /^\w+\:\/\/\/?[^\/]+/.exec(root_page)[0],
-		append_to = document.head || document.getElementsByTagName("head"),
-		
-		// inferences... ick, but still necessary
-		opera_or_gecko = (global.opera && Object.prototype.toString.call(global.opera) == "[object Opera]") || ("MozAppearance" in document.documentElement.style),
-
-/*!START_DEBUG*/
-		// console.log() and console.error() wrappers
-		log_msg = function(){}, 
-		log_error = log_msg,
-/*!END_DEBUG*/
-		
-		// feature sniffs (yay!)
-		test_script_elem = document.createElement("script"),
-		explicit_preloading = typeof test_script_elem.preload == "boolean", // http://wiki.whatwg.org/wiki/Script_Execution_Control#Proposal_1_.28Nicholas_Zakas.29
-		real_preloading = explicit_preloading || (test_script_elem.readyState && test_script_elem.readyState == "uninitialized"), // will a script preload with `src` set before DOM append?
-		script_ordered_async = !real_preloading && test_script_elem.async === true, // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
-		
-		// XHR preloading (same-domain) and cache-preloading (remote-domain) are the fallbacks (for some browsers)
-		xhr_or_cache_preloading = !real_preloading && !script_ordered_async && !opera_or_gecko
-	;
-
-/*!START_DEBUG*/
-	// define console wrapper functions if applicable
-	if (global.console && global.console.log) {
-		if (!global.console.error) global.console.error = global.console.log;
-		log_msg = function(msg) { global.console.log(msg); };
-		log_error = function(msg,err) { global.console.error(msg,err); };
-	}
-/*!END_DEBUG*/
-
-	// test for function
-	function is_func(func) { return Object.prototype.toString.call(func) == "[object Function]"; }
-
-	// test for array
-	function is_array(arr) { return Object.prototype.toString.call(arr) == "[object Array]"; }
-
-	// make script URL absolute/canonical
-	function canonical_uri(src,base_path) {
-		var absolute_regex = /^\w+\:\/\//;
-		
-		// is `src` is protocol-relative (begins with // or ///), prepend protocol
-		if (/^\/\/\/?/.test(src)) {
-			src = location.protocol + src;
-		}
-		// is `src` page-relative? (not an absolute URL, and not a domain-relative path, beginning with /)
-		else if (!absolute_regex.test(src) && src.charAt(0) != "/") {
-			// prepend `base_path`, if any
-			src = (base_path || "") + src;
-		}
-		// make sure to return `src` as absolute
-		return absolute_regex.test(src) ? src : ((src.charAt(0) == "/" ? root_domain : root_page) + src);
-	}
-
-	// merge `source` into `target`
-	function merge_objs(source,target) {
-		for (var k in source) { if (source.hasOwnProperty(k)) {
-			target[k] = source[k]; // TODO: does this need to be recursive for our purposes?
-		}}
-		return target;
-	}
-
-	// does the chain group have any ready-to-execute scripts?
-	function check_chain_group_scripts_ready(chain_group) {
-		var any_scripts_ready = false;
-		for (var i=0; i<chain_group.scripts.length; i++) {
-			if (chain_group.scripts[i].ready && chain_group.scripts[i].exec_trigger) {
-				any_scripts_ready = true;
-				chain_group.scripts[i].exec_trigger();
-				chain_group.scripts[i].exec_trigger = null;
-			}
-		}
-		return any_scripts_ready;
-	}
-
-	// creates a script load listener
-	function create_script_load_listener(elem,registry_item,flag,onload) {
-		elem.onload = elem.onreadystatechange = function() {
-			if ((elem.readyState && elem.readyState != "complete" && elem.readyState != "loaded") || registry_item[flag]) return;
-			elem.onload = elem.onreadystatechange = null;
-			onload();
-		};
-	}
-
-	// script executed handler
-	function script_executed(registry_item) {
-		registry_item.ready = registry_item.finished = true;
-		for (var i=0; i<registry_item.finished_listeners.length; i++) {
-			registry_item.finished_listeners[i]();
-		}
-		registry_item.ready_listeners = [];
-		registry_item.finished_listeners = [];
-	}
-
-	// make the request for a scriptha
-	function request_script(chain_opts,script_obj,registry_item,onload,preload_this_script) {
-		// setTimeout() "yielding" prevents some weird race/crash conditions in older browsers
-		setTimeout(function(){
-			var script, src = script_obj.real_src, xhr;
-			
-			// don't proceed until `append_to` is ready to append to
-			if ("item" in append_to) { // check if `append_to` ref is still a live node list
-				if (!append_to[0]) { // `append_to` node not yet ready
-					// try again in a little bit -- note: will re-call the anonymous function in the outer setTimeout, not the parent `request_script()`
-					setTimeout(arguments.callee,25);
-					return;
-				}
-				// reassign from live node list ref to pure node ref -- avoids nasty IE bug where changes to DOM invalidate live node lists
-				append_to = append_to[0];
-			}
-			script = document.createElement("script");
-			if (script_obj.type) script.type = script_obj.type;
-			if (script_obj.charset) script.charset = script_obj.charset;
-			
-			// should preloading be used for this script?
-			if (preload_this_script) {
-				// real script preloading?
-				if (real_preloading) {
-					/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script preload: "+src);/*!END_DEBUG*/
-					registry_item.elem = script;
-					if (explicit_preloading) { // explicit preloading (aka, Zakas' proposal)
-						script.preload = true;
-						script.onpreload = onload;
-					}
-					else {
-						script.onreadystatechange = function(){
-							if (script.readyState == "loaded") onload();
-						};
-					}
-					script.src = src;
-					// NOTE: no append to DOM yet, appending will happen when ready to execute
-				}
-				// same-domain and XHR allowed? use XHR preloading
-				else if (preload_this_script && src.indexOf(root_domain) == 0 && chain_opts[_UseLocalXHR]) {
-					xhr = new XMLHttpRequest(); // note: IE never uses XHR (it supports true preloading), so no more need for ActiveXObject fallback for IE <= 7
-					/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script preload (xhr): "+src);/*!END_DEBUG*/
-					xhr.onreadystatechange = function() {
-						if (xhr.readyState == 4) {
-							xhr.onreadystatechange = function(){}; // fix a memory leak in IE
-							registry_item.text = xhr.responseText + "\n//@ sourceURL=" + src; // http://blog.getfirebug.com/2009/08/11/give-your-eval-a-name-with-sourceurl/
-							onload();
-						}
-					};
-					xhr.open("GET",src);
-					xhr.send();
-				}
-				// as a last resort, use cache-preloading
-				else {
-					/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script preload (cache): "+src);/*!END_DEBUG*/
-					script.type = "text/cache-script";
-					create_script_load_listener(script,registry_item,"ready",function() {
-						append_to.removeChild(script);
-						onload();
-					});
-					script.src = src;
-					append_to.insertBefore(script,append_to.firstChild);
-				}
-			}
-			// use async=false for ordered async? parallel-load-serial-execute http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
-			else if (script_ordered_async) {
-				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script load (ordered async): "+src);/*!END_DEBUG*/
-				script.async = false;
-				create_script_load_listener(script,registry_item,"finished",onload);
-				script.src = src;
-				append_to.insertBefore(script,append_to.firstChild);
-			}
-			// otherwise, just a normal script element
-			else {
-				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script load: "+src);/*!END_DEBUG*/
-				create_script_load_listener(script,registry_item,"finished",onload);
-				script.src = src;
-				append_to.insertBefore(script,append_to.firstChild);
-			}
-		},0);
-	}
-		
-	// create a clean instance of $LAB
-	function create_sandbox() {
-		var global_defaults = {},
-			can_use_preloading = real_preloading || xhr_or_cache_preloading,
-			queue = [],
-			registry = {},
-			instanceAPI
-		;
-		
-		// global defaults
-		global_defaults[_UseLocalXHR] = true;
-		global_defaults[_AlwaysPreserveOrder] = false;
-		global_defaults[_AllowDuplicates] = false;
-		global_defaults[_CacheBust] = false;
-		/*!START_DEBUG*/global_defaults[_Debug] = false;/*!END_DEBUG*/
-		global_defaults[_BasePath] = "";
-
-		// execute a script that has been preloaded already
-		function execute_preloaded_script(chain_opts,script_obj,registry_item) {
-			var script;
-			
-			function preload_execute_finished() {
-				if (script != null) { // make sure this only ever fires once
-					script = null;
-					script_executed(registry_item);
-				}
-			}
-			
-			if (registry[script_obj.src].finished) return;
-			if (!chain_opts[_AllowDuplicates]) registry[script_obj.src].finished = true;
-			
-			script = registry_item.elem || document.createElement("script");
-			if (script_obj.type) script.type = script_obj.type;
-			if (script_obj.charset) script.charset = script_obj.charset;
-			create_script_load_listener(script,registry_item,"finished",preload_execute_finished);
-			
-			// script elem was real-preloaded
-			if (registry_item.elem) {
-				registry_item.elem = null;
-			}
-			// script was XHR preloaded
-			else if (registry_item.text) {
-				script.onload = script.onreadystatechange = null;	// script injection doesn't fire these events
-				script.text = registry_item.text;
-			}
-			// script was cache-preloaded
-			else {
-				script.src = script_obj.real_src;
-			}
-			append_to.insertBefore(script,append_to.firstChild);
-
-			// manually fire execution callback for injected scripts, since events don't fire
-			if (registry_item.text) {
-				preload_execute_finished();
-			}
-		}
-	
-		// process the script request setup
-		function do_script(chain_opts,script_obj,chain_group,preload_this_script) {
-			var registry_item,
-				registry_items,
-				ready_cb = function(){ script_obj.ready_cb(script_obj,function(){ execute_preloaded_script(chain_opts,script_obj,registry_item); }); },
-				finished_cb = function(){ script_obj.finished_cb(script_obj,chain_group); }
-			;
-			
-			script_obj.src = canonical_uri(script_obj.src,chain_opts[_BasePath]);
-			script_obj.real_src = script_obj.src + 
-				// append cache-bust param to URL?
-				(chain_opts[_CacheBust] ? ((/\?.*$/.test(script_obj.src) ? "&_" : "?_") + ~~(Math.random()*1E9) + "=") : "")
-			;
-			
-			if (!registry[script_obj.src]) registry[script_obj.src] = {items:[],finished:false};
-			registry_items = registry[script_obj.src].items;
-
-			// allowing duplicates, or is this the first recorded load of this script?
-			if (chain_opts[_AllowDuplicates] || registry_items.length == 0) {
-				registry_item = registry_items[registry_items.length] = {
-					ready:false,
-					finished:false,
-					ready_listeners:[ready_cb],
-					finished_listeners:[finished_cb]
-				};
-
-				request_script(chain_opts,script_obj,registry_item,
-					// which callback type to pass?
-					(
-					 	(preload_this_script) ? // depends on script-preloading
-						function(){
-							registry_item.ready = true;
-							for (var i=0; i<registry_item.ready_listeners.length; i++) {
-								registry_item.ready_listeners[i]();
-							}
-							registry_item.ready_listeners = [];
-						} :
-						function(){ script_executed(registry_item); }
-					),
-					// signal if script-preloading should be used or not
-					preload_this_script
-				);
-			}
-			else {
-				registry_item = registry_items[0];
-				if (registry_item.finished) {
-					finished_cb();
-				}
-				else {
-					registry_item.finished_listeners.push(finished_cb);
-				}
-			}
-		}
-
-		// creates a closure for each separate chain spawned from this $LAB instance, to keep state cleanly separated between chains
-		function create_chain() {
-			var chainedAPI,
-				chain_opts = merge_objs(global_defaults,{}),
-				chain = [],
-				exec_cursor = 0,
-				scripts_currently_loading = false,
-				group
-			;
-			
-			// called when a script has finished preloading
-			function chain_script_ready(script_obj,exec_trigger) {
-				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("script preload finished: "+script_obj.real_src);/*!END_DEBUG*/
-				script_obj.ready = true;
-				script_obj.exec_trigger = exec_trigger;
-				advance_exec_cursor(); // will only check for 'ready' scripts to be executed
-			}
-
-			// called when a script has finished executing
-			function chain_script_executed(script_obj,chain_group) {
-				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("script execution finished: "+script_obj.real_src);/*!END_DEBUG*/
-				script_obj.ready = script_obj.finished = true;
-				script_obj.exec_trigger = null;
-				// check if chain group is all finished
-				for (var i=0; i<chain_group.scripts.length; i++) {
-					if (!chain_group.scripts[i].finished) return;
-				}
-				// chain_group is all finished if we get this far
-				chain_group.finished = true;
-				advance_exec_cursor();
-			}
-
-			// main driver for executing each part of the chain
-			function advance_exec_cursor() {
-				while (exec_cursor < chain.length) {
-					if (is_func(chain[exec_cursor])) {
-						/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("$LAB.wait() executing: "+chain[exec_cursor]);/*!END_DEBUG*/
-						try { chain[exec_cursor++](); } catch (err) {
-							/*!START_DEBUG*/if (chain_opts[_Debug]) log_error("$LAB.wait() error caught: ",err);/*!END_DEBUG*/
-						}
-						continue;
-					}
-					else if (!chain[exec_cursor].finished) {
-						if (check_chain_group_scripts_ready(chain[exec_cursor])) continue;
-						break;
-					}
-					exec_cursor++;
-				}
-				// we've reached the end of the chain (so far)
-				if (exec_cursor == chain.length) {
-					scripts_currently_loading = false;
-					group = false;
-				}
-			}
-			
-			// setup next chain script group
-			function init_script_chain_group() {
-				if (!group || !group.scripts) {
-					chain.push(group = {scripts:[],finished:true});
-				}
-			}
-
-			// API for $LAB chains
-			chainedAPI = {
-				// start loading one or more scripts
-				script:function(){
-					for (var i=0; i<arguments.length; i++) {
-						(function(script_obj,script_list){
-							var splice_args;
-							
-							if (!is_array(script_obj)) {
-								script_list = [script_obj];
-							}
-							for (var j=0; j<script_list.length; j++) {
-								init_script_chain_group();
-								script_obj = script_list[j];
-								
-								if (is_func(script_obj)) script_obj = script_obj();
-								if (!script_obj) continue;
-								if (is_array(script_obj)) {
-									// set up an array of arguments to pass to splice()
-									splice_args = [].slice.call(script_obj); // first include the actual array elements we want to splice in
-									splice_args.unshift(j,1); // next, put the `index` and `howMany` parameters onto the beginning of the splice-arguments array
-									[].splice.apply(script_list,splice_args); // use the splice-arguments array as arguments for splice()
-									j--; // adjust `j` to account for the loop's subsequent `j++`, so that the next loop iteration uses the same `j` index value
-									continue;
-								}
-								if (typeof script_obj == "string") script_obj = {src:script_obj};
-								script_obj = merge_objs(script_obj,{
-									ready:false,
-									ready_cb:chain_script_ready,
-									finished:false,
-									finished_cb:chain_script_executed
-								});
-								group.finished = false;
-								group.scripts.push(script_obj);
-								
-								do_script(chain_opts,script_obj,group,(can_use_preloading && scripts_currently_loading));
-								scripts_currently_loading = true;
-								
-								if (chain_opts[_AlwaysPreserveOrder]) chainedAPI.wait();
-							}
-						})(arguments[i],arguments[i]);
-					}
-					return chainedAPI;
-				},
-				// force LABjs to pause in execution at this point in the chain, until the execution thus far finishes, before proceeding
-				wait:function(){
-					if (arguments.length > 0) {
-						for (var i=0; i<arguments.length; i++) {
-							chain.push(arguments[i]);
-						}
-						group = chain[chain.length-1];
-					}
-					else group = false;
-					
-					advance_exec_cursor();
-					
-					return chainedAPI;
-				}
-			};
-
-			// the first chain link API (includes `setOptions` only this first time)
-			return {
-				script:chainedAPI.script, 
-				wait:chainedAPI.wait, 
-				setOptions:function(opts){
-					merge_objs(opts,chain_opts);
-					return chainedAPI;
-				}
-			};
-		}
-
-		// API for each initial $LAB instance (before chaining starts)
-		instanceAPI = {
-			// main API functions
-			setGlobalDefaults:function(opts){
-				merge_objs(opts,global_defaults);
-				return instanceAPI;
-			},
-			setOptions:function(){
-				return create_chain().setOptions.apply(null,arguments);
-			},
-			script:function(){
-				return create_chain().script.apply(null,arguments);
-			},
-			wait:function(){
-				return create_chain().wait.apply(null,arguments);
-			},
-
-			// built-in queuing for $LAB `script()` and `wait()` calls
-			// useful for building up a chain programmatically across various script locations, and simulating
-			// execution of the chain
-			queueScript:function(){
-				queue[queue.length] = {type:"script", args:[].slice.call(arguments)};
-				return instanceAPI;
-			},
-			queueWait:function(){
-				queue[queue.length] = {type:"wait", args:[].slice.call(arguments)};
-				return instanceAPI;
-			},
-			runQueue:function(){
-				var $L = instanceAPI, len=queue.length, i=len, val;
-				for (;--i>=0;) {
-					val = queue.shift();
-					$L = $L[val.type].apply(null,val.args);
-				}
-				return $L;
-			},
-
-			// rollback `[global].$LAB` to what it was before this file was loaded, the return this current instance of $LAB
-			noConflict:function(){
-				global.$LAB = _$LAB;
-				return instanceAPI;
-			},
-
-			// create another clean instance of $LAB
-			sandbox:function(){
-				return create_sandbox();
-			}
-		};
-
-		return instanceAPI;
-	}
-
-	// create the main instance of $LAB
-	global.$LAB = create_sandbox();
-
-
-	/* The following "hack" was suggested by Andrea Giammarchi and adapted from: http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html
-	   NOTE: this hack only operates in FF and then only in versions where document.readyState is not present (FF < 3.6?).
-	   
-	   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 
-	   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 
-	   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. 
-	   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 
-	   fixed by this hack, and should therefore **not** be lazy-loaded by script loader tools such as LABjs.
-	*/ 
-	(function(addEvent,domLoaded,handler){
-		if (document.readyState == null && document[addEvent]){
-			document.readyState = "loading";
-			document[addEvent](domLoaded,handler = function(){
-				document.removeEventListener(domLoaded,handler,false);
-				document.readyState = "complete";
-			},false);
-		}
-	})("addEventListener","DOMContentLoaded");
-
-})(this);/*
-  mustache.js — Logic-less templates in JavaScript
-
-  See http://mustache.github.com/ for more info.
-*/
-
-var Mustache = function () {
-  var _toString = Object.prototype.toString;
-
-  Array.isArray = Array.isArray || function (obj) {
-    return _toString.call(obj) == "[object Array]";
-  }
-
-  var _trim = String.prototype.trim, trim;
-
-  if (_trim) {
-    trim = function (text) {
-      return text == null ? "" : _trim.call(text);
-    }
-  } else {
-    var trimLeft, trimRight;
-
-    // IE doesn't match non-breaking spaces with \s.
-    if ((/\S/).test("\xA0")) {
-      trimLeft = /^[\s\xA0]+/;
-      trimRight = /[\s\xA0]+$/;
-    } else {
-      trimLeft = /^\s+/;
-      trimRight = /\s+$/;
-    }
-
-    trim = function (text) {
-      return text == null ? "" :
-        text.toString().replace(trimLeft, "").replace(trimRight, "");
-    }
-  }
-
-  var escapeMap = {
-    "&": "&amp;",
-    "<": "&lt;",
-    ">": "&gt;",
-    '"': '&quot;',
-    "'": '&#39;'
-  };
-
-  function escapeHTML(string) {
-    return String(string).replace(/&(?!\w+;)|[<>"']/g, function (s) {
-      return escapeMap[s] || s;
-    });
-  }
-
-  var regexCache = {};
-  var Renderer = function () {};
-
-  Renderer.prototype = {
-    otag: "{{",
-    ctag: "}}",
-    pragmas: {},
-    buffer: [],
-    pragmas_implemented: {
-      "IMPLICIT-ITERATOR": true
-    },
-    context: {},
-
-    render: function (template, context, partials, in_recursion) {
-      // reset buffer & set context
-      if (!in_recursion) {
-        this.context = context;
-        this.buffer = []; // TODO: make this non-lazy
-      }
-
-      // fail fast
-      if (!this.includes("", template)) {
-        if (in_recursion) {
-          return template;
-        } else {
-          this.send(template);
-          return;
-        }
-      }
-
-      // get the pragmas together
-      template = this.render_pragmas(template);
-
-      // render the template
-      var html = this.render_section(template, context, partials);
-
-      // render_section did not find any sections, we still need to render the tags
-      if (html === false) {
-        html = this.render_tags(template, context, partials, in_recursion);
-      }
-
-      if (in_recursion) {
-        return html;
-      } else {
-        this.sendLines(html);
-      }
-    },
-
-    /*
-      Sends parsed lines
-    */
-    send: function (line) {
-      if (line !== "") {
-        this.buffer.push(line);
-      }
-    },
-
-    sendLines: function (text) {
-      if (text) {
-        var lines = text.split("\n");
-        for (var i = 0; i < lines.length; i++) {
-          this.send(lines[i]);
-        }
-      }
-    },
-
-    /*
-      Looks for %PRAGMAS
-    */
-    render_pragmas: function (template) {
-      // no pragmas
-      if (!this.includes("%", template)) {
-        return template;
-      }
-
-      var that = this;
-      var regex = this.getCachedRegex("render_pragmas", function (otag, ctag) {
-        return new RegExp(otag + "%([\\w-]+) ?([\\w]+=[\\w]+)?" + ctag, "g");
-      });
-
-      return template.replace(regex, function (match, pragma, options) {
-        if (!that.pragmas_implemented[pragma]) {
-          throw({message:
-            "This implementation of mustache doesn't understand the '" +
-            pragma + "' pragma"});
-        }
-        that.pragmas[pragma] = {};
-        if (options) {
-          var opts = options.split("=");
-          that.pragmas[pragma][opts[0]] = opts[1];
-        }
-        return "";
-        // ignore unknown pragmas silently
-      });
-    },
-
-    /*
-      Tries to find a partial in the curent scope and render it
-    */
-    render_partial: function (name, context, partials) {
-      name = trim(name);
-      if (!partials || partials[name] === undefined) {
-        throw({message: "unknown_partial '" + name + "'"});
-      }
-      if (!context || typeof context[name] != "object") {
-        return this.render(partials[name], context, partials, true);
-      }
-      return this.render(partials[name], context[name], partials, true);
-    },
-
-    /*
-      Renders inverted (^) and normal (#) sections
-    */
-    render_section: function (template, context, partials) {
-      if (!this.includes("#", template) && !this.includes("^", template)) {
-        // did not render anything, there were no sections
-        return false;
-      }
-
-      var that = this;
-
-      var regex = this.getCachedRegex("render_section", function (otag, ctag) {
-        // This regex matches _the first_ section ({{#foo}}{{/foo}}), and captures the remainder
-        return new RegExp(
-          "^([\\s\\S]*?)" +         // all the crap at the beginning that is not {{*}} ($1)
-
-          otag +                    // {{
-          "(\\^|\\#)\\s*(.+)\\s*" + //  #foo (# == $2, foo == $3)
-          ctag +                    // }}
-
-          "\n*([\\s\\S]*?)" +       // between the tag ($2). leading newlines are dropped
-
-          otag +                    // {{
-          "\\/\\s*\\3\\s*" +        //  /foo (backreference to the opening tag).
-          ctag +                    // }}
-
-          "\\s*([\\s\\S]*)$",       // everything else in the string ($4). leading whitespace is dropped.
-
-        "g");
-      });
-
-
-      // for each {{#foo}}{{/foo}} section do...
-      return template.replace(regex, function (match, before, type, name, content, after) {
-        // before contains only tags, no sections
-        var renderedBefore = before ? that.render_tags(before, context, partials, true) : "",
-
-        // after may contain both sections and tags, so use full rendering function
-            renderedAfter = after ? that.render(after, context, partials, true) : "",
-
-        // will be computed below
-            renderedContent,
-
-            value = that.find(name, context);
-
-        if (type === "^") { // inverted section
-          if (!value || Array.isArray(value) && value.length === 0) {
-            // false or empty list, render it
-            renderedContent = that.render(content, context, partials, true);
-          } else {
-            renderedContent = "";
-          }
-        } else if (type === "#") { // normal section
-          if (Array.isArray(value)) { // Enumerable, Let's loop!
-            renderedContent = that.map(value, function (row) {
-              return that.render(content, that.create_context(row), partials, true);
-            }).join("");
-          } else if (that.is_object(value)) { // Object, Use it as subcontext!
-            renderedContent = that.render(content, that.create_context(value),
-              partials, true);
-          } else if (typeof value == "function") {
-            // higher order section
-            renderedContent = value.call(context, content, function (text) {
-              return that.render(text, context, partials, true);
-            });
-          } else if (value) { // boolean section
-            renderedContent = that.render(content, context, partials, true);
-          } else {
-            renderedContent = "";
-          }
-        }
-
-        return renderedBefore + renderedContent + renderedAfter;
-      });
-    },
-
-    /*
-      Replace {{foo}} and friends with values from our view
-    */
-    render_tags: function (template, context, partials, in_recursion) {
-      // tit for tat
-      var that = this;
-
-      var new_regex = function () {
-        return that.getCachedRegex("render_tags", function (otag, ctag) {
-          return new RegExp(otag + "(=|!|>|&|\\{|%)?([^#\\^]+?)\\1?" + ctag + "+", "g");
-        });
-      };
-
-      var regex = new_regex();
-      var tag_replace_callback = function (match, operator, name) {
-        switch(operator) {
-        case "!": // ignore comments
-          return "";
-        case "=": // set new delimiters, rebuild the replace regexp
-          that.set_delimiters(name);
-          regex = new_regex();
-          return "";
-        case ">": // render partial
-          return that.render_partial(name, context, partials);
-        case "{": // the triple mustache is unescaped
-        case "&": // & operator is an alternative unescape method
-          return that.find(name, context);
-        default: // escape the value
-          return escapeHTML(that.find(name, context));
-        }
-      };
-      var lines = template.split("\n");
-      for(var i = 0; i < lines.length; i++) {
-        lines[i] = lines[i].replace(regex, tag_replace_callback, this);
-        if (!in_recursion) {
-          this.send(lines[i]);
-        }
-      }
-
-      if (in_recursion) {
-        return lines.join("\n");
-      }
-    },
-
-    set_delimiters: function (delimiters) {
-      var dels = delimiters.split(" ");
-      this.otag = this.escape_regex(dels[0]);
-      this.ctag = this.escape_regex(dels[1]);
-    },
-
-    escape_regex: function (text) {
-      // thank you Simon Willison
-      if (!arguments.callee.sRE) {
-        var specials = [
-          '/', '.', '*', '+', '?', '|',
-          '(', ')', '[', ']', '{', '}', '\\'
-        ];
-        arguments.callee.sRE = new RegExp(
-          '(\\' + specials.join('|\\') + ')', 'g'
-        );
-      }
-      return text.replace(arguments.callee.sRE, '\\$1');
-    },
-
-    /*
-      find `name` in current `context`. That is find me a value
-      from the view object
-    */
-    find: function (name, context) {
-      name = trim(name);
-
-      // Checks whether a value is thruthy or false or 0
-      function is_kinda_truthy(bool) {
-        return bool === false || bool === 0 || bool;
-      }
-
-      var value;
-
-      // check for dot notation eg. foo.bar
-      if (name.match(/([a-z_]+)\./ig)) {
-        var childValue = this.walk_context(name, context);
-        if (is_kinda_truthy(childValue)) {
-          value = childValue;
-        }
-      } else {
-        if (is_kinda_truthy(context[name])) {
-          value = context[name];
-        } else if (is_kinda_truthy(this.context[name])) {
-          value = this.context[name];
-        }
-      }
-
-      if (typeof value == "function") {
-        return value.apply(context);
-      }
-      if (value !== undefined) {
-        return value;
-      }
-      // silently ignore unkown variables
-      return "";
-    },
-
-    walk_context: function (name, context) {
-      var path = name.split('.');
-      // if the var doesn't exist in current context, check the top level context
-      var value_context = (context[path[0]] != undefined) ? context : this.context;
-      var value = value_context[path.shift()];
-      while (value != undefined && path.length > 0) {
-        value_context = value;
-        value = value[path.shift()];
-      }
-      // if the value is a function, call it, binding the correct context
-      if (typeof value == "function") {
-        return value.apply(value_context);
-      }
-      return value;
-    },
-
-    // Utility methods
-
-    /* includes tag */
-    includes: function (needle, haystack) {
-      return haystack.indexOf(this.otag + needle) != -1;
-    },
-
-    // by @langalex, support for arrays of strings
-    create_context: function (_context) {
-      if (this.is_object(_context)) {
-        return _context;
-      } else {
-        var iterator = ".";
-        if (this.pragmas["IMPLICIT-ITERATOR"]) {
-          iterator = this.pragmas["IMPLICIT-ITERATOR"].iterator;
-        }
-        var ctx = {};
-        ctx[iterator] = _context;
-        return ctx;
-      }
-    },
-
-    is_object: function (a) {
-      return a && typeof a == "object";
-    },
-
-    /*
-      Why, why, why? Because IE. Cry, cry cry.
-    */
-    map: function (array, fn) {
-      if (typeof array.map == "function") {
-        return array.map(fn);
-      } else {
-        var r = [];
-        var l = array.length;
-        for(var i = 0; i < l; i++) {
-          r.push(fn(array[i]));
-        }
-        return r;
-      }
-    },
-
-    getCachedRegex: function (name, generator) {
-      var byOtag = regexCache[this.otag];
-      if (!byOtag) {
-        byOtag = regexCache[this.otag] = {};
-      }
-
-      var byCtag = byOtag[this.ctag];
-      if (!byCtag) {
-        byCtag = byOtag[this.ctag] = {};
-      }
-
-      var regex = byCtag[name];
-      if (!regex) {
-        regex = byCtag[name] = generator(this.otag, this.ctag);
-      }
-
-      return regex;
-    }
-  };
-
-  return({
-    name: "mustache.js",
-    version: "0.5.0-dev",
-
-    /*
-      Turns a template and view into HTML
-    */
-    to_html: function (template, view, partials, send_fun) {
-      var renderer = new Renderer();
-      if (send_fun) {
-        renderer.send = send_fun;
-      }
-      renderer.render(template, view || {}, partials);
-      if (!send_fun) {
-        return renderer.buffer.join("\n");
-      }
-    }
-  });
-}();
-// Underscore.js 1.2.3
-// (c) 2009-2011 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the MIT license.
-// Portions of Underscore are inspired or borrowed from Prototype,
-// Oliver Steele's Functional, and John Resig's Micro-Templating.
-// For all details and documentation:
-// http://documentcloud.github.com/underscore
-(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==
-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,
-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"&&
-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,
-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,
-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,
-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,
-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,
-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=
-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-
-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},
-[]);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,
-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};
-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,
-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:
-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=
-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,
-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===
-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)==
-"[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,
-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,
-"'")+",'"}).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,
-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);
-/* main file */
-// Why is it called main ? It only loads the libs !
-
-if ( window.IriSP === undefined && window.__IriSP === undefined ) { 
-  /**
-    @class
-    the object under which everything goes.        
-  */
-	IriSP = {}; 
-  
-  /** Alias to IriSP for backward compatibility */
-	__IriSP = IriSP;
-}
-
-/* underscore comes bundled with the player and we need 
-   it ASAP, so load it that way
-*/
-
-IriSP._ = window._.noConflict();
-IriSP.underscore = IriSP._;
-
-IriSP.getLib = function(lib) {
-    return (
-        IriSP.libFiles.useCdn && typeof IriSP.libFiles.cdn[lib] == "string"
-        ? IriSP.libFiles.cdn[lib]
-        : (
-            typeof IriSP.libFiles.locations[lib] == "string"
-            ? IriSP.libFiles.locations[lib]
-            : (
-                typeof IriSP.libFiles.inDefaultDir[lib] == "string"
-                ? IriSP.libFiles.defaultDir + IriSP.libFiles.inDefaultDir[lib]
-                : null
-            )
-        )
-    )
-}
-
-IriSP.loadLibs = function( config, metadata_url, callback ) {
-    // Localize jQuery variable
-		IriSP.jQuery = null;
-    var $L = $LAB.script(IriSP.getLib("jQuery")).script(IriSP.getLib("swfObject")).wait()
-                .script(IriSP.getLib("jQueryUI"));
-                                   
-    if (config.player.type === "jwplayer" || config.player.type === "allocine") {
-      // load our popcorn.js lookalike
-      $L.script(IriSP.getLib("jwplayer"));
-    } else {
-      // load the real popcorn
-      $L.script(IriSP.getLib("popcorn")).script(IriSP.getLib("popcorn.code"));
-      if (config.player.type === "youtube") {
-        $L.script(IriSP.getLib("popcorn.youtube"));
-      } 
-      if (config.player.type === "vimeo")
-        $L.script(IriSP.getLib("popcorn.vimeo"));
-      
-      /* do nothing for html5 */
-    }       
-    
-    /* widget specific requirements */
-    for (var idx in config.gui.widgets) {
-      if (config.gui.widgets[idx].type === "PolemicWidget" ||
-          config.gui.widgets[idx].type === "StackGraphWidget" ||
-          config.gui.widgets[idx].type === "SparklineWidget") {        
-        $L.script(IriSP.getLib("raphael"));
-      }
-      if (config.gui.widgets[idx].type === "TraceWidget") {
-          $L.script(IriSP.getLib("tracemanager"))
-      }
-    }
-    
-    // same for modules
-    /*
-    for (var idx in config.modules) {
-      if (config.modules[idx].type === "PolemicWidget")
-        $L.script(IriSP.getLib("raphaelJs"));
-    }
-    */
-
-    $L.wait(function() {
-      IriSP.jQuery = window.jQuery.noConflict( true );
-      
-      var css_link_jquery = IriSP.jQuery( "<link>", { 
-        rel: "stylesheet", 
-        type: "text/css", 
-        href: IriSP.getLib("cssjQueryUI"),
-        'class': "dynamic_css"
-      } );
-      var css_link_custom = IriSP.jQuery( "<link>", { 
-        rel: "stylesheet", 
-        type: "text/css", 
-        href: config.gui.css,
-        'class': "dynamic_css"
-      } );
-      
-      css_link_jquery.appendTo('head');
-      css_link_custom.appendTo('head');
-          
-      IriSP.setupDataLoader();
-      IriSP.__dataloader.get(metadata_url, 
-          function(data) {
-            /* save the data so that we could re-use it to
-               configure the video
-            */
-            IriSP.__jsonMetadata = data;
-            callback.call(window) });
-    });
-};
-IriSP.annotation_template = "{{! template for an annotation displayed in a segmentWidget }}<div title='{{divTitle}}' id='{{id}}'	class='Ldt-iri-chapter Ldt-TraceMe' 	style='left: {{startPixel}}px;          width: {{pxWidth}}px;          background-color:{{hexa_color}};'    data-seek='{{seekPlace}}'    thumbnail-url='{{thumbnailUrl}}'	></div>";
-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 target='_blank' class='Ldt-fbShare Ldt-TraceMe' title='{{i10n.share_on}} Facebook'></a>         <a target='_blank' class='Ldt-TwShare Ldt-TraceMe' title='{{i10n.share_on}} Twitter'></a>         <a target='_blank'  class='Ldt-GplusShare Ldt-TraceMe' title='{{i10n.share_on}} Google+'></a>        </div>        <div class='Ldt-SaTitle'></div>        <div class='Ldt-SaDescription'></div>        <div class='Ldt-SaKeywords'></div>    </div>  </div></div>";
-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>";
-IriSP.annotationsListWidget_template = "{{! template for the annotation list widget }}<div class='Ldt-AnnotationsListWidget'>    <ul class='Ldt-AnnotationsList-ul'>        {{#annotations}}        <li id='Ldt-Annotation-li-{{id}}' class='Ldt-AnnotationsList-li Ldt-TraceMe'>            {{^url}} <a href='#id={{id}}'> {{/url}}            {{! otherwise link to url }}            {{#url}} <a href='{{url}}'> {{/url}}                <img class='Ldt-AnnotationsList-Thumbnail' src='{{thumbnail}}' />            </a>            <div class='Ldt-AnnotationsList-Duration'>                <span class='Ldt-AnnotationsList-Begin'>{{begin}}</span>                <span class='Ldt-AnnotationsList-TcSeparator'>-</span>                <span class='Ldt-AnnotationsList-End'>{{end}}</span>            </div>            <div class='Ldt-AnnotationsList-Title'>            {{! if the url is not present, it means that the annotation exists            in the current project }}                {{title}}            </div>            <div class='Ldt-AnnotationsList-Description'>            {{^url}} <a href='#id={{id}}'> {{/url}}            {{! otherwise link to url }}            {{#url}} <a href='{{url}}'> {{/url}}                {{desc}}                </a>            </div>            {{#tags.length}}            <ul class='Ldt-AnnotationsList-Tags'>                {{#tags}}                <li class='Ldt-AnnotationsList-Tag-Li'>                    <div class='Ldt-AnnotationsList-Tag-Div'>{{.}}</div>                </li>                {{/tags}}            </ul>            {{/tags.length}}        </li>        {{/annotations}}    </ul></div>";
-IriSP.arrowWidget_template = "<div class='Ldt-arrowWidget Ldt-arrowLeftEdge'></div>";
-IriSP.createAnnotationWidget_template = "{{! template for the annotation creation widget }}<div class='Ldt-createAnnotationWidget'>    <!-- ugly div because we want to have a double border -->    <div class='Ldt-createAnnotation-DoubleBorder'>        <div class='Ldt-createAnnotation-screen Ldt-createAnnotation-startScreen'>            <div style='margin-bottom: 7px; overflow: auto;'>                <div class='Ldt-createAnnotation-Title'></div>                <div class='Ldt-createAnnotation-TimeFrame'></div>                {{^cinecast_version}} <div class='Ldt-createAnnotation-Minimize Ldt-TraceMe' title='Cancel'></div>                {{/cinecast_version}}            </div>            <div class='Ldt-createAnnotation-Container'>                {{#show_from_field}}                <label>{{l10n.your_name}}&nbsp;: </label><input class='Ldt-createAnnotation-userName Ldt-TraceMe' value='{{user_name}}' />                {{/show_from_field}}                <textarea class='Ldt-createAnnotation-Description Ldt-TraceMe'></textarea>                <div class='Ldt-createAnnotation-userAvatar Ldt-TraceMe'>                    {{^user_avatar}} <img src='https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png'></img>                    {{/user_avatar}}                    {{#user_avatar}} <img src='{{ user_avatar }}'></img>                    {{/user_avatar}}                </div>                <div class='Ldt-createAnnotation-profileArrow'></div>            </div>            <button class='Ldt-createAnnotation-submitButton Ldt-TraceMe'>{{l10n.submit}}</button>            {{#tags.length}}            <div class='Ldt-createAnnotation-btnblock Ldt-createAnnotation-keywords'>                <label>{{l10n.add_keywords}} :</label>                <ul class='Ldt-floatList'>                {{#tags}}                    <li><button class='Ldt-createAnnotation-keyword-button Ldt-TraceMe' tag-id='{{id}}'>{{meta.description}}</button></li>                {{/tags}}                </ul>            </div>            {{#random_tags}}                <button class='Ldt-createAnnotation-moar-keywordz'>{{l10n.more_tags}}</button>            {{/random_tags}}            {{/tags.length}}            {{#polemic_mode}}            {{#polemics.length}}            <div class='Ldt-createAnnotation-btnblock Ldt-createAnnotation-polemics'>                <label>{{l10n.add_polemic_keywords}} :</label>                <ul class='Ldt-floatList'>                {{#polemics}}                    <li><button class='Ldt-createAnnotation-polemic-{{className}} Ldt-createAnnotation-polemic-button Ldt-TraceMe'>{{keyword}}</button></li>                {{/polemics}}                </ul>            </div>            {{/polemics.length}}            {{/polemic_mode}}        </div>        <div class='Ldt-createAnnotation-screen Ldt-createAnnotation-waitScreen' style='display: none; text-align: center'>            <div class='Ldt-createAnnotation-spinner'></div>            {{l10n.wait_while_processed}}        </div>        <div class='Ldt-createAnnotation-screen Ldt-createAnnotation-errorScreen' style='display: none; text-align: center'>            <div class='Ldt-createAnnotation-Minimize' title='Hide'></div>            {{l10n.error_while_contacting}}        </div>        <div class='Ldt-createAnnotation-screen Ldt-createAnnotation-endScreen' style='display: none'>            <div class='Ldt-createAnnotation-Minimize' title='Hide'></div>            {{l10n.annotation_saved}}            <br>            {{^disable_share}}            {{l10n.share_annotation}}            <div style='margin-top: 12px; text-align: center;'>                <a target='_blank' class='Ldt-createAnnotation-endScreen-TweetLink Ldt-TraceMe'></a>                <a target='_blank' class='Ldt-createAnnotation-endScreen-FbLink Ldt-TraceMe'></a>                <a target='_blank' class='Ldt-createAnnotation-endScreen-GplusLink Ldt-TraceMe'></a>            </div>            {{/disable_share}}        </div>        <div class='Ldt-floatClear'></div>    </div></div>";
-IriSP.createAnnotation_errorMessage_template = "<p class='Ldt-createAnnotation-errorMessage'>  {{l10n.empty_annotation}}</p>";
-IriSP.loading_template = "<div id='Ldt-loader' style='width: {{width}}px; height: {{height}}px;'>{{l10n.loading_wait}}</div>";
-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>";
-IriSP.player_template = "{{! template for the radio player }}<div class='Ldt-controler'>	<div class='Ldt-LeftPlayerControls'>        <div class='Ldt-Ctrl-button Ldt-CtrlPlay Ldt-CtrlPlay-PlayState Ldt-TraceMe' title='{{l10n.play_pause}}'></div>        <div class='Ldt-Ctrl-spacer'></div>        {{^disable_annotate_btn}}    	<div class='Ldt-Ctrl-button Ldt-CtrlAnnotate Ldt-TraceMe' title='{{l10n.annotate}}'></div>        <div class='Ldt-Ctrl-spacer'></div>        {{/disable_annotate_btn}}        {{^disable_search_btn}}        <div class='Ldt-Ctrl-button Ldt-CtrlSearch Ldt-TraceMe' title='{{l10n.search}}'></div>        <div class='Ldt-Ctrl-spacer'></div>        {{/disable_search_btn}}        <div class='LdtSearch'>          <input class='LdtSearchInput Ldt-TraceMe'></input>        </div>	</div>	<div class='Ldt-RightPlayerControls'>        <div class='Ldt-Ctrl-spacer'></div>        <div class='Ldt-Time'>          <div class='Ldt-ElapsedTime' title='{{l10n.elapsed_time}}'>00:00</div>          <div class='Ldt-TimeSeparator'>/</div>          <div class='Ldt-TotalTime' title='{{l10n.total_time}}'>00:00</div>        </div>        <div class='Ldt-Ctrl-spacer'></div>		<div class='Ldt-Ctrl-button Ldt-CtrlSound Ldt-CtrlSound-Full Ldt-TraceMe' title='{{l10n.mute_unmute}}'></div>	</div>	<div class='Ldt-Ctrl-Volume-Control' title='{{l10n.volume_control}}'>	    <div class='Ldt-Ctrl-Volume-Bar'></div>	    <div class='Ldt-Ctrl-Volume-Cursor'></div>	</div></div>";
-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; border-color: #CFCFCF; position: absolute; text-align: center;'>		<input class='LdtSearchInput'			style='margin-top: 1px; margin-bottom: 2px;' />	</div></div><div class='cleaner'></div>";
-IriSP.share_template = "{{! social network sharing template }}<a onclick='__IriSP.MyApiPlayer.share(\'delicious\');' title='{{l10n.share_on}} delicious'><span class='share shareDelicious'>&nbsp;</span></a>		<a onclick='__IriSP.MyApiPlayer.share(\'facebook\');' title='{{l10n.share_on}} facebook'> <span class='share shareFacebook'>&nbsp;</span></a><a onclick='__IriSP.MyApiPlayer.share(\'twitter\');' title='{{l10n.share_on}} twitter'>  <span class='share shareTwitter'>&nbsp;</span></a><a onclick='__IriSP.MyApiPlayer.share(\'myspace\');' title='{{l10n.share_on}} Myspace'>  <span class='share shareMySpace'>&nbsp;</span></a>";
-IriSP.sliceWidget_template = "{{! template for the slice widget }}<div class='Ldt-sliceWidget'>  {{! the whole bar }}  <div class='Ldt-sliceBackground'></div>    <div class='Ldt-sliceLeftHandle'></div>  {{! the zone which represents our slice }}  <div class='Ldt-sliceZone'></div>     <div class='Ldt-sliceRightHandle'></div></div>";
-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 Ldt-TraceMe'></div>";
-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>";
-IriSP.tooltipWidget_template = "{{! template for the tooltip widget }}<div class='tip'>	<div class='tipcolor' style='height:10px;width:10px'></div>	<div class='tiptext'></div>";
-IriSP.tweetWidget_template = "{{! template for the tweet widget }}<div class='Ldt-tweetWidget'>  <div class='Ldt-tweet-DoubleBorder'>      <div class='Ldt-tweetWidgetKeepOpen Ldt-TraceMe' title='dont minimize automatically'></div>      <div class='Ldt-tweetWidgetMinimize Ldt-TraceMe' title='minimize window'></div>      <div class='Ldt-tweetAvatar'></div>      <div class='Ldt-tweetAvatar-profileArrow'></div>      <div class='Ldt-tweetContents'></div>      <a href='' target='_blank' class='Ldt-Retweet Ldt-TraceMe'><div class='Ldt-RetweetIcon'></div> - Retweet </a>      <a href='' target='_blank' class='Ldt-TweetReply Ldt-TraceMe'><div class='Ldt-TweetReplyIcon'></div> - Reply</a>  </div></div>";/* utils.js - various utils that don't belong anywhere else */
-
-/* trace function, for debugging */
-
-IriSP.traceNum = 0;
-IriSP.trace = function( msg, value ) {
-/*
-	if( IriSP.config.gui.debug === true ) {
-		IriSP.traceNum += 1;
-		IriSP.jQuery( "<div>"+IriSP.traceNum+" - "+msg+" : "+value+"</div>" ).appendTo( "#Ldt-output" );
-	}
-*/
-};
-
-/* used in callbacks - because in callbacks we lose "this",
-   we need to have a special function which wraps "this" in 
-   a closure. This way, the 
-*/   
-IriSP.wrap = function (obj, fn) {
-  return function() {    
-    var args = Array.prototype.slice.call(arguments, 0);
-    return fn.apply(obj, args);
-  }
-}
-
-/* convert a time to a percentage in the media */
-IriSP.timeToPourcent = function(time, timetotal){
-	var time = Math.abs(time);
-  var timetotal = Math.abs(timetotal);
-  
-	return Math.floor((time/timetotal) * 100);
-};
-
-IriSP.padWithZeros = function(num) {
-  if (Math.abs(num) < 10) {
-    return "0" + num.toString();
-  } else {
-    return num.toString();
-  }
-};
-
-/* convert a number of milliseconds to a tuple of the form 
-   [hours, minutes, seconds]
-*/
-IriSP.msToTime = function(ms) {
-  return IriSP.secondsToTime(ms / 1000);
-}
-/* convert a number of seconds to a tuple of the form 
-   [hours, minutes, seconds]
-*/
-IriSP.secondsToTime = function(secs) {  
-  var hours = Math.abs(parseInt( secs / 3600 ) % 24);
-  var minutes = Math.abs(parseInt( secs / 60 ) % 60);
-  var seconds = parseFloat(Math.abs(secs % 60).toFixed(0));
-  
-  var toString_fn = function() {
-    var ret = "";
-    if (hours > 0)
-       ret = IriSP.padWithZeros(this.hours) + ":";
-    ret += IriSP.padWithZeros(this.minutes) + ":" + IriSP.padWithZeros(this.seconds);
-
-    return ret;
-  }
-  return {"hours" : hours, "minutes" : minutes, "seconds" : seconds, toString: toString_fn};
-};
-
-/* format a tweet - replaces @name by a link to the profile, #hashtag, etc. */
-IriSP.formatTweet = function(tweet) {
-  /*
-    an array of arrays which hold a regexp and its replacement.
-  */
-  var regExps = [
-    /* copied from http://codegolf.stackexchange.com/questions/464/shortest-url-regex-match-in-javascript/480#480 */
-    [/((https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi, "<a href='$1'>$1</a>"],
-    [/@(\w+)/gi, "<a href='http://twitter.com/$1'>@$1</a>"], // matches a @handle
-    [/#(\w+)/gi, "<a href='http://twitter.com/search?q=%23$1'>#$1</a>"],// matches a hashtag
-    [/(\+\+)/gi, "<span class='Ldt-PolemicPlusPlus'>$1</span>"],
-    [/(--)/gi, "<span class='Ldt-PolemicMinusMinus'>$1</span>"],
-    [/(==)/gi, "<span class='Ldt-PolemicEqualEqual'>$1</span>"],
-    [/(\?\?)/gi, "<span class='Ldt-PolemicQuestion'>$1</span>"]
-  ]; 
-
-  var i = 0;
-  for(i = 0; i < regExps.length; i++) {
-     tweet = tweet.replace(regExps[i][0], regExps[i][1]);
-  }
-  
-  return tweet;
-};
-
-IriSP.countProperties = function(obj) {
-    var count = 0;
-
-    for(var prop in obj) {
-        if(obj.hasOwnProperty(prop))
-                ++count;
-    }
-
-    return count;
-};
-
-// conversion de couleur Decimal vers HexaDecimal || 000 si fff
-IriSP.DEC_HEXA_COLOR = function (dec) {
-  var val = +dec;
-  var str = val.toString(16);
-  var zeroes = "";
-  if (str.length < 6) {
-    for (var i = 0; i < 6 - str.length; i++)
-      zeroes += "0";
-  }
-  return zeroes + str;
-};
-
-/* shortcut to have global variables in templates */
-IriSP.templToHTML = function(template, values) {
-  var params = IriSP.underscore.extend(
-      { "defaults" : IriSP.default_templates_vars,
-        "l10n" : IriSP.i18n.getMessages()
-        },
-      values);
-  return Mustache.to_html(template, params);
-};
-
-/* we need to be stricter than encodeURIComponent,
-   because of twitter
-*/  
-IriSP.encodeURI = function(str) {
-  return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').  
-                                 replace(/\)/g, '%29').replace(/\*/g, '%2A');  
-}
-
-IriSP.jqEscape = function(text) {
-   return text.replace(/(:|\.)/g,'\\$1')
-}
-
-IriSP.jqId = function (text) { 
-   return IriSP.jQuery('#' + IriSP.jqEscape(text));
- }  
-
-IriSP.__guidCounter = 0;
-IriSP.guid = function(prefix) {
-  IriSP.__guidCounter += 1;
-  return prefix + IriSP.__guidCounter;
-};
-
-/** returns an url to share on facebook */
-IriSP.mkFbUrl = function(url, text) {
-  if (typeof(text) === "undefined")
-    text = "I'm watching ";
-  
-  return "http://www.facebook.com/share.php?u=" + IriSP.encodeURI(text) + IriSP.shorten_url(url);
-};
-
-/** returns an url to share on twitter */
-IriSP.mkTweetUrl = function(url, text) {
-  if (typeof(text) === "undefined")
-    text = "I'm watching ";
-  
-  return "http://twitter.com/home?status=" + IriSP.encodeURI(text) + IriSP.shorten_url(url);
-};
-
-/** returns an url to share on google + */
-IriSP.mkGplusUrl = function(url, text) {
-  return "https://plusone.google.com/_/+1/confirm?hl=en&url=" + IriSP.shorten_url(url);
-};
-
-/** test if a value is null or undefined */
-IriSP.null_or_undefined = function(val) {
-  return (typeof(val) === "undefined" || val === null);
-};
-
-/** get a property that can have multiple names **/
-
-IriSP.get_aliased = function(_obj, _aliases) {
-    for (var _i = 0; _i < _aliases.length; _i++) {
-        if (typeof _obj[_aliases[_i]] !== "undefined") {
-            return _obj[_aliases[_i]];
-        }
-    }
-    return null;
-}
-
-/** issue a call to an url shortener and return the shortened url */
-IriSP.shorten_url = function(url) {
-  return encodeURIComponent(url);
-};
-
-
-/* for ie compatibility
-if (Object.prototype.__defineGetter__&&!Object.defineProperty) {
-   Object.defineProperty=function(obj,prop,desc) {
-      if ("get" in desc) obj.__defineGetter__(prop,desc.get);
-      if ("set" in desc) obj.__defineSetter__(prop,desc.set);
-   }
-}
-*/
-
-/* Creates regexps from text */
-IriSP.regexpFromText = function(_text) {
-    return new RegExp('(' + _text.replace(/(\W)/gim,'\\$1') + ')','gim');
-}
-/* wrapper that simulates popcorn.js because
-   popcorn is a bit unstable at the time */
-
-IriSP.PopcornReplacement = {  
-};
-
-/** base class for our popcorn-compatible players.
- */
-IriSP.PopcornReplacement.player = function(container, options) {
-  /* the jwplayer calls the callbacks in the global space so we need to 
-     preserve them using IriSP.wrap */
-  this.callbacks = {
-      onReady:  IriSP.wrap(this, this.__initApi),
-      onTime:   IriSP.wrap(this, this.__timeHandler),
-      onPlay:   IriSP.wrap(this, this.__playHandler),
-      onPause:  IriSP.wrap(this, this.__pauseHandler),
-      onSeek:   IriSP.wrap(this, this.__seekHandler) 
-  };
-  
-  this.media = { 
-    "paused": true,
-    "muted": false
-  };
-    
-  this.container = container.slice(1); //eschew the '#'
-  
-  this.msgPump = {}; /* dictionnary used to receive and send messages */
-  this.__codes = []; /* used to schedule the execution of a piece of code in 
-                        a segment (similar to the popcorn.code plugin). */
-  
-  this._options = options;
-                          
-};
-
-IriSP.PopcornReplacement.player.prototype.listen = function(msg, callback) {
-  if (!this.msgPump.hasOwnProperty(msg))
-    this.msgPump[msg] = [];
-
-  this.msgPump[msg].push(callback);
-};
-
-IriSP.PopcornReplacement.player.prototype.trigger = function(msg, params) {
-  if (!this.msgPump.hasOwnProperty(msg))
-    return;
-
-  var d = this.msgPump[msg];
-
-  for(var i = 0; i < d.length; i++) {
-    d[i].call(window, params);
-  }
-
-};
-
-IriSP.PopcornReplacement.player.prototype.guid = function(prefix) {
-  var str = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
-      var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
-      return v.toString(16);
-   });
-
-  return prefix + str;
-};
-
-/** init the api after that flash player has been setup - called by the callback
-    defined by the embedded flash player 
-*/
-IriSP.PopcornReplacement.player.prototype.__initApi = function() {
-  this.trigger("loadedmetadata"); // we've done more than loading metadata of course,
-                                                      // but popcorn doesn't need to know more.
-  this.media.muted = this.playerFns.getMute();
-  /* some programmed segments are supposed to be run at the beginning */
-  var i = 0;
-  for(i = 0; i < this.__codes.length; i++) {
-    var c = this.__codes[i];
-    if (0 == c.start) {
-      c.onStart();
-    }
-    
-    if (0 == c.end) {
-      c.onEnd();
-    }
-  }
-};
-
-/*
-IriSP.PopcornReplacement.jwplayer = function(container, options) {
-  IriSP.PopcornReplacement._container = container.slice(1); //eschew the '#'
-  options.events = {
-      onReady: IriSP.PopcornReplacement.__initApi,
-      onTime: IriSP.PopcornReplacement.__timeHandler,
-      onPlay: IriSP.PopcornReplacement.__playHandler,
-      onPause: IriSP.PopcornReplacement.__pauseHandler,
-      onSeek: IriSP.PopcornReplacement.__seekHandler 
-      }
-    
-  jwplayer(IriSP.PopcornReplacement._container).setup(options);
-  IriSP.PopcornReplacement.media.duration = options.duration;
-  return IriSP.PopcornReplacement;
-};
-*/
-
-IriSP.PopcornReplacement.player.prototype.currentTime = function(time) {
-  if (typeof(time) === "undefined") {        
-      return this.playerFns.getPosition();            
-  } else {
-     var currentTime = +time;
-     this.playerFns.seek(currentTime);              
-     return currentTime;
-  }
-};
-
-IriSP.PopcornReplacement.player.prototype.play = function() {
-  this.media.paused = false;
-  this.trigger("play");
-  //IriSP.PopcornReplacement.trigger("playing");
-  this.playerFns.play();
-};
-    
-IriSP.PopcornReplacement.player.prototype.pause = function() {
-//  if ( !this.media.paused ) {
-    this.media.paused = true;
-    this.trigger( "pause" );
-    this.playerFns.pause();
-//  }
-};
-
-IriSP.PopcornReplacement.player.prototype.muted = function(val) {
-  if (typeof(val) !== "undefined") {
-
-    if (this.playerFns.getMute() !== val) {
-      if (val) {
-        this.playerFns.setMute(true);
-        this.media.muted = true;
-      } else {
-        this.playerFns.setMute(false);
-        this.media.muted = false;
-      }
-
-      this.trigger( "volumechange" );
-    }
-    
-    return this.playerFns.getMute();
-  } else {
-    return this.playerFns.getMute();
-  }
-};
-
-IriSP.PopcornReplacement.player.prototype.volume = function(val) {
-    if (typeof this.playerFns.getVolume == "undefined" || typeof this.playerFns.setVolume == "undefined") {
-        return false;
-    }
-    var _vol = this.playerFns.getVolume();
-    if (typeof(val) !== "undefined" && parseFloat(val) !== NaN) {
-        val = Math.max(0, Math.min(1, val));
-        if (parseFloat(val) != parseFloat(_vol)) {
-            this.playerFns.setVolume(val);
-            this.trigger("volumechange");
-            _vol = this.playerFns.getVolume();
-        }
-    }
-    return _vol;
-};
-
-IriSP.PopcornReplacement.player.prototype.mute = IriSP.PopcornReplacement.player.prototype.muted;
-
-IriSP.PopcornReplacement.player.prototype.code = function(options) {
-  this.__codes.push(options);
-  return this;
-};
-
-/* called everytime the player updates itself 
-   (onTime event)
- */
-
-IriSP.PopcornReplacement.player.prototype.__timeHandler = function(event) {
-  var pos = event.position;
-
-  var i = 0;
-  for(i = 0; i < this.__codes.length; i++) {
-     var c = this.__codes[i];
-
-     if (pos >= c.start && pos < c.end && 
-         pos - 1 <= c.start) {       
-        c.onStart();
-     }
- 
-     if (pos > c.start && pos > c.end && 
-         pos - 1 <= c.end) {
-         c.onEnd();
-     }
-   
-  }
- 
-  this.trigger("timeupdate");
-};
-
-IriSP.PopcornReplacement.player.prototype.__seekHandler = function(event) {
-  var i = 0;
-  
-  for(i = 0; i < this.__codes.length; i++) {
-     var c = this.__codes[i];
-    
-     if (event.position >= c.start && event.position < c.end) {        
-        c.onEnd();
-     }         
-   }
-  
-   for(i = 0; i < this.__codes.length; i++) {
-     var c = this.__codes[i];
-
-     if (typeof(event.offset) === "undefined")
-       event.offset = 0;
-           
-     if (event.offset >= c.start && event.offset < c.end) { 
-       c.onStart();
-     }
-     
-   }
-  
-  /* this signal sends as an extra argument the position in the video.
-     As far as I know, this argument is not provided by popcorn */
-  this.trigger("seeked", event.offset);  
-};
-
-IriSP.PopcornReplacement.player.prototype.__playHandler = function(event) {
-  this.media.paused = false;
-  this.trigger("play");
-};
-
-IriSP.PopcornReplacement.player.prototype.__pauseHandler = function(event) {
-  this.media.paused = true;
-  this.trigger("pause");
-};
-
-IriSP.PopcornReplacement.player.prototype.roundTime = function() {
-  var currentTime = this.currentTime();
-  return Math.round(currentTime);
-};/* data.js - this file deals with how the players gets and sends data */
-
-IriSP.DataLoader = function() {
-  this._cache = {};
-  
-  /*
-    A structure to hold callbacks for specific urls. We need it because
-    ajax calls are asynchronous, so it means that sometimes we ask
-    multiple times for a ressource because the first call hasn't been
-    received yet.
-  */
-  this._callbacks = {};
-};
-
-IriSP.DataLoader.prototype.get = function(url, callback, force_reload) {
-  var base_url = url.split("&")[0];
-  if (typeof force_reload != "undefined" && force_reload && this._cache.hasOwnProperty(base_url)) {
-      delete this._cache[base_url]
-  }
-  if (this._cache.hasOwnProperty(base_url)) {
-    callback(this._cache[base_url]);
-  } else {  
-    if (!this._callbacks.hasOwnProperty(base_url)) {
-      this._callbacks[base_url] = [callback];
-      /* we need a closure because this gets lost when it's called back */
-  
-      // uncomment you don't want to use caching.
-      // IriSP.jQuery.get(url, callback);
-      
-      var func = function(data) {
-                  this._cache[base_url] = data;                                
-                  var i = 0;
-                  
-                  for (i = 0; i < this._callbacks[base_url].length; i++) {
-                    this._callbacks[base_url][i](this._cache[base_url]);                                  
-                  }
-                  delete this._callbacks[base_url];
-      };
-      
-      /* automagically choose between json and jsonp */
-      if (url.indexOf(document.location.hostname) === -1 &&
-          url.indexOf("http://") !== -1 /* not a relative url */ ) {
-        // we contacting a foreign domain, use JSONP
-
-        IriSP.jQuery.get(url, {}, IriSP.wrap(this, func), "jsonp");
-      } else {
-
-        // otherwise, hey, whatever rows your boat
-        IriSP.jQuery.get(url, IriSP.wrap(this, func));
-      }
-    
-    } else {
-      /* simply push the callback - it'll get called when the ressource
-         has been received */
-      
-      this._callbacks[base_url].push(callback);   
-   
-    }
-  }
-}
-
-/* the base abstract "class" */
-IriSP.Serializer = function(DataLoader, url) {
-  this._DataLoader = DataLoader;
-  this._url = url;
-  this._data = [];
-};
-
-IriSP.Serializer.prototype.serialize = function(data) { };
-IriSP.Serializer.prototype.deserialize = function(data) {};
-
-IriSP.Serializer.prototype.currentMedia = function() {  
-};
-
-IriSP.Serializer.prototype.getDuration = function() {  
-};
-
-IriSP.Serializer.prototype.sync = function(callback) {
-  this._DataLoader.get(this._url, callback, force_refresh);
-};
-
-IriSP.SerializerFactory = function(DataLoader) {
-  this._dataloader = DataLoader;
-};
-
-IriSP.SerializerFactory.prototype.getSerializer = function(metadataOptions) {
-  /* This function returns serializer set-up with the correct
-     configuration - takes a metadata struct describing the metadata source
-  */
-  
-  if (metadataOptions === undefined)
-    /* return an empty serializer */
-    return IriSP.Serializer("", "");
-            
-  switch(metadataOptions.type) {
-    case "json":
-      return new IriSP.JSONSerializer(this._dataloader, metadataOptions.src);
-      break;
-    
-    case "dummy": /* only used for unit testing - not defined in production */
-      return new IriSP.MockSerializer(this._dataloader, metadataOptions.src);
-      break;
-    
-    case "empty":
-      return new IriSP.Serializer("", "empty");
-      break;
-      
-    default:      
-      return undefined;
-  }
-};
-IriSP.language = 'en';
-
-IriSP.libFiles = {
-    defaultDir : "js/libs/",
-    inDefaultDir : {
-        jQuery : "jquery.min.js",
-        jQueryUI : "jquery-ui.min.js",
-        jQueryToolTip : "jquery.tools.min.js",
-        swfObject : "swfobject.js",
-        cssjQueryUI : "jquery-ui.css",
-        popcorn : "popcorn.js",
-        jwplayer : "jwplayer.js",
-        raphael : "raphael.js",
-        "popcorn.mediafragment" : "popcorn.mediafragment.js",
-        "popcorn.code" : "popcorn.code.js",
-        "popcorn.jwplayer" : "popcorn.jwplayer.js",
-        "popcorn.youtube" : "popcorn.youtube.js",
-        "tracemanager" : "tracemanager.js"
-    },
-    locations : {
-        // use to define locations outside defautl_dir
-    },
-    cdn : {
-        jQueryUI : "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.js",
-        jQueryToolTip : "http://cdn.jquerytools.org/1.2.4/all/jquery.tools.min.js",
-        swfObject : "http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js",
-        cssjQueryUI : "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css"
-    },
-    useCdn : false
-}
-
-IriSP.widgetsDefaults = {
-    "LayoutManager" : {
-        spacer_div_height : 0
-    },
-    "PlayerWidget" : {
-        
-    },
-    "AnnotationsWidget" : {
-        "share_text" : "I'm watching "
-    },
-    "TweetsWidget" : {
-        default_profile_picture : "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png",
-        tweet_display_period : 10000 // how long do we show a tweet ?
-    },
-    "SliderWidget" : {
-        minimize_period : 850 // how long does the slider stays maximized after the user leaves the zone ?
-    },
-    "SegmentsWidget" : {
-        cinecast_version : false
-    },
-    "createAnnotationWidget" : {
-        tags : [
-            {
-                "id" : "digitalstudies",
-                "meta" : {
-                    "description" : "#digital-studies"
-                }
-            },
-            {
-                "id" : "amateur",
-                "meta" : {
-                    "description" : "#amateur"
-                },
-            }
-        ],
-        remote_tags : false,
-        random_tags : false,
-        show_from_field : false,
-        disable_share : false,
-        polemic_mode : true, /* enable polemics ? */
-        polemics : [{
-            "className" : "positive",
-            "keyword" : "++"
-        }, {
-            "className" : "negative",
-            "keyword" : "--"
-        }, {
-            "className" : "reference",
-            "keyword" : "=="
-        }, {
-            "className" : "question",
-            "keyword" : "??"
-        }],
-        cinecast_version : false, /* put to false to enable the platform version, true for the festival cinecast one. */
-
-        /* where does the widget PUT the annotations - this is a mustache template. id refers to the id of the media ans is filled
-         by the widget.
-         */
-        api_endpoint_template : "", // platform_url + "/ldtplatform/api/ldt/annotations/{{id}}.json",
-        api_method : "PUT"
-    },
-    "SparklineWidget" : {
-       lineColor : "#7492b4",
-       fillColor : "#aeaeb8",
-       lineWidth : 2
-    },
-    "AnnotationsListWidget" : {
-        ajax_mode : true, /* use ajax to get information about the annotations.
-         if set to false, only search in the annotations for the
-         current project. */
-        /* the platform generates some funky urls. We replace them afterwards to point to the
-         correct place - this setting will probably be overwritten by the platform
-         implementers.
-         Note that the player has to replace the variables between {{ and }} by its own values.
-         */
-        ajax_url : "", //platform_url + "/ldtplatform/api/ldt/segments/{{media}}/{{begin}}/{{end}}",
-        ajax_granularity : 10000, /* how much ms should we look before and after the current timecode */
-        default_thumbnail : "http://ldt.iri.centrepompidou.fr/static/site/ldt/css/imgs/video_sequence.png",
-        project_url : "", //platform_url + "/ldtplatform/ldt/front/player/"
-        /* the beginning of a link to the new front */
-        cinecast_version : false,
-        refresh_interval : 10000
-    },
-    "StackGraphWidget" : {
-         defaultcolor : "#585858",
-         tags : [
-            {
-                "keywords" : [ "++" ],
-                "description" : "positif",
-                "color" : "#1D973D"
-            },
-            {
-                "keywords" : [ "--" ],
-                "description" : "negatif",
-                "color" : "#CE0A15"
-            },
-            {
-                "keywords" : [ "==" ],
-                "description" : "reference",
-                "color" : "#C5A62D"  
-            },
-            {
-                "keywords" : [ "??" ],
-                "description" : "question",
-                "color" : "#036AAE"
-            }
-        ],
-        streamgraph : false
-    }
-}/* the widget classes and definitions */
-
-/**
-  * @class Widget is an "abstract" class. It's mostly used to define some properties common to every widget.
-  *
-  *  Note that widget constructors are never called directly by the user. Instead, the widgets are instantiated by functions
-  *  defined in init.js
-  *  
-  * @constructor
-  * @param Popcorn a reference to the popcorn Object
-  * @param config configuration options for the widget
-  * @param Serializer a serializer instance from which the widget reads data fromCharCode  
-*/
-IriSP.Widget = function(Popcorn, config, Serializer) {
-
-  if (config === undefined || config === null) {
-    config = {}
-  }
-  
-  this._Popcorn = Popcorn;
-  this._config = config;  
-  this._serializer = Serializer;
-  
-  if (config.hasOwnProperty("container")) {
-     this._id = config.container;
-     this.selector = IriSP.jQuery("#" + this._id);
-  }
-
-  if (config.hasOwnProperty("spacer")) {
-     this._spacerId = config.spacer;
-     this.spacer = IriSP.jQuery("#" + this._spacerId);
-  }
-
-
-  if (config.hasOwnProperty("width")) {
-     // this.width and not this._width because we consider it public.
-     this.width = config.width;     
-  }
-  
-  if (config.hasOwnProperty("height")) {    
-     this.height = config.height;     
-  }
-  
-  if (config.hasOwnProperty("heightmax")) {
-     this.heightmax = config.heightmax;     
-  }
-
-  if (config.hasOwnProperty("widthmax")) {
-     this.widthmax = config.widthmax;     
-  } 
-
-  if (config.hasOwnProperty("layoutManager")) {
-     this.layoutManager = config.layoutManager;
-  }
-  if (typeof this.selector != "undefined") {
-      this.selector.addClass("Ldt-TraceMe").addClass("Ldt-Widget");
-      this.selector.attr("widget-type", this._config.type);
-  }
-  
-  // Parsing Widget Defaults
-  var _this = this;
-  
-  if (typeof config.type == "string" && typeof IriSP.widgetsDefaults[config.type] == "object") {
-      IriSP._(IriSP.widgetsDefaults[config.type]).each(function(_v, _k) {
-          if (typeof config[_k] != "undefined") {
-              _this[_k] = config[_k];
-          } else {
-              _this[_k] = _v;
-          }
-      });
-  }
-  
-};
-
-
-IriSP.Widget.prototype.currentMedia = function() {
-    return this._serializer.currentMedia();
-}
-
-IriSP.Widget.prototype.getDuration = function() {
-    return this._serializer.getDuration();
-}
-
-/**
-  * This method responsible of drawing a widget on screen.
-  */
-IriSP.Widget.prototype.draw = function() {
-  /* implemented by "sub-classes" */  
-};
-
-/**
-  * Optional method if you want your widget to support redraws.
-  */
-IriSP.Widget.prototype.redraw = function() {
-  /* implemented by "sub-classes" */  
-};
-/* modules are non-graphical entities, similar to widgets */
-
-IriSP.Module = function(Popcorn, config, Serializer) {
-
-  if (config === undefined || config === null) {
-    config = {}
-  }
-  
-  this._Popcorn = Popcorn;
-  this._config = config;  
-  this._serializer = Serializer;
-};
-/* layout.js - very basic layout management */
-
-/**
-  @class a layout manager manages a div and the layout of objects
-  inside it.
-*/
-IriSP.LayoutManager = function(options) {
-    this._Popcorn = null;
-    this._widgets = [];
-    
-    this._div = "LdtPlayer";
-    this._width = 640;
-    
-    if (options === undefined) {
-      options = {};
-    };
-    
-    if (options.hasOwnProperty('container')) {
-      this._div = options.container;
-    }
-
-    if (options.hasOwnProperty('width')) {
-      this._width = options.width;
-    }    
-    
-    if (options.hasOwnProperty('height')) {
-      this._height = options.height;
-    } 
-    
-    /* this is a shortcut */
-    this.selector = IriSP.jQuery("#" + this._div);
-    
-    this.selector.css({
-        "width": this._width,
-        "clear": "both"
-    });
-    
-    if (this._height !== undefined)
-      this.selector.css("height", this._height);
-};
-
-/** 
-   Set the popcorn instance used by the manager.
-   
-   we need this special setter because of a chicken and egg problem :
-   we want the manager to use popcorn but the popcorn div will be managed
-   by the manager. So we need a way to set the instance the manager uses
-*/
-   
-IriSP.LayoutManager.prototype.setPopcornInstance = function(popcorn) {
-    this._Popcorn = popcorn;
-}
-
-/** create a subdiv with an unique id, and a spacer div as well.
-    @param widgetName the name of the widget.
-    @return an array of the form [createdivId, spacerdivId].
-*/
-IriSP.LayoutManager.prototype.createDiv = function(widgetName) {
-    if (typeof(widgetName) === "undefined")
-       widgetName = "";
-
-    var newDiv = IriSP.guid(this._div + "_widget_" + widgetName + "_");
-    var spacerDiv = IriSP.guid("LdtPlayer_spacer_");
-    this._widgets.push([widgetName, newDiv]);    
-
-    var divTempl = "<div id='{{id}}' style='width: {{width}}px; position: relative; clear: both;'></div";
-    var spacerTempl = "<div id='{{spacer_id}}' style='width: {{width}}px; position: relative; height: {{spacer_div_height}}px;'></div";
-    
-    var divCode = Mustache.to_html(divTempl, {id: newDiv, width: this._width});
-    var spacerCode = Mustache.to_html(spacerTempl, {spacer_id: spacerDiv, width: this._width,
-                                                    spacer_div_height: IriSP.widgetsDefaults.LayoutManager.spacer_div_height });
-
-    this.selector.append(divCode);
-    this.selector.append(spacerCode);
-
-    return [newDiv, spacerDiv];
-};/* init.js - initialization and configuration of Popcorn and the widgets
-exemple json configuration:
- 
- */
-
-/**
-    set up the IriSP.__dataloader instance - 
-    we need it because we have to get the metadata
-    about the video before that the widget have even
-    loaded.
-*/
-IriSP.setupDataLoader = function() {
-  /* we set it up separately because we need to
-     get data at the very beginning, for instance when
-     setting up the video */
-  IriSP.__dataloader = new IriSP.DataLoader();
-};
-
-/** do some magic to configure popcorn according to the options object passed.
-    Works for html5, jwplayer and youtube videos 
-*/
-IriSP.configurePopcorn = function (layoutManager, options) {
-    var pop;
-    var ret = layoutManager.createDiv(); 
-    var containerDiv = ret[0];
-    var spacerDiv = ret[1];
-    
-    /* insert one pixel of margin between the video and the first widget, using the 
-       spacer.
-    */
-    IriSP.jQuery("#" + spacerDiv).css("height", "1px");
-    
-    switch(options.type) {
-      /*
-        todo : dynamically create the div/video tag which
-        will contain the video.
-      */
-      case "html5":
-           var tmpId = Popcorn.guid("video"); 
-           IriSP.jQuery("#" + containerDiv).append("<video src='" + options.file + "' id='" + tmpId + "'></video>");
-
-           if (options.hasOwnProperty("width"))
-             IriSP.jQuery("#" + containerDiv).css("width", options.width);
-           
-           if (options.hasOwnProperty("height"))
-             IriSP.jQuery("#" + containerDiv).css("height", options.height);
-
-           pop = Popcorn("#" + tmpId);
-        break;
-        
-      case "jwplayer":
-          var opts = IriSP.jQuery.extend({}, options);
-          delete opts.container;
-          delete opts.type;
-
-          
-          /* Try to guess options.file and options.streamer only if file and streamer
-             are not already defined in the configuration */
-          if (options.provider === "rtmp" && !opts.hasOwnProperty("file") && !opts.hasOwnProperty("streamer")) {
-            /* exit if we can't access the metadata */
-            if (typeof(IriSP.__jsonMetadata) === "undefined") {
-                break;
-            };
-
-            // the json format is totally illogical
-            //opts.streamer = IriSP.__jsonMetadata["medias"][0]["meta"]["item"]["value"];
-            //var source = IriSP.__jsonMetadata["medias"][0]["href"];
-
-            // the source if a full url but jwplayer wants an url relative to the
-            // streamer url, so we've got to remove the common part.
-            //opts.file = source.slice(opts.streamer.length);
-            
-            /* sometimes we get served a file with a wrong path and streamer.
-               as a streamer is of the form rtmp://domain/path/ and the media is
-               the rest, we uglily do this :
-            */
-            opts.file = "";
-            opts.streamer = "";
-            var fullPath = IriSP.get_aliased(IriSP.__jsonMetadata["medias"][0], ["href","url"]);
-            
-            if (fullPath === null) {
-              console.log("no url or href field defined in the metadata.");
-            }
-            
-            var pathSplit = fullPath.split('/');
-            
-            for (var i = 0; i < pathSplit.length; i++) {
-              if (i < 4) {
-                 opts.streamer += pathSplit[i] + "/";
-              } else {
-                 opts.file += pathSplit[i];
-                 /* omit the last slash if we're on the last element */
-                 if (i < pathSplit.length - 1)
-                  opts.file += "/";
-              }
-            }            
-          } else {
-            /* other providers type, video for instance -
-               pass everything as is */
-          }
-
-          if (!options.hasOwnProperty("flashplayer")) {
-            opts.flashplayer = IriSP.jwplayer_swf_path;
-          }
-
-          if (!options.hasOwnProperty("controlbar.position")) {
-            opts["controlbar.position"] = "none";
-          }
-
-          pop = new IriSP.PopcornReplacement.jwplayer("#" + containerDiv, opts);
-        break;
-      
-      case "youtube":
-          var opts = IriSP.jQuery.extend({}, options);
-          delete opts.container;
-          opts.controls = 0;
-          opts.autostart = false;
-          templ = "width: {{width}}px; height: {{height}}px;";
-          var str = Mustache.to_html(templ, {width: opts.width, height: opts.height});    
-          // Popcorn.youtube wants us to specify the size of the player in the style attribute of its container div.
-          IriSP.jQuery("#" + containerDiv).attr("style", str);
-          
-          pop = Popcorn.youtube("#" + containerDiv, opts.video, opts);
-        break;
-      
-    case "dailymotion":
-        pop = new IriSP.PopcornReplacement.dailymotion("#" + containerDiv, options);
-        break;
-             
-      case "allocine":
-          /* pass the options as-is to the allocine player and let it handle everything */
-          pop = new IriSP.PopcornReplacement.allocine("#" + containerDiv, options);
-          break;
-          
-      default:
-        pop = undefined;
-    };
-    
-    return pop;
-};
-
-/** Configure the gui and instantiate the widgets passed as parameters
-    @param guiOptions the gui object as seen in the examples.
- */
-IriSP.configureWidgets = function (popcornInstance, layoutManager, guiOptions) {
- 
-  var serialFactory = new IriSP.SerializerFactory(IriSP.__dataloader);
-  var params = {width: guiOptions.width, height: guiOptions.height};
-
-  var default_options = guiOptions.default_options;
-  if (IriSP.null_or_undefined(default_options))
-    default_options = {};
-  
-  var ret_widgets = [];
-  var index;
-  
-  for (index = 0; index < guiOptions.widgets.length; index++) {    
-    var widget = IriSP.instantiateWidget(popcornInstance, serialFactory, layoutManager, guiOptions.widgets[index], default_options);
-   
-    ret_widgets.push(widget);   
-  };
-
-  return ret_widgets;
-};
-
-/** configure modules. @see configureWidgets */
-IriSP.configureModules = function (popcornInstance, modulesList) {
-  if (IriSP.null_or_undefined(modulesList))
-    return;
-  
-  var serialFactory = new IriSP.SerializerFactory(IriSP.__dataloader);
-  var ret_modules = [];
-  var index;
-  
-  for (index = 0; index < modulesList.length; index++) {    
-    var moduleConfig = modulesList[index];
-    
-    var serializer = serialFactory.getSerializer(moduleConfig.metadata);
-    var module = new IriSP[moduleConfig.type](popcornInstance, moduleConfig, serializer);    
-    ret_modules.push(module);
-  };
-
-  return ret_modules;
-};
-
-/** instantiate a widget - only called by configureWidgets, never by the user. Handles widget 
-    dependencies.
-    @param popcornInstance popcorn instance the widget will user
-    @param serialFactory serializer factory to instantiate the widget with
-    @param layoutManager layout manager
-    @param widgetConfig configuration options for the widget
-    @param defaultOptions a dictionnary with some options defined for every widget.
- */
-IriSP.instantiateWidget = function(popcornInstance, serialFactory, layoutManager, widgetConfig, defaultOptions) {
-
-    if (IriSP.null_or_undefined(defaultOptions))
-      defaultOptions = {};
-    
-    widgetConfig = IriSP.underscore.defaults(widgetConfig, defaultOptions);
-
-    var arr = IriSP.jQuery.extend({}, widgetConfig);
-    
-    /* create a div for those widgets who didn't already specify a container; */
-    if (!arr.hasOwnProperty("container")) {
-      /* create div returns us a container for the widget and a spacer */    
-      var ret = layoutManager.createDiv(widgetConfig.type);        
-      var container = ret[0];
-      var spacer = ret[1];           
-      arr.container = container;
-      arr.spacer = spacer;
-      arr.layoutManager = layoutManager;
-    }
-    var serializer = serialFactory.getSerializer(widgetConfig.metadata);    
-    
-    if (typeof serializer == "undefined")   
-      debugger;
-    
-    // instantiate the object passed as a string
-    var widget = new IriSP[widgetConfig.type](popcornInstance, arr, serializer);    
-    
-    if (widgetConfig.hasOwnProperty("requires")) {
-      // also create the widgets this one depends on.
-      // the dependency widget is available in the parent widget context as
-      // this.WidgetName (for instance, this.TipWidget);
-      
-      var i = 0;
-      for(i = 0; i < widgetConfig.requires.length; i++) {
-        var widgetName = widgetConfig.requires[i]["type"],
-            _configobj = IriSP.jQuery.extend({}, widgetConfig.requires[i]),
-            _div = document.createElement('div'),
-            _container = IriSP.guid(arr.container + '_' + widgetName + '_');
-        _configobj.container = _container;
-        _div.id = _container;
-        widget.selector.append(_div);
-        widget[widgetName] = IriSP.instantiateWidget(popcornInstance, serialFactory, layoutManager, _configobj, defaultOptions);
-      }
-    }       
-     
-    serializer.sync(IriSP.wrap(widget, function() { this.draw(); }));
-    return widget;
-};
-
-/** single point of entry for the metadataplayer */
-IriSP.initPlayer = function(config, metadata_url) {
-    document.getElementById(config.gui.container).innerHTML = IriSP.templToHTML(IriSP.loading_template, config.gui);
-    IriSP.loadLibs(config, metadata_url,
-      function() {   
-              
-              var layoutManager = new IriSP.LayoutManager(config.gui);
-
-              var pop = IriSP.configurePopcorn(layoutManager, config.player);
-              
-              IriSP._widgets = IriSP.configureWidgets(pop, layoutManager, config.gui); 
-              IriSP._modules = IriSP.configureModules(pop, config.modules); 
-              IriSP.jQuery('#Ldt-loader').detach();
-      });
-};IriSP.I18n = function() {
-    this.messages = {};
-    this.base_lang = 'en';
-}
-
-IriSP.I18n.prototype.getLanguage = function(lang) {
-    var _lang = (
-        typeof lang != "undefined"
-        ? lang
-        : (
-            typeof IriSP.language != "undefined"
-            ? IriSP.language
-            : this.base_lang
-        )
-    );
-    return (
-        typeof this.messages[_lang] == "object"
-        ? _lang
-        : (
-            typeof this.messages[this.base_lang] == "object"
-            ? this.base_lang
-            : null
-        )
-    )
-}
-
-IriSP.I18n.prototype.getMessages = function(lang) {
-    var _lang = this.getLanguage(lang);
-    return (
-        _lang != null
-        ? this.messages[_lang]
-        : {}
-    );
-}
-
-IriSP.I18n.prototype.getMessage = function(message, lang) {
-    var _msgs = this.getMessages(lang);
-    return (
-        typeof _msgs[message] != "undefined"
-        ? _msgs[message]
-        : message
-    )
-}
-
-IriSP.I18n.prototype.addMessage = function(lang, messagekey, messagevalue) {
-    if (typeof this.messages[lang] == "undefined") {
-        this.messages[lang] = {};
-    }
-    this.messages[lang][messagekey] = messagevalue;
-}
-
-IriSP.I18n.prototype.addMessages = function(messagesObj) {
-    var _this = this;
-    IriSP.underscore(messagesObj).each(function(_messages, _lang) {
-        IriSP.underscore(_messages).each(function(_value, _key) {
-            _this.addMessage(_lang, _key, _value);
-        })
-    });
-}
-
-IriSP.i18n = new IriSP.I18n();
-
-IriSP.i18n.addMessages({
-    "fr": {
-        "loading_wait": "Chargement en cours, veuillez patienter&hellip;"
-    },
-    "en": {
-        "loading_wait": "Loading, please wait&hellip;"
-    }
-})
-/* To wrap a player the develop should create a new class derived from
-the IriSP.PopcornReplacement.player and defining the correct functions */
-
-/** allocine player wrapper */
-IriSP.PopcornReplacement.allocine = function(container, options) {
-//    console.log("Calling allocine player");
-    /* appel du parent pour initialiser les structures communes à tous les players */
-    IriSP.PopcornReplacement.player.call(this, container, options);   
-    
-    var _this = this;
-
-    /* Définition des fonctions de l'API -  */
-
-    this.playerFns = {
-        play : function() {
-            return _this.apiCall("play");
-        },
-        pause : function() {
-            return _this.apiCall("pause");
-        },
-        getPosition : function() {
-            return _this.apiCall("getSeek","return") || 0;
-        },
-        seek : function(pos) {
-            return _this.apiCall("seek",pos);
-        },
-        getMute : function() {
-            return _this.apiCall("getMute","return");
-        },
-        setMute : function(p) {
-            return _this.apiCall("setMute", p);
-        }
-    }
-
-    window.onReady = IriSP.wrap(this, this.ready);
-    window.onAllocineStateChange = IriSP.wrap(this, this.stateHandler);
-    window.onTime = IriSP.wrap(this, this.progressHandler);
-    
-    var _videoUrl = (
-        typeof options.directVideoPath == "string"
-        ? options.directVideoPath
-        : IriSP.get_aliased(IriSP.__jsonMetadata["medias"][0], ["href","url"])
-    );
-    var _flashVars = {
-        "streamFMS" : true,
-        "adVast" : false,
-        "lg" : "fr_cinecast",
-        "autoPlay" : options.autoPlay,
-        "directVideoTitle" : "",
-        "urlAcData" : options.urlAcData,
-        "directVideoPath" : _videoUrl,
-        "host" : "http://allocine.fr"
-    }
-    
-    if (typeof IriSP.__jsonMetadata["medias"][0].meta == "object" && typeof IriSP.__jsonMetadata["medias"][0].meta.subtitles == "string") {
-        _flashVars.subTitlePath = IriSP.__jsonMetadata["medias"][0].meta.subtitles;
-    }
-    
-
-    var params = {
-        "allowScriptAccess" : "always",
-        "wmode": "opaque",
-        "flashvars" : IriSP.jQuery.param(_flashVars),
-        "allowfullscreen" : true
-    };
-    var atts = {
-        id : this.container
-    };
-    swfobject.embedSWF(options.acPlayerUrl, this.container, options.width, options.height, "10", null, null, params, atts);
-
-};
-
-IriSP.PopcornReplacement.allocine.prototype = new IriSP.PopcornReplacement.player("", {});
-
-IriSP.PopcornReplacement.allocine.prototype.ready = function() {
-    this.player = document.getElementById(this.container);
-    this.player.addEventListener("onStateChange", "onAllocineStateChange");
-    this.player.cueVideoByUrl(this._options.video);
-    this.callbacks.onReady();
-};
-
-IriSP.PopcornReplacement.allocine.prototype.progressHandler = function(progressInfo) {
-    this.callbacks.onTime({
-        position: progressInfo.mediaTime
-    });
-}
-
-
-IriSP.PopcornReplacement.allocine.prototype.apiCall = function(_method, _arg) {
-    if (this.player) {
-        try {
-            if (typeof _arg == "undefined") {
-                return this.player.sendToActionScript(_method);
-            } else {
-                return this.player.sendToActionScript(_method, _arg);
-            }
-        } catch(e) {
-            console.error('Exception while requesting AcPlayer for "' + _method + (typeof _arg == "undefined" ? '' : '" with argument "' + _arg ) + '"\n', e);
-            return false;
-        }
-    } else {
-        return false;
-    }
-}
-
-IriSP.PopcornReplacement.allocine.prototype.stateHandler = function(state) {
-    console.log("stateHandler");
-    switch(state) {
-        case 1:
-            this.callbacks.onPlay();
-            break;
-
-        case 2:
-            this.callbacks.onPause();
-            break;
-
-        case 3:
-            this.callbacks.onSeek({
-                position: this.player.getCurrentTime()
-            });
-            break;
-
-        /*
-        case 5:
-            this.callbacks.onReady();
-            break;
-        */
-    }
-    
-};/* To wrap a player the develop should create a new class derived from
-the IriSP.PopcornReplacement.player and defining the correct functions */
-
-/** jwplayer player wrapper */
-IriSP.PopcornReplacement.dailymotion = function(container, options) {
-    console.log("Calling");
-    /* appel du parent pour initialiser les structures communes à tous les players */
-    IriSP.PopcornReplacement.player.call(this, container, options);   
-    
-    var _this = this;
-
-    /* Définition des fonctions de l'API -  */
-
-    this.playerFns = {
-        play : function() {
-            if (_this.player) {
-                return _this.player.playVideo();
-            } else {
-                return false;
-            }
-        },
-        pause : function() {
-            if (_this.player) {
-                return _this.player.pauseVideo();
-            } else {
-                return false;
-            }
-        },
-        getPosition : function() {
-            if (_this.player) {
-                return _this.player.getCurrentTime();
-            } else {
-                return 0;
-            }
-        },
-        seek : function(pos) {
-            if (_this.player) {
-                return _this.player.seekTo(pos);
-            } else {
-                return false;
-            }
-        },
-        getMute : function() {
-            if (_this.player) {
-                return _this.player.isMuted();
-            } else {
-                return false;
-            }
-        },
-        setMute : function(p) {
-            if (_this.player) {
-                if (p) {
-                    _this.player.mute();
-                }
-                else {
-                    _this.player.unMute();
-                }
-            }
-        },
-        getVolume : function() {
-            if (_this.player) {
-                return _this.player.getVolume() / 100;
-            } else {
-                return false;
-            }
-        },
-        setVolume : function(p) {
-            if (_this.player) {
-                _this.player.setVolume(Math.floor(100 * p));
-            }
-        },
-    }
-
-    window.onDailymotionPlayerReady = IriSP.wrap(this, this.ready);
-    window.onDailymotionStateChange = IriSP.wrap(this, this.stateHandler);
-    window.onDailymotionVideoProgress = IriSP.wrap(this, this.progressHandler);
-
-    var params = {
-        "allowScriptAccess" : "always",
-        "wmode": "opaque"
-    };
-    var atts = {
-        id : this.container
-    };
-    swfobject.embedSWF("http://www.dailymotion.com/swf?chromeless=1&enableApi=1", this.container, options.width, options.height, "8", null, null, params, atts);
-
-};
-
-IriSP.PopcornReplacement.dailymotion.prototype = new IriSP.PopcornReplacement.player("", {});
-
-IriSP.PopcornReplacement.dailymotion.prototype.ready = function() {
-    
-    this.player = document.getElementById(this.container);
-    
-    this.player.addEventListener("onStateChange", "onDailymotionStateChange");
-    this.player.addEventListener("onVideoProgress", "onDailymotionVideoProgress");
-    this.player.cueVideoByUrl(this._options.video);
-    
-    this.callbacks.onReady();
-};
-
-IriSP.PopcornReplacement.dailymotion.prototype.progressHandler = function(progressInfo) {
-    
-    this.callbacks.onTime({
-        position: progressInfo.mediaTime
-    });
-}
-
-IriSP.PopcornReplacement.dailymotion.prototype.stateHandler = function(state) {
-    
-    switch(state) {
-        case 1:
-            this.callbacks.onPlay();
-            break;
-
-        case 2:
-            this.callbacks.onPause();
-            break;
-
-        case 3:
-            this.callbacks.onSeek({
-                position: this.player.getCurrentTime()
-            });
-            break;
-
-        /*
-        case 5:
-            this.callbacks.onReady();
-            break;
-        */
-    }
-    
-};/* To wrap a player the develop should create a new class derived from 
-   the IriSP.PopcornReplacement.player and defining the correct functions */
-
-/** jwplayer player wrapper */
-IriSP.PopcornReplacement.jwplayer = function(container, options) {
-  /* appel du parent pour initialiser les structures communes à tous les players */
-  IriSP.PopcornReplacement.player.call(this, container, options);
-  
-  this.media.duration = options.duration; /* optional */
-  
-  /* Définition des fonctions de l'API -  */
-  this.playerFns = {
-    play: function() { return jwplayer(this.container).play(); },
-    pause: function() { return jwplayer(this.container).pause(); },
-    getPosition: function() { return jwplayer(this.container).getPosition(); },
-    seek: function(pos) { return jwplayer(this.container).seek(pos); },
-    getMute: function() { return jwplayer(this.container).getMute() },
-    setMute: function(p) { return jwplayer(this.container).setMute(p); },
-    getVolume: function() { return jwplayer(this.container).getVolume() / 100; },
-    setVolume: function(p) { return jwplayer(this.container).setVolume(Math.floor(100*p)); }
-  }
-
-  options.events = this.callbacks;
-
-  jwplayer(this.container).setup(options);
-};
-
-IriSP.PopcornReplacement.jwplayer.prototype = new IriSP.PopcornReplacement.player("", {});
-/* embed module - listens and relay hash changes to a parent window. */
-
-IriSP.EmbedModule = function(Popcorn, config, Serializer) {
-  IriSP.Module.call(this, Popcorn, config, Serializer);
-
-  window.addEventListener('message', IriSP.wrap(this, this.handleMessages), false);
-  this._Popcorn.listen("IriSP.Mediafragment.hashchange", IriSP.wrap(this, this.relayChanges));
-};
-
-IriSP.EmbedModule.prototype = new IriSP.Module();
-
-IriSP.EmbedModule.prototype.handleMessages = function(e) {
-  if (e.data.type === "hashchange") {
-    window.location.hash = e.data.value;    
-  }  
-};
-
-IriSP.EmbedModule.prototype.relayChanges = function(newHash) {
-  window.parent.postMessage({type: "hashchange", value: newHash}, "*"); 
-  return;
-};/* mediafragment module */
-
-IriSP.MediaFragment = function(Popcorn, config, Serializer) {
-  IriSP.Module.call(this, Popcorn, config, Serializer);
-
-  this.mutex = false; /* a mutex because we access the url from two different functions */
-
-  this._Popcorn.listen( "loadedmetadata", IriSP.wrap(this,this.advanceTime));
-  this._Popcorn.listen( "pause", IriSP.wrap(this,this.updateTime));
-  this._Popcorn.listen( "seeked", IriSP.wrap(this,this.updateTime));
-  this._Popcorn.listen( "IriSP.PolemicTweet.click", IriSP.wrap(this,this.updateAnnotation));
-  this._Popcorn.listen( "IriSP.SegmentsWidget.click", IriSP.wrap(this,this.updateAnnotation));
-  
-  window.onhashchange = IriSP.wrap(this, this.advanceTime);
-};
-
-IriSP.MediaFragment.prototype = new IriSP.Module();
-
-IriSP.MediaFragment.prototype.advanceTime = function() {
-             var url = window.location.href;
-
-              if ( url.split( "#" )[ 1 ] != null ) {
-                  pageoffset = url.split( "#" )[1];
-
-                  if ( pageoffset.substring(0, 2) === "t=") {
-                    // timecode 
-                    if ( pageoffset.substring( 2 ) != null ) {
-                    var offsettime = pageoffset.substring( 2 );
-                    this._Popcorn.currentTime( parseFloat(offsettime) );
-                    
-                    /* we have to trigger this signal manually because of a
-                     bug in the jwplayer */
-                    this._Popcorn.trigger("seeked", parseFloat(offsettime));
-                    }
-                  } else if ( pageoffset.substring(0, 3) === "id=") {
-                    // annotation
-                    var annotationId = pageoffset.substring( 3 );
-                    // there's no better way than that because
-                    // of possible race conditions
-                    this._serializer.sync(IriSP.wrap(this, function() {
-                          this.lookupAnnotation.call(this, annotationId); 
-                          }));
-                  }
-              }
-};
-
-/** handler for the seeked signal. It may have or may have not an argument.
-    @param time if not undefined, the time we're seeking to 
-*/
-IriSP.MediaFragment.prototype.updateTime = function(time) {
-  if (this.mutex === true) {
-    return;
-  }
-
-  var history = window.history;
-  if ( !history.pushState ) {
-    return false;
-  }
-    
-  if (IriSP.null_or_undefined(time) || typeof(time) != "number") {
-    var ntime = this._Popcorn.currentTime().toFixed(2)
-  } else {
-    var ntime = time.toFixed(2);
-  }
-
-  // used to relay the new hash to the embedder
-  this._Popcorn.trigger("IriSP.Mediafragment.hashchange", "#t=" + ntime);
-  
-  splitArr = window.location.href.split( "#" )
-  history.replaceState( {}, "", splitArr[0] + "#t=" + ntime );
-};
-
-
-IriSP.MediaFragment.prototype.updateAnnotation = function(annotationId) {
-  var _this = this;
-  this.mutex = true;
-
-  var history = window.history;
-  if ( !history.pushState ) {
-    return false;
-  }
- 
-  
-  // used to relay the new hash to the embedder
-  this._Popcorn.trigger("IriSP.Mediafragment.hashchange", "#id=" + annotationId);
-  
-  splitArr = window.location.href.split( "#" )
-  history.replaceState( {}, "", splitArr[0] + "#id=" + annotationId);
-
-  
-  // reset the mutex afterwards to prevent the module from reacting to his own changes.
-  window.setTimeout(function() { _this.mutex = false }, 50);
-};
-
-// lookup and seek to the beginning of an annotation
-IriSP.MediaFragment.prototype.lookupAnnotation = function(annotationId) {
-  var _this = this;
-  this.mutex = true;
-
-  var annotation = undefined;
-  var annotations = this._serializer._data.annotations;
-
-  var i;
-  for (i = 0; i < annotations.length; i++) {
-      if (annotations[i].id === annotationId) {
-        annotation = annotations[i];
-        break;
-      }
-  }
-
-  if (typeof(annotation) !== "undefined") {
-    this._Popcorn.currentTime(annotation.begin / 1000);
-
-    /* we have to trigger this signal manually because of a
-     bug in the jwplayer */
-    this._Popcorn.trigger("seeked", annotation.begin / 1000);
-    this._Popcorn.trigger("IriSP.Mediafragment.showAnnotation", annotationId);
-  }
-  
-  window.setTimeout(function() { _this.mutex = false }, 50);
-};
-IriSP.AnnotationsListWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-  this.__counter = 0;
-  this.__oldList = [];
-  this.searchRe = null;
-  this._ajax_cache = [];
-  var _this = this;
-  
-  this._Popcorn.listen("IriSP.search", function(searchString) {
-      _this.searchHandler(searchString);
-  });
-  this._Popcorn.listen("IriSP.search.closed", function() {
-      _this.searchHandler(false);
-  });
-  this._Popcorn.listen("IriSP.search.cleared", function() {
-      _this.searchHandler(false);
-  });
-};
-
-
-IriSP.AnnotationsListWidget.prototype = new IriSP.Widget();
-
-IriSP.AnnotationsListWidget.prototype.clear = function() {
-};
-
-IriSP.AnnotationsListWidget.prototype.clearWidget = function() {
-};
-
-IriSP.AnnotationsListWidget.prototype.searchHandler = function(searchString) {
-  this.searchRe = (searchString && searchString.length) ? IriSP.regexpFromText(searchString) : null;
-  if (this.ajax_mode && !this.cinecast_version) {
-      var _this = this,
-        _annotations = (
-            this.searchRe === null
-            ? this._ajax_cache
-            : IriSP.underscore.filter(this._ajax_cache, function(_a) {
-               return (_this.searchRe.test(_a.desc) || _this.searchRe.test(_a.title)); 
-            })
-        );
-    this.do_redraw(_annotations);
-    if (_annotations.length) {
-        this._Popcorn.trigger("IriSP.search.matchFound");
-      } else {
-        this._Popcorn.trigger("IriSP.search.noMatchFound");
-      }    
-  } else {
-      this.drawList();
-  }
-}
-
-/** effectively redraw the widget - called by drawList */
-IriSP.AnnotationsListWidget.prototype.do_redraw = function(list) {
-    var _html = IriSP.templToHTML(
-        IriSP.annotationsListWidget_template, {
-            annotations: list
-        }),
-        _this = this;
-      
-    this.selector.html(_html);
-    
-    this.selector.find('.Ldt-AnnotationsList-Tag-Li').click(function() {
-        _this._Popcorn.trigger("IriSP.search.triggeredSearch", IriSP.jQuery(this).text().trim());
-    })
-    
-    if (this.searchRe !== null) {
-        this.selector.find(".Ldt-AnnotationsList-Title a, .Ldt-AnnotationsList-Description")
-            .each(function()  {
-                var _$ = IriSP.jQuery(this);
-                _$.html(_$.text().trim().replace(_this.searchRe, '<span class="Ldt-AnnotationsList-highlight">$1</span>'))
-            })
-    }
-};
-
-IriSP.AnnotationsListWidget.prototype.transformAnnotation = function(a) {
-    var _this = this;
-    return {
-        "id" : a.id,
-        "title": this.cinecast_version ? IriSP.get_aliased(a.meta, ['creator_name', 'creator']) : a.content.title,
-        "desc" : this.cinecast_version ? a.content.data : a.content.description,
-        "begin": IriSP.msToTime(a.begin),
-        "end" : IriSP.msToTime(a.end),
-        "thumbnail" : (typeof a.meta == "object" && typeof a.meta.thumbnail == "string") ? a.meta.thumbnail : this.default_thumbnail,
-        "url" : (typeof a.meta == "object" && typeof a.meta.url == "string") ? a.meta.url : null,
-        "created_at" :(typeof a.meta == "object" && typeof a.meta.created == "string") ? Date.parse(a.meta.created.replace(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}\:\d{2}\:\d{2}).*$/,"$2/$3/$1 $4 UTC+0000")) : null,
-        "tags": typeof a.tags == "object"
-            ? IriSP.underscore(a.tags)
-                .chain()
-                .map(function(_t) {
-                    if (typeof _t == "string") {
-                        return _t.replace(/^.*:/,'#');
-                    } else {
-                        if (typeof _t['id-ref'] != "undefined") {
-                            var _f = IriSP.underscore.find(_this._serializer._data.tags, function(_tag) {
-                                return _tag.id == _t['id-ref'];
-                            });
-                            if (typeof _f != "undefined") {
-                                return IriSP.get_aliased(_f.meta, ['dc:title', 'title']);
-                            }
-                        }
-                    }
-                    return null;
-                })
-                .filter(function(_t) {
-                    return _t !== null && _t !== ""
-                })
-                .value()
-            : []
-    }    
-}
-
-/** draw the annotation list */
-IriSP.AnnotationsListWidget.prototype.drawList = function(force_redraw) {
-  var _this = this;
-  
-//  var view_type = this._serializer.getContributions();
-  var annotations = this._serializer._data.annotations;
-  var currentTime = this._Popcorn.currentTime();
-  var list = [];
-
-/*  if (typeof(view_type) === "undefined") {    
-    return;
-} */
-  for (i = 0; i < annotations.length; i++) {
-    var obj = this.transformAnnotation(annotations[i]);
-    obj.iterator = i;
-    obj.distance = Math.abs((annotations[i].end + annotations[i].begin) / 2000 - currentTime);
-    if (!this.cinecast_version || annotations[i].type == "cinecast:UserAnnotation") {
-        list.push(obj);
-    }
-    
-  }
-  
-    if (this.searchRe !== null) {
-        list = list.filter(function(_a) {
-            return (_this.searchRe.test(_a.desc) || _this.searchRe.test(_a.title)); 
-        });
-        if (list.length) {
-            this._Popcorn.trigger("IriSP.search.matchFound");
-          } else {
-            this._Popcorn.trigger("IriSP.search.noMatchFound");
-          }
-    }
-  list = IriSP.underscore(list)
-    .chain()
-    .sortBy(function(_o) {
-        return _o.distance;
-    })
-    .first(10)
-    .sortBy(function(_o) {
-        return (_this.cinecast_version ? - _o.created_at : _o.iterator);
-    })
-    .value();
-  var idList = IriSP.underscore.pluck(list, "id").sort();
-
-  if (!IriSP.underscore.isEqual(this.__oldList, idList) || this.lastSearch !== this.searchRe || typeof(force_redraw) !== "undefined") {
-    this.do_redraw(list);
-    this.__oldList = idList;
-    this.lastSearch = this.searchRe;
-  }
-   /* save for next call */
-  
-  
-};
-
-IriSP.AnnotationsListWidget.prototype.ajaxRedraw = function(timecode) {
-
-  /* the seeked signal sometimes passes an argument - depending on if we're using
-     our popcorn lookalike or the real thing - if it's the case, use it as it's
-     more precise than currentTime which sometimes contains the place we where at */
-  if (IriSP.null_or_undefined(timecode) || typeof(timecode) != "number") {
-     var tcode = this._Popcorn.currentTime();     
-   } else {
-     var tcode = timecode;     
-  }
-   
-  
-  /* the platform gives us a special url - of the type : http://path/{{media}}/{{begin}}/{{end}}
-     we double the braces using regexps and we feed it to mustache to build the correct url
-     we have to do that because the platform only knows at run time what view it's displaying.
-  */
-     
-  var media_id = this.currentMedia()["id"];
-  var duration = this.getDuration();
-  
-  var begin_timecode = (Math.floor(tcode) - 300) * 1000;
-  if (begin_timecode < 0)
-    begin_timecode = 0;
-    
-  var end_timecode = (Math.floor(tcode) + 300) * 1000;
-  if (end_timecode > duration)
-    end_timecode = duration;
-  
-  var templ = Mustache.to_html(this.ajax_url, {media: media_id, begin: begin_timecode,
-                                 end: end_timecode});
-
-  /* we create on the fly a serializer to get the ajax */
-  var serializer = new IriSP.JSONSerializer(IriSP.__dataloader, templ);
-  serializer.sync(IriSP.wrap(this, function(json) { this.processJson(json, serializer) }));
-};
-
-/** process the received json - it's a bit hackish */
-IriSP.AnnotationsListWidget.prototype.processJson = function(json, serializer) {
-  /* FIXME: DRY the whole thing */
-  var annotations = serializer._data.annotations;
-  if (IriSP.null_or_undefined(annotations))
-    return;
-  
-  /*
-  commented in case we wanted to discriminate against some annotation types.
-  var view_types = serializer.getIds("Contributions");
-  */
-  var l = [];
-  
-  var media = this.currentMedia()["id"];
-  
-  for (i = 0; i < annotations.length; i++) {
-    var obj = this.transformAnnotation(annotations[i])
-      if (typeof obj.url == "undefined" || !obj.url) {
-          /* only if the annotation isn't present in the document create an
-             external link */
-          if (this.annotations_ids.indexOf(obj.id.toLowerCase()) == -1) {
-            // braindead url; jacques didn't want to create a new one in the platform,
-            // so we append the cutting id to the url.
-            obj.url = this.project_url + "/" + media + "/" + 
-                         annotations[i].meta.project + "/" +
-                         annotations[i].meta["id-ref"] + '#id=' + annotations[i].id;
-                         
-            // obj.url = document.location.href.split("#")[0] + "/" + annotation.meta.project;
-          }
-          }
-      l.push(obj);
-  }
-  this._ajax_cache = l;
-  this.do_redraw(l);
-};
-IriSP.AnnotationsListWidget.prototype.draw = function() {
-  
-  /* build a table of the annotations present in the document for faster 
-     lookup
-  */
-  this.annotations_ids = IriSP.underscore(this._serializer._data.annotations).map(function(_a) {
-    return _a.id.toLowerCase();
-  });
-  
-  var _this = this;
-    
-    if (!this.ajax_mode || this.cinecast_version) {
-        var _throttled = IriSP.underscore.throttle(function() {
-            _this.drawList();
-        }, 1500);
-        _throttled();
-        this._Popcorn.listen("IriSP.createAnnotationWidget.addedAnnotation", _throttled);
-        this._Popcorn.listen("timeupdate", _throttled);
-        if (this.cinecast_version) {
-            window.setInterval(function() {
-                var _tmpSerializer = new IriSP.JSONSerializer(IriSP.__dataloader,  _this._config.metadata.src, true);
-                _tmpSerializer.sync(function(json) {
-                    IriSP.underscore(json.annotations).each(function(_a) {
-                        var _j = _this.annotations_ids.indexOf(_a.id);
-                        if (_j == -1) {
-                            _this._serializer._data.annotations.push(_a);
-                            _this.annotations_ids.push(_a.id);
-                        } else {
-                            _this._serializer._data.annotations[_j] = _a;
-                        }
-                        _throttled();
-                    });
-                }, true); // true is for force_refresh
-            },this.refresh_interval);
-        }
-  } else {
-    /* update the widget when the video has finished loading and when it's seeked and paused */
-    this._Popcorn.listen("seeked", IriSP.wrap(this, this.ajaxRedraw));
-    this._Popcorn.listen("loadedmetadata", IriSP.wrap(this, this.ajaxRedraw));
-    this._Popcorn.listen("paused", IriSP.wrap(this, this.ajaxRedraw));
-    
-    this._Popcorn.listen("IriSP.createAnnotationWidget.addedAnnotation", IriSP.wrap(this, this.ajaxRedraw));
-  }
-
-};/* Internationalization for this widget */
-
-IriSP.i18n.addMessages(
-    {
-        "fr": {
-            "keywords": "Mots-clés"
-        },
-        "en": {
-            "keywords": "Keywords"
-        }
-    }
-);
-
-IriSP.AnnotationsWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-  /* flag used when we're creating an annotation */
-  this._hidden = false;
-};
-
-
-IriSP.AnnotationsWidget.prototype = new IriSP.Widget();
-
-IriSP.AnnotationsWidget.prototype.clear = function() {
-    this.selector.find(".Ldt-SaTitle").text("");
-    this.selector.find(".Ldt-SaDescription").text("");
-    this.selector.find(".Ldt-SaKeywordText").text("");
-};
-
-IriSP.AnnotationsWidget.prototype.displayAnnotation = function(annotation) {       
-    var title = annotation.content.title;
-    var description = annotation.content.description;
-    var keywords =  "";
-    var begin = +annotation.begin / 1000;
-    var end = +annotation.end / 1000;
-    var duration = this.getDuration();
-    var tags = "";
-    
-    var title_templ = "{{title}} - ( {{begin}} - {{end}} )";
-    var endstr = Mustache.to_html(title_templ, {title: title, begin: IriSP.secondsToTime(begin), end: IriSP.secondsToTime(end)});
-
-    this.selector.find(".Ldt-SaTitle").text(endstr);
-    this.selector.find(".Ldt-SaDescription").text(description);
-    
-    
-    if (!IriSP.null_or_undefined(annotation.tags) && !IriSP.null_or_undefined(this._serializer._data.tags)) {
-      /* save the tag id and keywords in a unique structure */
-      var tag_list = {};
-      for (var i = 0; i < this._serializer._data.tags.length; i++) {
-        var id = this._serializer._data.tags[i]["id"];
-        var keyword = IriSP.get_aliased(this._serializer._data.tags[i]["meta"], ["dc:title", "title"]);
-
-        tag_list[id] = keyword;
-      }
-
-      /* then browse the list of defined tags for the current annotation */
-      for (var i = 0; i < annotation.tags.length; i++) {
-        if (tag_list.hasOwnProperty(annotation.tags[i]["id-ref"]))
-          tags += tag_list[annotation.tags[i]["id-ref"]] + ", ";
-      }
-    }
-    
-    tags = IriSP.i18n.getMessage("keywords") + ": " + tags.slice(0, tags.length - 2);
-    
-    this.selector.find(".Ldt-SaKeywords").text(tags);
-    
-    // update sharing buttons
-    var url = document.location.href + "#id=" + annotation.id;
-    this.selector.find(".Ldt-fbShare").attr("href", IriSP.mkFbUrl(url, this.share_text));
-    this.selector.find(".Ldt-TwShare").attr("href", IriSP.mkTweetUrl(url, this.share_text));
-    this.selector.find(".Ldt-GplusShare").attr("href", IriSP.mkGplusUrl(url, this.share_text));
-};
-
-IriSP.AnnotationsWidget.prototype.clearWidget = function() {   
-    /* retract the pane between two annotations */
-    this.selector.find(".Ldt-SaTitle").text("");
-    this.selector.find(".Ldt-SaDescription").text("");
-    this.selector.find(".Ldt-SaKeywordText").html("");
-    this.selector.find(".Ldt-ShowAnnotation").slideUp();
-};
-
-IriSP.AnnotationsWidget.prototype.draw = function() {
-  var _this = this;
-
-  var annotationMarkup = IriSP.templToHTML(IriSP.annotationWidget_template);
-	this.selector.append(annotationMarkup);
-
-  this._Popcorn.listen("IriSP.AnnotationsWidget.show", 
-                        IriSP.wrap(this, this.show));
-  this._Popcorn.listen("IriSP.AnnotationsWidget.hide", 
-                        IriSP.wrap(this, this.hide));
- 
-  var legal_ids = [];
-  if (typeof(this._serializer.getChapitrage()) !== "undefined")
-    legal_ids.push(this._serializer.getChapitrage());
-  else 
-    legal_ids = this._serializer.getNonTweetIds();
-  
-  var annotations = this._serializer._data.annotations;
-  var i;
-  
-	for (i in annotations) {    
-    var annotation = annotations[i];
-    var begin = Math.round((+ annotation.begin) / 1000);
-    var end = Math.round((+ annotation.end) / 1000);
-
-    if (typeof(annotation.meta) !== "undefined" && typeof(annotation.meta["id-ref"]) !== "undefined"
-          && !IriSP.underscore.include(legal_ids, annotation.meta["id-ref"])) {
-        continue;
-    }
-
-
-    var conf = {start: begin, end: end, 
-                onStart: 
-                       function(annotation) { 
-                        return function() { 
-                            _this.displayAnnotation(annotation); 
-                          
-                        } }(annotation),
-                onEnd: 
-                       function() { _this.clearWidget.call(_this); }
-                };
-    this._Popcorn = this._Popcorn.code(conf);                                             
-  }
-
-};
-
-IriSP.AnnotationsWidget.prototype.hide = function() {
-  if (this._hidden == false) {
-    this.selector.hide();
-    this._hidden = true;
-  }
-};
-
-IriSP.AnnotationsWidget.prototype.show = function() {
-  if (this._hidden == true) {
-    this.selector.show();
-    this._hidden = false;
-  }
-};IriSP.ArrowWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-
-  this._oldAnnotation = null;
-  this._blockArrow = false;
-};
-
-
-IriSP.ArrowWidget.prototype = new IriSP.Widget();
-
-IriSP.ArrowWidget.prototype.clear = function() {
-
-};
-
-IriSP.ArrowWidget.prototype.clearWidget = function() {
-};
-
-IriSP.ArrowWidget.prototype.draw = function() {
-  var templ = Mustache.to_html(IriSP.arrowWidget_template, {});
-  this.selector.append(templ);
-  this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.timeUpdateHandler));
-  this._Popcorn.listen("IriSP.ArrowWidget.blockArrow", IriSP.wrap(this, this.blockArrow));
-  this._Popcorn.listen("IriSP.ArrowWidget.releaseArrow", IriSP.wrap(this, this.releaseArrow));
-  
-};
-
-IriSP.ArrowWidget.prototype.timeUpdateHandler = function(percents) {
-  if (this._blockArrow)
-    return;
-  
-  var currentTime = this._Popcorn.currentTime();
-  var currentAnnotation = this._serializer.currentChapitre(currentTime);
-  if (IriSP.null_or_undefined(currentAnnotation)) {
-    var c_annots = this._serializer.currentAnnotation(currentTime)
-    if (c_annots.length != 0)
-      var currentAnnotation = c_annots[0]; // FIXME : use the others ?
-    else
-      return;
-  }
-  
-  /* move the arrow only if the current annotation changes */
-  if (currentAnnotation != this._oldAnnotation) {
-    var begin = (+ currentAnnotation.begin) / 1000;
-    var end = (+ currentAnnotation.end) / 1000;
-
-    var duration = this.getDuration() / 1000;
-    var middle_time = (begin + end) / 2;
-    var percents = middle_time / duration;
-
-    // we need to apply a fix because the arrow has a certain length
-    // it's half the length of the arrow (27 / 2). We need to convert
-    // it in percents though.
-    var totalWidth = this.selector.width();    
-    var pixels = percents * totalWidth;
-    var correction = (27 / 2);
-    var corrected_pixels = pixels - correction;
-    
-    /* make sure that the arrow is aligned with the pattern
-       of the widget under it */
-    if (corrected_pixels % 3 != 0)
-      corrected_pixels -= (corrected_pixels % 3 - 1);
-    
-    /* don't move out of the screen */
-    if (corrected_pixels <= 0)
-      corrected_pixels = 0;
-    
-    if (corrected_pixels <= 15) {      
-      this.selector.children(".Ldt-arrowWidget").removeClass("Ldt-arrowLeftEdge Ldt-arrowCenter Ldt-arrowRightEdge")
-                                                .addClass("Ldt-arrowLeftEdge"); 
-    } else if (corrected_pixels >= totalWidth - 25) {
-           this.selector.children(".Ldt-arrowWidget").removeClass("Ldt-arrowLeftEdge Ldt-arrowCenter Ldt-arrowRightEdge")
-                                                .addClass("Ldt-arrowRightEdge"); 
-    } else {
-      this.selector.children(".Ldt-arrowWidget").removeClass("Ldt-arrowLeftEdge Ldt-arrowCenter Ldt-arrowRightEdge")
-                                                .addClass("Ldt-arrowCenter"); 
-    }
-    
-    this.selector.children(".Ldt-arrowWidget").animate({"left" : corrected_pixels + "px"});
-
-    this._oldAnnotation = currentAnnotation;
-  }
-};
-
-/** Block the arrow for instance when the user is annotating */
-IriSP.ArrowWidget.prototype.blockArrow = function() {
-  this._blockArrow = true;
-};
-
-IriSP.ArrowWidget.prototype.releaseArrow = function() {
-  this._blockArrow = false;   
-};
-/* Internationalization for this widget */
-
-IriSP.i18n.addMessages(
-    {
-        "en": {
-            "submit": "Submit",
-            "add_keywords": "Add keywords",
-            "add_polemic_keywords": "Add polemic keywords",
-            "your_name": "Your name",
-            "type_here": "Type your annotation here.",
-            "wait_while_processed": "Please wait while your request is being processed...",
-            "error_while_contacting": "An error happened while contacting the server. Your annotation has not been saved.",
-            "empty_annotation": "Your annotation is empty. Please write something before submitting.",
-            "annotation_saved": "Thank you, your annotation has been saved.",
-            "share_annotation": "Would you like to share it on social networks ?",
-            "share_on": "Share on",
-            "more_tags": "More tags"
-        },
-        "fr": {
-            "submit": "Envoyer",
-            "add_keywords": "Ajouter des mots-clés",
-            "add_polemic_keywords": "Ajouter des mots-clés polémiques",
-            "your_name": "Votre nom",
-            "type_here": "Rédigez votre annotation ici.",
-            "wait_while_processed": "Veuillez patienter pendant le traitement de votre requête...",
-            "error_while_contacting": "Une erreur s'est produite en contactant le serveur. Votre annotation n'a pas été enregistrée",
-            "empty_annotation": "Votre annotation est vide. Merci de rédiger un texte avant de l'envoyer.",
-            "annotation_saved": "Merci, votre annotation a été enregistrée.",
-            "share_annotation": "Souhaitez-vous la partager sur les réseaux sociaux ?",
-            "share_on": "Partager sur",
-            "more_tags": "Plus de mots-clés"
-        }
-    }
-);
-
-IriSP.createAnnotationWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-  this._hidden = true;
-                         
-  if (!IriSP.null_or_undefined(IriSP.user)) {
-      if (!IriSP.null_or_undefined(IriSP.user.avatar)) {
-        this.user_avatar = IriSP.user.avatar;
-      }
-      if (!IriSP.null_or_undefined(IriSP.user.name)) {
-        this.user_name = IriSP.user.name;
-      }
-  }
-  
-  /* variables to save the current position of the slicer */
-  if (this.cinecast_version) {
-    this.sliceLeft = 0;
-    this.sliceWidth = 0;
-  }
-};
-
-
-IriSP.createAnnotationWidget.prototype = new IriSP.Widget();
-
-IriSP.createAnnotationWidget.prototype.clear = function() {
-    this.selector.find(".Ldt-SaTitle").text("");
-    this.selector.find(".Ldt-SaDescription").text("");
-    this.selector.find(".Ldt-SaKeywordText").text("");
-};
-
-IriSP.createAnnotationWidget.prototype.draw = function() {
-    var _this = this;
-    if (typeof this.remote_tags == "object") {
-        IriSP.jQuery.getJSON((typeof this.remote_tags.alias == "string" ? this.remote_tags.alias : this.remote_tags.url), function(_json) {
-            _this.tags = _json.tags;
-            _this.drawCallback();
-        });
-    } else {
-        this.drawCallback();
-    }
-}
-
-IriSP.createAnnotationWidget.prototype.drawCallback = function() {
-  var _this = this;
-  
-  var annotationMarkup = IriSP.templToHTML(IriSP.createAnnotationWidget_template, 
-                                           this);
-  
-	this.selector.append(annotationMarkup);
-  
-  if (!this.cinecast_version)
-    this.selector.hide();
-  else {
-    this.showStartScreen();
-  }
-  
-  if (this.random_tags) {
-      this.selector.find(".Ldt-createAnnotation-keywords li").hide();
-      this.showMoreTags();
-      this.selector.find('.Ldt-createAnnotation-moar-keywordz').click(function() {
-          _this.showMoreTags();
-      })
-  }
-  // Add onclick event to both polemic and keywords buttons
-  
-  this.selector.find(".Ldt-createAnnotation-keyword-button, .Ldt-createAnnotation-polemic-button").click(function() {
-      _this.addKeyword(IriSP.jQuery(this).text());
-      return false;
-  });
-  
-  // js_mod is a custom event because there's no simple way to test for a js
-  // change in a textfield.                    
-  this.selector.find(".Ldt-createAnnotation-Description")
-               .bind("propertychange keyup input paste click js_mod", IriSP.wrap(this, this.handleTextChanges));
-               
-  /* the cinecast version of the player is supposed to pause when the user clicks on the button */
-
-  /* the cinecast version expects the user to comment on a defined segment.
-     As the widget is always shown, we need a way to update it's content as
-     time passes. We do this like we did with the annotationsWidget : we schedule
-     a .code start function which will be called at the right time.
-  */
-  if (this.cinecast_version) {
-    var legal_ids;
-    if (typeof(this._serializer.getChapitrage()) !== "undefined")
-      legal_id = this._serializer.getChapitrage();
-    else 
-      legal_id = this._serializer.getNonTweetIds()[0];
-    
-    var annotations = this._serializer._data.annotations;
-    var i;
-  
-    for (i in annotations) {     
-      var annotation = annotations[i];
-      if (typeof(annotation.meta) !== "undefined" && typeof(annotation.meta["id-ref"]) !== "undefined"
-            && legal_id !== annotation.meta["id-ref"]) {
-          continue;
-      }
-      
-      code = {start: annotation.begin / 1000, end: annotation.end / 1000,
-              onStart: function(annotation) { return function() {
-                      if (typeof(annotation.content) !== "undefined")
-                        _this.selector.find(".Ldt-createAnnotation-Title").html(annotation.content.title);
-
-                      _this._currentAnnotation = annotation;
-                      var beginTime = IriSP.msToTime(annotation.begin);
-                      var endTime = IriSP.msToTime(annotation.end);
-                      var timeTemplate = IriSP.templToHTML("- ({{begin}} - {{ end }})", {begin: beginTime, end: endTime });
-                      _this.selector.find(".Ldt-createAnnotation-TimeFrame").html(timeTemplate);
-              } }(annotation)
-            };
-      
-      this._Popcorn.code(code);
-    }
-  }
-  
-  this.selector.find(".Ldt-createAnnotation-submitButton").click(IriSP.wrap(this, this.handleButtonClick));
-  
-  if (!this.cinecast_version) {
-    this._Popcorn.listen("IriSP.PlayerWidget.AnnotateButton.clicked", 
-                          IriSP.wrap(this, this.handleAnnotateSignal));
-    
-    // handle clicks on the cancel button too.
-    this.selector.find(".Ldt-createAnnotation-Minimize").click(IriSP.wrap(this, 
-      function() {
-        // we've got to simulate the pressing of the button because there's no
-        // other way to minimize the widget and show the widgets that were hidden
-        // same time
-        this._Popcorn.trigger("IriSP.PlayerWidget.AnnotateButton.clicked");
-      }
-    ));
-  }
-};
-
-IriSP.createAnnotationWidget.prototype.showMoreTags = function() {
-    for (var j=0; j < this.random_tags; j++) {
-        var _jq = this.selector.find(".Ldt-createAnnotation-keywords li:hidden");
-        if (_jq.length > 1) {
-            IriSP.jQuery(_jq[Math.floor(_jq.length*Math.random())]).show();
-        } else {
-            _jq.show();
-            break;
-        }     
-    }
-    if (this.selector.find(".Ldt-createAnnotation-keywords li:hidden").length == 0) {
-        this.selector.find('.Ldt-createAnnotation-moar-keywordz').hide();
-    }
-}
-
-/* Handles adding keywords and polemics */
-IriSP.createAnnotationWidget.prototype.addKeyword = function(_keyword) {
-    var _field = this.selector.find(".Ldt-createAnnotation-Description"),
-        _rx = IriSP.regexpFromText(_keyword),
-        _contents = _field.val();
-    _contents = ( _rx.test(_contents)
-        ? _contents.replace(_rx,"").replace("  "," ").trim()
-        : _contents.trim() + " " + _keyword
-    );
-    _field.val(_contents.trim()).trigger("js_mod");
-}
-
-/** handles clicks on the annotate button. Works only for the non-cinecast version */
-IriSP.createAnnotationWidget.prototype.handleAnnotateSignal = function() {
-  
-  if (this._hidden == false && this._state == 'startScreen') {
-    this.selector.hide();
-    this._hidden = true;
-    
-    // free the arrow.
-    this._Popcorn.trigger("IriSP.ArrowWidget.releaseArrow");
-    this._Popcorn.trigger("IriSP.SliceWidget.hide");
-    this._Popcorn.trigger("IriSP.AnnotationsWidget.show");
-    
-  } else {
-    this._Popcorn.trigger("IriSP.AnnotationsWidget.hide");
-    this.showStartScreen();    
-    this.selector.show();
-    this._hidden = false;
-    var currentTime = this._Popcorn.currentTime();
-    
-    // block the arrow.
-    this._Popcorn.trigger("IriSP.ArrowWidget.blockArrow");
-    
-    var duration = this.getDuration();
-        
-    var currentChapter = this._serializer.currentChapitre(currentTime);
-
-    if (IriSP.null_or_undefined(currentChapter)) {      
-      var left = this.selector.width() / 2;
-      var width = this.selector.width() / 10;
-    } else {
-      var left = (currentChapter.begin / duration) * this.selector.width();
-      var width = (currentChapter.end / duration) * this.selector.width() - left;
-    }
-    
-    // slider position and length is kept in percents.
-    this.sliceLeft = (left / this.selector.width()) * 100;
-    this.sliceWidth = (width / this.selector.width()) * 100;
-    
-    this._Popcorn.trigger("IriSP.SliceWidget.position", [left, width]);
-    this._Popcorn.listen("IriSP.SliceWidget.zoneChange", IriSP.wrap(this, this.handleSliderChanges));
-    this._Popcorn.trigger("IriSP.SliceWidget.show");
-    
-    if (!IriSP.null_or_undefined(currentChapter)) {
-      this.selector.find(".Ldt-createAnnotation-Title").html(currentChapter.content.title);
-
-      this._currentcurrentChapter = currentChapter;
-      var beginTime = IriSP.msToTime(currentChapter.begin);
-      var endTime = IriSP.msToTime(currentChapter.end);
-      var timeTemplate = IriSP.templToHTML("- ({{begin}} - {{ end }})", {begin: beginTime, end: endTime });
-      this.selector.find(".Ldt-createAnnotation-TimeFrame").html(timeTemplate);
-    }
-  }
-};
-
-
-/** watch for changes in the textfield and change the buttons accordingly */
-IriSP.createAnnotationWidget.prototype.handleTextChanges = function(event) {
-  var contents = this.selector.find(".Ldt-createAnnotation-Description").val();
-  if (this.cinecast_version) {
-      this._Popcorn.pause();
-  }
-  this.selector.find(".Ldt-createAnnotation-btnblock button").each(function() {
-      var _rx = IriSP.regexpFromText(IriSP.jQuery(this).text());
-      if (_rx.test(contents)) {
-          IriSP.jQuery(this).parent().addClass("Ldt-createAnnotation-active-button");
-      } else {
-          IriSP.jQuery(this).parent().removeClass("Ldt-createAnnotation-active-button");
-      }
-  });
-  
-};
-
-IriSP.createAnnotationWidget.prototype.showStartScreen = function() {
-  this.selector.find(".Ldt-createAnnotation-screen").hide();
-  this.selector.find(".Ldt-createAnnotation-startScreen").show();
-  
-  var jqTextfield = this.selector.find(".Ldt-createAnnotation-Description"); // handle on the textfield. used for the closure
-  
-  /* test if the browser supports the placeholder attribute */
-  if (!IriSP.null_or_undefined(jqTextfield.get(0).placeholder)) {
-    jqTextfield.attr("placeholder", IriSP.i18n.getMessage('type_here')); 
-  } else {
-    jqTextfield.val(IriSP.i18n.getMessage('type_here'));
-    jqTextfield.one("click", IriSP.wrap(this, function() { jqTextfield.val(""); }));    
-  }
-  
- 
-  
-  this._state = "startScreen";
-};
-
-IriSP.createAnnotationWidget.prototype.showWaitScreen = function() {
-  this.selector.find(".Ldt-createAnnotation-screen").hide();
-  this.selector.find(".Ldt-createAnnotation-waitScreen").show();
-  this._state = "waitScreen";
-};
-
-IriSP.createAnnotationWidget.prototype.showErrorScreen = function() {
-  this.selector.find(".Ldt-createAnnotation-screen").hide();
-  this.selector.find(".Ldt-createAnnotation-errorScreen").show();
-  this._state = "errorScreen";
-  var _this = this;
-  window.setTimeout(function() { _this.showStartScreen(); }, 2000);
-};
-
-/** update show the final screen with links to share the created annotation */
-IriSP.createAnnotationWidget.prototype.showEndScreen = function(annotation) {
-  this.selector.find(".Ldt-createAnnotation-screen").hide();
-  
-  if (this.cinecast_version) {
-    this.selector.find(".Ldt-createAnnotation-Title").parent().show();      
-  }
-
-  var url = ( (typeof annotation.meta == "object" && typeof annotation.meta.url == "string" && annotation.meta.url.length)
-    ? annotation.meta.url
-    : ( document.location.href + "#id=" + annotation.id ) );
-  var twStatus = IriSP.mkTweetUrl(url);
-  var gpStatus = IriSP.mkGplusUrl(url);
-  var fbStatus = IriSP.mkFbUrl(url);
-  
-  this.selector.find(".Ldt-createAnnotation-endScreen-TweetLink").attr("href", twStatus);
-  this.selector.find(".Ldt-createAnnotation-endScreen-FbLink").attr("href", fbStatus);
-  this.selector.find(".Ldt-createAnnotation-endScreen-GplusLink").attr("href", gpStatus);
-          
-  this.selector.find(".Ldt-createAnnotation-endScreen").show();
-  this._state = "endScreen";
-};
-
-/** handle clicks on "send annotation" button */
-IriSP.createAnnotationWidget.prototype.handleButtonClick = function(event) {
-  var _this = this;
-  var textfield = this.selector.find(".Ldt-createAnnotation-Description");
-  var contents = textfield.val();
-  
-  if (contents === "") {  
-    if (this.selector.find(".Ldt-createAnnotation-errorMessage").length === 0) {
-      this.selector.find(".Ldt-createAnnotation-Container")
-                   .after(IriSP.templToHTML(IriSP.createAnnotation_errorMessage_template));
-      textfield.css("background-color", "#d93c71");      
-    } else {      
-      this.selector.find(".Ldt-createAnnotation-errorMessage").show();
-    }
-
-      textfield.one("js_mod propertychange keyup input paste", IriSP.wrap(this, function() {
-                      var contents = textfield.val();
-                      
-                      if (contents !== "") {
-                        this.selector.find(".Ldt-createAnnotation-errorMessage").hide();
-                        textfield.css("background-color", "");
-                      }
-                   }));
-  } else {
-    this.showWaitScreen();
-    
-    this.sendLdtData(contents, function(annotation) {
-                      if (_this.cinecast_version) {
-                          if (_this._Popcorn.media.paused)
-                            _this._Popcorn.play();
-                      }
-
-                      if (_this._state == "waitScreen") {
-                        _this.showEndScreen(annotation);
-                        if (_this.cinecast_version) {
-                          window.setTimeout(function() { _this.showStartScreen(); }, 5000);
-                        }
-                      }
-                      // hide the slicer widget
-                      if (!_this.cinecast_version) {                      
-                        _this._Popcorn.trigger("IriSP.SliceWidget.hide");
-                      }           
-                    });
-  }
-};
-
-IriSP.createAnnotationWidget.prototype.handleSliderChanges = function(params) {
-  this.sliceLeft = params[0];
-  this.sliceWidth = params[1];
-};
-
-IriSP.createAnnotationWidget.prototype.sendLdtData = function(contents, callback) {
-  var _this = this;
-  var apiJson = {
-      format : "http://advene.org/ns/cinelab/",
-      annotations : [
-        {}
-        ],
-        meta: {}};
-  var annotation = apiJson.annotations[0];
-  
-  annotation.media = this.currentMedia()["id"];
-  
-  if (this.cinecast_version) {   
-      annotation.begin = Math.round(this._Popcorn.currentTime() * 1000);
-      annotation.end = annotation.begin;      
-  } else {
-    var duration = this.getDuration();    
-    annotation.begin = +((duration * (this.sliceLeft / 100)).toFixed(0));
-    annotation.end = +((duration * ((this.sliceWidth + this.sliceLeft) / 100)).toFixed(0));
-  }
-
-  // boundary checks
-  annotation.begin = Math.max(0, annotation.begin);
-  annotation.end = Math.min(this.getDuration(), annotation.end);
-  
-  annotation.type = ( this.cinecast_version ? "cinecast:UserAnnotation" : ( this._serializer.getContributions() || "" ));
-  if (typeof(annotation.type) === "undefined")
-    annotation.type = "";
-  
-  annotation.type_title = "Contributions";
-  annotation.content = {};
-  annotation.content.data = contents;
-  if (this.cinecast_version) {
-      var _extract = IriSP.underscore(this._serializer._data.annotations)
-          .filter(function(_a) {
-              return (_a.begin <= annotation.begin && _a.end >= annotation.begin && _a.type == "cinecast:MovieExtract");
-          })
-      if (_extract.length) {
-          annotation.extract = _extract[0].id;
-      }
-  }
-  
-  var meta = apiJson.meta;
-  
-  
-  var _username = this.selector.find(".Ldt-createAnnotation-userName").val();
-  meta.creator = (
-      (_username && _username.length)
-      ? _username
-      : (
-          (!IriSP.null_or_undefined(IriSP.user) && !IriSP.null_or_undefined(IriSP.user.name))
-          ? IriSP.user.name
-          : "Anonymous user"
-      )
-  );
-  
-  meta.created = Date().toString();
-  
-  var _tags = [];
-  IriSP._(this.tags).each(function(_v) {
-      var _rx = IriSP.regexpFromText(_v.meta.description);
-        if (_rx.test(contents)) {
-            _tags.push(_v.id);
-        }
-  });
-
-  if (typeof this.remote_tags == "object") {
-     _tags = IriSP._(_tags).map(function(_t) {
-         return _this.remote_tags.id + ':' + _t
-     });
-    if (typeof apiJson.imports == "undefined") {
-       apiJson.imports = [];
-    }
-    apiJson.imports.push({
-        "id" : this.remote_tags.id,
-        "url" : this.remote_tags.url
-    })
-  }
-  annotation.tags = IriSP.underscore.uniq(_tags);
-  
-  var jsonString = JSON.stringify(apiJson);
-  var project_id = this._serializer._data.meta.id;
-  
-  //TODO: extract magic url
-  var url = Mustache.to_html(this.api_endpoint_template,
-                              {id: project_id});
-                          
-  IriSP.jQuery.ajax({
-      url: url,
-      type: this.api_method,
-      contentType: 'application/json',
-      data: jsonString,               
-      //dataType: 'json',
-      success: IriSP.wrap(this, function(json, textStatus, XMLHttpRequest) {                   
-                    /* add the annotation to the annotation and tell the world */
-                    var annotation = json.annotations[0];
-                    
-                    if (!this.cinecast_version) {
-                    /* if the media doesn't have a contributions line, we need to add one */
-                        if (typeof(this._serializer.getContributions()) === "undefined") {
-                          /* set up a basic view */
-                          var tmp_view = {"dc:contributor": "perso", "dc:creator": "perso", "dc:title": "Contributions",
-                                          "id": json.annotations[0].type}
-    
-                          
-                            IriSP.get_aliased(this._serializer._data, ["annotation_types", "annotation-types"]).push(tmp_view);
-                        }
-                        
-                        delete annotation.tags;
-                        annotation.content.description = annotation.content.data;
-                        annotation.content.title = "";
-                        delete annotation.content.data;
-                        annotation.id = json.annotations[0].id;
-    
-                        annotation.meta = meta;
-                        annotation.meta["id-ref"] = json.annotations[0]["type"];
-                    } else {
-                        annotation.type = "cinecast:UserAnnotation";
-                    }
-                    annotation.is_new = true;
-                    // everything is shared so there's no need to propagate the change
-                    _this._serializer._data.annotations.push(annotation);
-                    _this._Popcorn.trigger("IriSP.createAnnotationWidget.addedAnnotation", annotation);
-                    this.selector.find(".Ldt-createAnnotation-Description").val("").trigger("js_mod");
-                    callback(annotation);
-      }), 
-      error: 
-              function(jqXHR, textStatus, errorThrown) { 
-                            console.log("an error occured while contacting " 
-                            + url + " and sending " + jsonString + textStatus ); 
-                            _this.showErrorScreen(); } });
-};IriSP.HelloWorldWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-}
-
-IriSP.HelloWorldWidget.prototype = new IriSP.Widget();
-
-IriSP.HelloWorldWidget.prototype.draw = function() {
-    this.selector
-        .html('Hello, world')
-        .css({
-            "text-align" : "center",
-            "padding": "10px 0",
-            "font-size" : "14px"
-        });
-        
-    console.log(this);
-}
-/* Internationalization for this widget */
-
-IriSP.i18n.addMessages(
-    {
-        "en": {
-            "play_pause": "Play/Pause",
-            "mute_unmute": "Mute/Unmute",
-            "play": "Play",
-            "pause": "Pause",
-            "mute": "Mute",
-            "unmute": "Unmute",
-            "annotate": "Annotate",
-            "search": "Search",
-            "elapsed_time": "Elapsed time",
-            "total_time": "Total time",
-            "volume": "Volume",
-            "volume_control": "Volume control"
-        },
-        "fr": {
-            "play_pause": "Lecture/Pause",
-            "mute_unmute": "Couper/Activer le son",
-            "play": "Lecture",
-            "pause": "Pause",
-            "mute": "Couper le son",
-            "unmute": "Activer le son",
-            "annotate": "Annoter",
-            "search": "Rechercher",
-            "elapsed_time": "Durée écoulée",
-            "total_time": "Durée totale",
-            "volume": "Niveau sonore",
-            "volume_control": "Réglage du niveau sonore"
-        }
-    }
-);
-
-
-IriSP.PlayerWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-  
-  this._searchBlockOpen = false;
-  this._searchLastValue = "";
-};
-
-IriSP.PlayerWidget.prototype = new IriSP.Widget();
-
-IriSP.PlayerWidget.prototype.draw = function() {
-  var self = this;
-  var width = this.width;
-	var height = this.height;
-	var heightS = this.height-20;
-	  
-	var playerTempl = IriSP.templToHTML(IriSP.player_template, this._config);
-  this.selector.append(playerTempl);		
-	
-  this.selector.children(".Ldt-controler").show();
-    
-  // handle clicks by the user on the video.
-  this._Popcorn.listen("play", IriSP.wrap(this, this.playButtonUpdater));
-  this._Popcorn.listen("pause", IriSP.wrap(this, this.playButtonUpdater));
-  
-  this._Popcorn.listen("volumechange", IriSP.wrap(this, this.volumeUpdater));
-
-  this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.timeDisplayUpdater));  
-  // update the time display for the first time.
-  this._Popcorn.listen("loadedmetadata", IriSP.wrap(this, this.timeDisplayUpdater));
-  
-  this._Popcorn.listen("IriSP.search.matchFound", IriSP.wrap(this, this.searchMatch));
-  this._Popcorn.listen("IriSP.search.noMatchFound", IriSP.wrap(this, this.searchNoMatch));
-  this._Popcorn.listen("IriSP.search.triggeredSearch", IriSP.wrap(this, this.triggeredSearch));
-  
-  
-  this.selector.find(".Ldt-CtrlPlay").click(function() { self.playHandler.call(self); });
-  this.selector.find(".Ldt-CtrlAnnotate").click(function() 
-                                            { self._Popcorn.trigger("IriSP.PlayerWidget.AnnotateButton.clicked"); });
-  this.selector.find(".Ldt-CtrlSearch").click(function() { self.searchButtonHandler.call(self); });
-  
-	var _volctrl = this.selector.find(".Ldt-Ctrl-Volume-Control");
-    this.selector.find('.Ldt-CtrlSound')
-        .click(function() { self.muteHandler.call(self); } )
-        .mouseover(function() {
-            _volctrl.show();
-        })
-        .mouseout(function() {
-            _volctrl.hide();
-        });
-    _volctrl.mouseover(function() {
-        _volctrl.show();
-    }).mouseout(function() {
-        _volctrl.hide();
-    });
-  
-  /*
-  var searchButtonPos = this.selector.find(".Ldt-CtrlSearch").position();
-  var searchBox = Mustache.to_html(IriSP.search_template, {margin_left : searchButtonPos.left + "px"});
-  this.selector.find(".Ldt-CtrlSearch").after(searchBox);
-  */
-  
-  // trigger an IriSP.PlayerWidget.MouseOver to the widgets that are interested (i.e : sliderWidget)
-  this.selector.hover(function() { self._Popcorn.trigger("IriSP.PlayerWidget.MouseOver"); }, 
-                      function() { self._Popcorn.trigger("IriSP.PlayerWidget.MouseOut"); });
-  this.selector.find(".Ldt-Ctrl-Volume-Cursor").draggable({
-      axis: "x",
-      drag: function(event, ui) {
-          var _vol = Math.max(0, Math.min( 1, ui.position.left / (ui.helper.parent().width() - ui.helper.outerWidth())));
-          ui.helper.attr("title",IriSP.i18n.getMessage('volume')+': ' + Math.floor(100*_vol) + '%');
-          self._Popcorn.volume(_vol);
-      },
-      containment: "parent"
-  });
- 
- setTimeout(function() {
-     self.volumeUpdater();
- }, 1000); /* some player - jwplayer notable - save the state of the mute button between sessions */
-};
-
-/* Update the elasped time div */
-IriSP.PlayerWidget.prototype.timeDisplayUpdater = function() {
-  
-  if (this._previousSecond === undefined) {
-    this._previousSecond = this._Popcorn.roundTime();
-  }
-  else {
-    /* we're still in the same second, so it's not necessary to update time */
-    if (this._Popcorn.roundTime() == this._previousSecond)
-      return;
-      
-  }
-  
-  // we get it at each call because it may change.
-  var duration = this.getDuration() / 1000; 
-  var totalTime = IriSP.secondsToTime(duration);
-  var elapsedTime = IriSP.secondsToTime(this._Popcorn.currentTime());
-  
-  this.selector.find(".Ldt-ElapsedTime").html(elapsedTime.toString());
-  this.selector.find(".Ldt-TotalTime").html(totalTime.toString());
-  this._previousSecond = this._Popcorn.roundTime();
-};
-
-/* update the icon of the button - separate function from playHandler
-   because in some cases (for instance, when the user directly clicks on
-   the jwplayer window) we have to change the icon without playing/pausing
-*/
-IriSP.PlayerWidget.prototype.playButtonUpdater = function() {
-  var status = this._Popcorn.media.paused;
-  
-  if ( status == true ){
-    /* the background sprite is changed by adding/removing the correct classes */
-    this.selector.find(".Ldt-CtrlPlay").attr("title", IriSP.i18n.getMessage('play'));
-    this.selector.find(".Ldt-CtrlPlay").removeClass("Ldt-CtrlPlay-PauseState").addClass("Ldt-CtrlPlay-PlayState");
-  } else {
-    this.selector.find(".Ldt-CtrlPlay").attr("title", IriSP.i18n.getMessage('pause'));
-    this.selector.find(".Ldt-CtrlPlay").removeClass("Ldt-CtrlPlay-PlayState").addClass("Ldt-CtrlPlay-PauseState");
-  }  
-
-  return;
-};
-
-
-IriSP.PlayerWidget.prototype.playHandler = function() {
-  var status = this._Popcorn.media.paused;
-  
-  if ( status == true ){        
-    this._Popcorn.play();   
-  } else {
-    this._Popcorn.pause();
-  }  
-};
-
-IriSP.PlayerWidget.prototype.muteHandler = function() {
-  this._Popcorn.mute(!this._Popcorn.muted());
-};
-
-IriSP.PlayerWidget.prototype.volumeUpdater = function() {
-    var _muted = this._Popcorn.muted(),
-        _vol = this._Popcorn.volume();
-    if (_vol === false) {
-        _vol = .5;
-    }
-    var _soundCtl = this.selector.find(".Ldt-CtrlSound");
-    _soundCtl.removeClass("Ldt-CtrlSound-Mute Ldt-CtrlSound-Half Ldt-CtrlSound-Full");
-    if (_muted) {        
-        _soundCtl.attr("title", IriSP.i18n.getMessage('unmute'))
-            .addClass("Ldt-CtrlSound-Mute");    
-    } else {
-        _soundCtl.attr("title", IriSP.i18n.getMessage('mute'))
-            .addClass(_vol < .5 ? "Ldt-CtrlSound-Half" : "Ldt-CtrlSound-Full" )
-    }
-    var _cursor = this.selector.find(".Ldt-Ctrl-Volume-Cursor");
-    _cursor.css({
-        "left": ( _muted ? 0 : Math.floor(_vol * (_cursor.parent().width() - _cursor.outerWidth())) ) + "px"
-    })
-};
-
-IriSP.PlayerWidget.prototype.showSearchBlock = function() {
-  var self = this;
-  
-  if (this._searchBlockOpen == false) {
-    this.selector.find(".LdtSearch").show("blind", { direction: "horizontal"}, 100);
-    this.selector.find(".LdtSearchInput").css('background-color','#fff');
-   
-    this._searchBlockOpen = true;           
-    this.selector.find(".LdtSearchInput").bind('keyup', null, function() { self.searchHandler.call(self); } );
-    this.selector.find(".LdtSearchInput").focus();
-    
-    // we need this variable because some widget can find a match in
-    // their data while at the same time other's don't. As we want the
-    // search field to become green when there's a match, we need a 
-    // variable to remember that we had one.
-    this._positiveMatch = false;
-
-    // tell the world the field is open
-    this._Popcorn.trigger("IriSP.search.open");     
-	}
-};
-
-IriSP.PlayerWidget.prototype.hideSearchBlock = function() {
- if (this._searchBlockOpen == true) {
-    this._searchLastValue = this.selector.find(".LdtSearchInput").attr('value');
-    this.selector.find(".LdtSearchInput").attr('value','');
-    this.selector.find(".LdtSearch").hide("blind", { direction: "horizontal"}, 75);
-    
-    // unbind the watcher event.
-    this.selector.find(".LdtSearchInput").unbind('keypress set');
-    this._searchBlockOpen = false;
-
-    this._positiveMatch = false;
-    
-    this._Popcorn.trigger("IriSP.search.closed");
-	}
-};
-
-/** react to clicks on the search button */
-IriSP.PlayerWidget.prototype.searchButtonHandler = function() {
-  var self = this;
-
-  /* show the search field if it is not shown */
-  if ( this._searchBlockOpen == false ) {
-    this.showSearchBlock();
-    this.selector.find(".LdtSearchInput").attr('value', this._searchLastValue);      
-    this._Popcorn.trigger("IriSP.search", this._searchLastValue); // trigger the search to make it more natural.
-	} else {
-    this.hideSearchBlock();
-  }
-};
-
-/** this handler is called whenever the content of the search
-   field changes */
-IriSP.PlayerWidget.prototype.searchHandler = function() {
-  this._searchLastValue = this.selector.find(".LdtSearchInput").attr('value');
-  this._positiveMatch = false;
-  
-  // do nothing if the search field is empty, instead of highlighting everything.
-  if (this._searchLastValue == "") {
-    this._Popcorn.trigger("IriSP.search.cleared");
-    this.selector.find(".LdtSearchInput").css('background-color','');
-  } else {
-    this._Popcorn.trigger("IriSP.search", this._searchLastValue);
-  }
-};
-
-/**
-  handler for the IriSP.search.found message, which is sent by some views when they
-  highlight a match.
-*/
-IriSP.PlayerWidget.prototype.searchMatch = function() {
-  this._positiveMatch = true;
-  this.selector.find(".LdtSearchInput").css('background-color','#e1ffe1');
-};
-
-/** the same, except that no value could be found */
-IriSP.PlayerWidget.prototype.searchNoMatch = function() {
-  if (this._positiveMatch !== true)
-    this.selector.find(".LdtSearchInput").css('background-color', "#d62e3a");
-};
-
-/** react to an IriSP.Player.triggeredSearch - that is, when
-    a widget ask the PlayerWidget to do a search on his behalf */
-IriSP.PlayerWidget.prototype.triggeredSearch = function(searchString) {
-  this.showSearchBlock();
-  this.selector.find(".LdtSearchInput").attr('value', searchString);      
-  this._Popcorn.trigger("IriSP.search", searchString); // trigger the search to make it more natural.
-};
-
-
-/* 
- *   
- *  Copyright 2010 Institut de recherche et d'innovation 
- *  contributor(s) : Samuel Huron 
- *   
- *  contact@iri.centrepompidou.fr
- *  http://www.iri.centrepompidou.fr 
- *   
- *  This software is a computer program whose purpose is to show and add annotations on a video .
- *  This software is governed by the CeCILL-C license under French law and
- *  abiding by the rules of distribution of free software. You can  use, 
- *  modify and/ or redistribute the software under the terms of the CeCILL-C
- *  license as circulated by CEA, CNRS and INRIA at the following URL
- *  "http://www.cecill.info". 
- *  
- *  The fact that you are presently reading this means that you have had
- *  knowledge of the CeCILL-C license and that you accept its terms.
-*/
-// CHART TIMELINE / VERSION PROTOTYPE  ::
-
-/** the polemic widget */
-IriSP.PolemicWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
- 
-  this.userPol    = new Array();
-  this.userNoPol  = new Array();
-  this.userst      = new Array();
-  this.numberOfTweet = 0;
-  this.Users;
-  this.TweetPolemic;
-  this.yMax        = this.height; 
-  this.PaperSlider;
-  this.heightOfChart;
-  this.tweets  = new Array();
-  this.svgElements = {};
-  
-  this.oldSearchMatches = [];
-};
-
-IriSP.PolemicWidget.prototype = new IriSP.Widget();
-  
-IriSP.PolemicWidget.prototype.draw = function() {
-  
-    // variable 
-    // yMax
-    
-    var self = this;
-    var yCoef        = 2;             // coef for height of 1 tweet 
-    var frameSize     = 5;             // frame size 
-    var margin         = 1;            // marge between frame
-    var lineSize      = this.width;        // timeline pixel width 
-    var nbrframes     = lineSize/frameSize;     // frame numbers
-    var numberOfTweet   = 0;            // number of tweet overide later 
-    var duration      = this.getDuration();      // timescale width 
-    var frameLength   = lineSize / frameSize;    // frame timescale  
-    var timeline;
-    var colors  = new Array("","#1D973D","#036AAE","#CE0A15","#C5A62D","#585858");
-    
-    // array 
-    //var tweets  = new Array();
-    var element = new Array();
-    var cluster = new Array();
-    var frames  = new Array(frameLength);
-    var slices  = new Array();
-    
-    
-    // Classes =======================================================================
-    var Frames = function(){
-      
-      var Myclusters;
-      var x;
-      var y;
-      var width;
-      var height;
-    };
-    Frames = function(json){
-      // make my clusters
-      // ou Frame vide 
-    };
-    Frames.prototype.draw = function(){
-    };
-    Frames.prototype.zoom = function(){
-    };
-    Frames.prototype.inside = function(){
-    };
-    var Clusters = function(){
-      var Object;
-      var yDist;
-      var x;
-      var y;
-      var width;
-      var height;
-    };
-    Clusters = function(json){
-      // make my object
-    };
-    var Tweet = function(){
-    };
-    // Classes =======================================================================
-
-    // Refactoring (parametere) ************************************************************
-    // color translastion
-    var qTweet_0  =0;
-    var qTweet_Q  =0;
-    var qTweet_REF=0;
-    var qTweet_OK =0;
-    var qTweet_KO =0;
-    function colorTranslation(value){
-      if(value == "Q"){
-        qTweet_Q+=1;
-        return 2;
-      }else if(value =="REF"){
-        qTweet_REF+=1;
-        return 4;
-      }else if(value =="OK"){
-        qTweet_OK+=1;
-        return 1;
-      }else if(value =="KO"){
-        qTweet_KO+=1;
-        return 3;
-      }else if(value ==""){
-        qTweet_0+=1;
-        return 5;
-      }
-    }
-    
-
-      this._serializer.sync(function(data) { loaded_callback.call(self, data); return; });
-      
-      function loaded_callback (json) {
-      var view_type = this._serializer.getTweets();
-
-      
-      if (typeof(view_type) === "undefined") {
-        var view_type = this._serializer.getTweetIds()[0];
-        if (typeof(view_type) === "undefined") {
-          // default to guessing if nothing else works.
-          var view = json.views[0];
-          
-          if(typeof(view.annotation_types) !== "undefined") {
-            /* we need to be backward compatible with the old files which used to
-               feature only two lines : Chapitrage and Tweets. We've added a
-               "Contributions" line so we need to discriminate against that */
-            if (view.annotation_types.length === 2 && typeof(this._serializer.getContributions()) === "undefined") {
-              var view_type = view.annotation_types[1];
-            } else {
-              console.log("PolemicWidget: invalid file - minimizing");
-              return;
-            }
-          }      
-        }
-      }
-      
-      // Make and define the Raphael area
-      this.paper = Raphael(document.getElementById(this._id), this._config.width, this._config.height);
-      
-      // event handlers
-      this._Popcorn.listen("IriSP.search", IriSP.wrap(this, function(searchString) { this.searchHandler(searchString); }));
-      this._Popcorn.listen("IriSP.search.closed", IriSP.wrap(this, this.searchFieldClosedHandler));
-      this._Popcorn.listen("IriSP.search.cleared", IriSP.wrap(this, this.searchFieldClearedHandler));
-      this.selector.mouseleave(IriSP.wrap(this, function() { self.TooltipWidget.hide.call(self.TooltipWidget); }));
-      this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.sliderUpdater));
-      this._Popcorn.listen("IriSP.Mediafragment.showAnnotation", IriSP.wrap(this, this.showAnnotation));
-      
-      for(var i = 0; i < json.annotations.length; i++) {
-        var item = json.annotations[i];        
-        var MyTime  = Math.floor(item.begin/duration*lineSize);
-        var Myframe = Math.floor(MyTime/lineSize*frameLength);
-
-        if (typeof(item.meta) !== "undefined" 
-          && typeof(item.meta["id-ref"]) !== "undefined"
-          && item.meta["id-ref"] === view_type) {
-            
-            var MyTJson = {},
-                _source = IriSP.get_aliased(item.meta, ['dc:source', 'source']);
-            if (_source !== null) {
-              var MyTJson = JSON.parse(_source['content']);
-            }
-            
-            if (item.content['polemics'] != undefined 
-            && item.content['polemics'][0] != null) {
-            
-              // a tweet can have many polemics at the same time.
-              for(var j=0; j<item.content['polemics'].length; j++){
-                  
-                  this.tweets[numberOfTweet] = {
-                        id:i,
-                        qualification:colorTranslation(item.content['polemics'][j]),
-                        yIndicator:MyTime,
-                        yframe:Myframe,
-                        title:item.content['title'],
-                        timeframe:item.begin,
-                        userId: MyTJson.id,
-                        userScreenName: MyTJson.screen_name,
-                        tsource:MyTJson,
-                        cinecast_id: item.id
-                        };
-                  numberOfTweet+=1;
-                  
-              }
-          }
-          else {
-            this.tweets[numberOfTweet] = {
-                  id:i,
-                  qualification:colorTranslation(""),
-                  yIndicator:MyTime,
-                  yframe:Myframe,
-                  title:item.content['title'],
-                  timeframe:item.begin,
-                  userId: MyTJson.id,
-                  userScreenName: MyTJson.screen_name,
-                  tsource:MyTJson,
-                  cinecast_id: item.id
-            };
-            numberOfTweet+=1;
-          }
-          
-        } 
-      };  
-      
-       DrawTweets.call (this); // FIXME: ugly.
-       
-      };      
-
-    // tweet Drawing (in raphael) 
-    function DrawTweets (){
-    // GROUPES TWEET ============================================
-    // Count nbr of cluster and tweet in a frame an save int in "frames"
-      numberOfTweet = this.tweets.length;
-      for(var i=0; i<nbrframes; i++) {  
-        for(var j=0; j<numberOfTweet; j++) {  
-        
-          if (i==this.tweets[j].yframe){
-            
-            var k = this.tweets[j].qualification;
-            
-            // make array for frame cluster
-            if(frames[i]==undefined){
-              frames[i] = {id:i,
-                     qualifVol:new Array(),
-                     mytweetsID:new Array()
-                    };
-            }
-            // add my tweet to frame
-            frames[i].mytweetsID.push(this.tweets[j]);
-            
-            // count opinion by frame
-            if( frames[i].qualifVol[k] == undefined){
-              frames[i].qualifVol[k] = 1;
-            }else{
-              frames[i].qualifVol[k] += 1;
-            }
-            
-          }
-        }
-      }
-    
-    // GROUPES TWEET ============================================    
-    // max of tweet by Frame 
-      var max = 0; 
-      for(var i = 0; i < nbrframes; i++) {
-        var moy  = 0;
-        for (var j = 0; j < 6; j++) {    
-          if (frames[i] != undefined) {
-            if (frames[i].qualifVol[j] != undefined) {
-              moy += frames[i].qualifVol[j];
-            }
-          }
-        }
-        
-        if (moy > max) {
-          max = moy;
-        }
-      }
-    
-      var tweetDrawed = new Array();
-      var TweetHeight = 5;
-      var newHeight = TweetHeight * max + 10;
-
-      
-      if (newHeight > this.height) {
-        this.paper.setSize(this.width, newHeight);
-        this.height = newHeight;
-        console.log("resizeing");
-      }
-      
-  
-      // DRAW  TWEETS ============================================
-      for(var i = 0; i < nbrframes; i++) {
-        var addEheight = 5;
-        if (frames[i] != undefined){                
-          // by type 
-          
-          for (var j = 6; j > -1; j--) {
-            if (frames[i].qualifVol[j] != undefined) {
-              // show tweet by type 
-              for (var k = 0; k < frames[i].mytweetsID.length; k++) {
-              
-                if (frames[i].mytweetsID[k].qualification == j) {                
-                  var x = i * frameSize;
-                  var y = this.height - addEheight;
-                  
-                  if (this.yMax > y) {
-                    this.yMax = y;
-                  }
-                  
-                  /* some tweets seem to be duplicated - so we make a check before
-                     creating a new rect */
-                  if (this.svgElements.hasOwnProperty(frames[i].mytweetsID[k].cinecast_id))
-                    continue;
-                  
-                  var e = this.paper.rect(x, y, frameSize - margin, TweetHeight /* height */)
-                                    .attr({stroke:"#00","stroke-width":0.1,  fill: colors[j]});  
-                  
-                  addEheight += TweetHeight;
-                  
-                  /* stick a lot of things into e because that's the easiest way
-                     to do it */
-                  e.color = colors[j];
-                  e.time = frames[i].mytweetsID[k].timeframe;
-                  e.title = frames[i].mytweetsID[k].title;
-                  e.id = frames[i].mytweetsID[k].cinecast_id;
-                  this.svgElements[e.id] = e;
-                  
-                  IriSP.jQuery(e.node).mouseenter(function(element) { return function (_e) {                    
-                        self.TooltipWidget.show.call(self.TooltipWidget, element.title, element.attr("fill"), element.attrs.x + element.attrs.width / 2, element.attrs.y - 2);
-                        element.displayed = true;
-                        self._Popcorn.trigger("IriSP.TraceWidget.MouseEvents", {
-                            "widget" : "StackGraphWidget",
-                            "type": "mousemove",
-                            "x": _e.pageX,
-                            "y": _e.pageY,
-                            "annotation_id": element.id
-                        });
-                  }}(e)).mousedown(function(element) { return function () {                    
-                    self._Popcorn.currentTime(element.time/1000);
-                    self._Popcorn.trigger("IriSP.PolemicTweet.click", element.id); 
-                    }
-                  }(e));                  
-                  
-                  IriSP.jQuery(e.node).attr('id', 't' + k + '');
-                  IriSP.jQuery(e.node).attr('title', frames[i].mytweetsID[k].title);
-                  IriSP.jQuery(e.node).attr('begin',  frames[i].mytweetsID[k].timeframe);                  
-                }
-              }
-            }
-          }
-        }
-
-      }    
-      // DRAW UI :: resize border and bgd      
-      this.paperBackground = this.paper.rect(0, 0, this.width, this.height).attr({fill:"#F8F8F8","stroke-width":0.1,opacity: 1});  
-
-      // outer borders
-      this.outerBorders   = [];
-      this.outerBorders.push(this.paper.rect(0, this.height - 1, this.width, 1).attr({fill:"#ababab",stroke: "none",opacity: 1}));  
-      this.outerBorders.push(this.paper.rect(0, 0, this.width, 1).attr({fill:"#ababab",stroke: "none",opacity: 1}));  
-
-      // inner borders
-      this.innerBorders   = [];
-      this.innerBorders.push(this.paper.rect(1, this.height - 2, this.width, 1).attr({fill:"#efefef",stroke: "none",opacity: 1}));  
-      this.innerBorders.push(this.paper.rect(1, 1, this.width, 1).attr({fill:"#efefef",stroke: "none",opacity: 1}));  
-      this.innerBorders.push(this.paper.rect(1, 1, 1, this.height - 2).attr({fill:"#d0d1d1",stroke: "none",opacity: 0.8}));  
-      this.innerBorders.push(this.paper.rect(this.width - 2, 1, 1, this.height - 2).attr({fill:"#efefef",stroke: "none",opacity: 1}));  
-
-
-
-      this.paperSlider   = this.paper.rect(0, 0, 0, this.height).attr({fill:"#D4D5D5", stroke: "none", opacity: 1});
-      
-      // the small white line displayed over the slider.
-      this.sliderTip = this.paper.rect(0, 0, 1, this.height).attr({fill:"#fc00ff", stroke: "none", opacity: 1});
-      // decalage 
-      // tweetSelection = this.paper.rect(-100,-100,5,5).attr({fill:"#fff",stroke: "none",opacity: 1});  
-      
-      
-      this.paperSlider.toBack();
-      this.paperBackground.toBack();
-      this.sliderTip.toFront();
-    }
-    
-
-}
-
-/** update the positionMarker as time passes */
-IriSP.PolemicWidget.prototype.sliderUpdater = function() {
-
-    var time = +this._Popcorn.currentTime();
-    var duration = this.getDuration();
-    
-    this.paperSlider.attr("width", time * (this.width / (duration / 1000)));
-        
-    this.sliderTip.attr("x", time * (this.width / (duration / 1000)));
-};
-
-/** reacts to IriSP.search events */    
-IriSP.PolemicWidget.prototype.searchHandler = function(searchString) {
-  if (searchString == "")
-    return;
-
-  var matches = this._serializer.searchTweetsOccurences(searchString);
-
-  if (IriSP.countProperties(matches) > 0) {
-    this._Popcorn.trigger("IriSP.search.matchFound");
-  } else {
-    this._Popcorn.trigger("IriSP.search.noMatchFound");
-  }
-
-  
-  // decrease the opacity of the other elements.
-  for (var id in this.svgElements) {
-    var e = this.svgElements[id];
-    e.attr({fill: e.color, opacity: 0.4});   
-  }
-  
-
-  for (var id in matches) {    
-    if (this.svgElements.hasOwnProperty(id)) {
-      var e = this.svgElements[id];
-      this.svgElements[id].attr({fill: "#fc00ff", opacity: 1});
-    }
-  }
-
-  this.oldSearchMatches = matches;
-};
-
-/** reacts to IriSP.search.cleared messages */
-IriSP.PolemicWidget.prototype.searchFieldClearedHandler = function() {
-  for (var id in this.svgElements) {
-    var e = this.svgElements[id];
-    e.attr({fill: e.color, opacity: 1});
-  }
-};
-
-/** reacts to IriSP.search.closed messages by clearing the highlighted elements */
-IriSP.PolemicWidget.prototype.searchFieldClosedHandler = function() {
-  for (var id in this.svgElements) {
-    var e = this.svgElements[id];
-    e.attr({fill: e.color, opacity: 1});
-  }
- 
-};
-   
-IriSP.PolemicWidget.prototype.showAnnotation = function(id) {
-  if (this.svgElements.hasOwnProperty(id)) {
-    var e = this.svgElements[id];
-    this.TooltipWidget.show(e.title, e.attr("fill"), e.x - 103, e.y - 160);
-  }
-};   
-IriSP.SegmentsWidget = function(Popcorn, config, Serializer) {
-
-  var self = this;
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-  this.oldSearchMatches = [];
-
-  // event handlers
-  this._Popcorn.listen("IriSP.search", function(searchString) { self.searchHandler.call(self, searchString); });
-  this._Popcorn.listen("IriSP.search.closed", function() { self.searchFieldClosedHandler.call(self); });
-  this._Popcorn.listen("IriSP.search.cleared", function() { self.searchFieldClearedHandler.call(self); });
-  
-  this.defaultColors = ["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"]
-};
-
-IriSP.SegmentsWidget.prototype = new IriSP.Widget();
-
-IriSP.SegmentsWidget.prototype.draw = function() {
-
-  var self = this;
-  var annotations = this._serializer._data.annotations;
-
-  this.selector.addClass("Ldt-SegmentsWidget");
-  this.selector.append(Mustache.to_html(IriSP.overlay_marker_template));
-  
-  this.positionMarker = this.selector.find(".Ldt-SegmentPositionMarker");
-  
-  this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.positionUpdater));
-  var duration = this.getDuration();
-  
-  if (this.cinecast_version) {
-      var segments_annotations = IriSP.underscore.filter(
-          this._serializer._data.annotations,
-          function(_a) {
-              return _a.type == "cinecast:MovieExtract";
-          }
-      );
-  }
-  else {
-
-      var view_type = this._serializer.getChapitrage();
-      if (typeof(view_type) === "undefined") {
-        view_type = this._serializer.getNonTweetIds()[0];  
-      }
-    
-      
-      var i = 0;
-      
-      var segments_annotations = [];
-      
-      for (i = 0; i < annotations.length; i++) {
-        var annotation = annotations[i];
-    
-        /* filter the annotations whose type is not the one we want */
-        if (view_type != "" && typeof(annotation.meta) !== "undefined" && typeof(annotation.meta["id-ref"]) !== "undefined"
-              && annotation.meta["id-ref"] != view_type) {
-            continue;
-        }
-    
-        segments_annotations.push(annotation);
-      }
-}    
-    var _w = this.selector.width();
-  var lastSegment = IriSP.underscore.max(segments_annotations, function(annotation) { return annotation.end; });
-  
-  for (i = 0; i < segments_annotations.length; i++) {
-  
-    var annotation = segments_annotations[i];
-    var begin = (+ annotation.begin);
-    var end = (+ annotation.end);
-    var id = annotation.id;
-        
-    var startPixel = Math.floor(_w * (begin / duration));
-
-    var endPixel = Math.floor(_w * (end / duration));
-    if (annotation.id !== lastSegment.id) 
-      var pxWidth = endPixel - startPixel -1;
-    else
-      /* the last segment has no segment following it */
-      var pxWidth = endPixel - startPixel;
-    
-    var divTitle = this.cinecast_version
-        ? annotation.content.data
-        : annotation.content.title + ( annotation.content.title ? "<br />" : "" ) + annotation.content.description.replace(/(^.{120,140})[\s].+$/,'$1&hellip;');
-    
-    var thumbUrl = annotation.meta.thumbnail || '';
-    
-    var hexa_color = typeof(annotation.content.color) !== "undefined"
-        ? '#' + IriSP.DEC_HEXA_COLOR(annotation.content.color)
-        : typeof(annotation.color) !== "undefined"
-            ? '#' + IriSP.DEC_HEXA_COLOR(annotation.color)
-            : this.defaultColors[i % this.defaultColors.length];
-
-    /*
-    if (hexa_color === "FFCC00")
-      hexa_color = "333";
-    */
-    if (hexa_color.length == 5)
-      hexa_color = hexa_color + '00';
-    
-    
-    var annotationTemplate = Mustache.to_html(IriSP.annotation_template,
-        {"divTitle" : divTitle, "id" : id, "startPixel" : startPixel,
-        "pxWidth" : pxWidth, "hexa_color" : hexa_color,
-        "seekPlace" : Math.round(begin/1000), "thumbnailUrl": thumbUrl});
-
-        
-    this.selector.append(annotationTemplate);
-    
-    /* add a special class to the last segment and change its border */
-    if (annotation.id === lastSegment.id) {
-        IriSP.jqId(id).addClass("Ldt-lastSegment").css("border-color", hexa_color);  
-    }
-   }
-    // react to mediafragment messages.
-    this._Popcorn.listen("IriSP.Mediafragment.showAnnotation", 
-        function(id, divTitle) {
-        
-            var divObject = IriSP.jqId(id);
-            if (divObject.length) {
-            divObject.fadeTo(0,1);
-            var offset_x = divObject.position().left + divObject.outerWidth() / 2;
-            self.TooltipWidget.show(divObject.attr("title"), IriSP.jQuery(this).css("background-color"), offset_x, 0);
-            IriSP.jQuery(document).one("mousemove", function() { divObject.fadeTo(0,.5);
-                                                                self.TooltipWidget.hide(); });
-        }
-      });
-      
-    this.selector.find(".Ldt-iri-chapter")
-        .fadeTo(0, .5)
-        .click(function() {
-            self._Popcorn.trigger("IriSP.SegmentsWidget.click", this.id);
-            self._Popcorn.currentTime(IriSP.jQuery(this).attr("data-seek"));
-        })
-        .mouseover( function(event) {
-            var divObject = IriSP.jQuery(this);
-            divObject.fadeTo(0,1);
-            var offset_x = divObject.position().left + divObject.outerWidth() / 2;
-            var thumb = divObject.attr("thumbnail-url");
-            var txt = divObject.attr("title") + (thumb && thumb.length ? '<br /><img src="' + thumb + '" />' : '');
-            self.TooltipWidget.show(txt, IriSP.jQuery(this).css("background-color"), offset_x, 0);
-        })
-        .mouseout(function(){
-            IriSP.jQuery(this).fadeTo(0,.5);
-            self.TooltipWidget.hide();
-        });
-};
-
-/* restores the view after a search */
-IriSP.SegmentsWidget.prototype.clear = function() {
-  this.selector.children(".Ldt-iri-chapter").fadeTo(0,.5);
-};
-
-IriSP.SegmentsWidget.prototype.clickHandler = function(annotation) {
-  this._Popcorn.trigger("IriSP.SegmentsWidget.click", annotation.id);
-  var begin = (+ annotation.begin) / 1000;
-  this._Popcorn.currentTime(Math.round(begin));
-};
-
-IriSP.SegmentsWidget.prototype.searchHandler = function(searchString) {
-
-  if (searchString == "")
-    return;
-
-  var matches = this._serializer.searchOccurences(searchString);
-
-  if (IriSP.countProperties(matches) > 0) {
-    this._Popcorn.trigger("IriSP.search.matchFound");
-  } else {
-    this._Popcorn.trigger("IriSP.search.noMatchFound");
-  }
-
-  // un-highlight all the blocks
-  this.selector.children(".Ldt-iri-chapter").css("opacity", 0.1);
- 
-  // then highlight the ones with matches.
-  for (var id in matches) {
-    var factor = 0.5 + matches[id] * 0.2;
-    this.selector.find("#"+id).dequeue();
-    this.selector.find("#"+id).animate({opacity:factor}, 200);
-  }
-
- 
-  this.oldSearchMatches = matches;
-};
-
-IriSP.SegmentsWidget.prototype.searchFieldClearedHandler = function() {
-  this.clear();
-};
-
-IriSP.SegmentsWidget.prototype.searchFieldClosedHandler = function() {
-  this.clear();
-};
-
-IriSP.SegmentsWidget.prototype.positionUpdater = function() {  
-  var duration = this.getDuration() / 1000;
-  var time = this._Popcorn.currentTime();
-  //var position 	= ((time / duration) * 100).toFixed(2);
-  var position 	= ((time / duration) * 100).toFixed(2);
-
-  this.positionMarker.css("left", position + "%");  
-};
-
-IriSP.SegmentsWidget.prototype.showAnnotation = function() {
-
-};
-/** A widget to create a new segment */
-IriSP.SliceWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-  
-};
-
-IriSP.SliceWidget.prototype = new IriSP.Widget();
-
-IriSP.SliceWidget.prototype.draw = function() {
-  var templ = Mustache.to_html(IriSP.sliceWidget_template);
-  this.selector.append(templ);
-  
-  this.sliceZone = this.selector.find(".Ldt-sliceZone");
-  
-  /* global variables used to keep the position and width
-     of the zone.
-  */  
-  this.zoneLeft = 0;
-  this.zoneWidth = 0;
-  
-  this.leftHandle = this.selector.find(".Ldt-sliceLeftHandle");
-  this.rightHandle = this.selector.find(".Ldt-sliceRightHandle");
-
-  var left = this.selector.offset().left;
-  var top = this.selector.offset().top;
-
-  // a bug in firefox makes it use the wrong format
-  if (!IriSP.jQuery.browser.mozilla) {
-    // contain the handles correctly - we cannot set
-    // containment: parent because it wouldn't allow to select the 
-    // whole slice, so we have to compute a box in which the slice is
-    // allowed to move.
-    var containment = [left - 8, top, this.selector.width() + left, top];
-
-    // var containment = [left - 16, top, this.selector.width() + left - 8, top];
-    this.leftHandle.draggable({axis: "x",
-    drag: IriSP.wrap(this, this.leftHandleDragged),  
-    containment: containment
-    });
-
-    containment = [left, top, this.selector.width() + left, top];
-    // containment = [left, top, this.selector.width() + left - 8, top];
-    this.rightHandle.draggable({axis: "x",
-    drag: IriSP.wrap(this, this.rightHandleDragged),    
-    containment: containment
-    });
-  
-  } else { // firefox
-    // we need to define a containment specific to firefox.
-    
-    var containment = [left - 16, top, this.selector.width() + left - 8, top];
-    this.leftHandle.draggable({axis: "x",
-    drag: IriSP.wrap(this, this.leftHandleDragged),  
-    containment: containment
-    });
-
-    containment = [left, top, this.selector.width() + left - 8, top];
-    this.rightHandle.draggable({axis: "x",
-    drag: IriSP.wrap(this, this.rightHandleDragged),    
-    containment: containment
-    });
-  }
-  
-  this.leftHandle.css("position", "absolute");
-  this.rightHandle.css("position", "absolute");
-  
-  this._Popcorn.listen("IriSP.SliceWidget.position", 
-                        IriSP.wrap(this, this.positionSliceHandler));
-  
-  this._Popcorn.listen("IriSP.SliceWidget.show", IriSP.wrap(this, this.show));
-  this._Popcorn.listen("IriSP.SliceWidget.hide", IriSP.wrap(this, this.hide));
-  this.selector.hide();
-};
-
-/** responds to an "IriSP.SliceWidget.position" message
-    @param params an array with the first element being the left distance in
-           percents and the second element the width of the slice in pixels
-*/        
-IriSP.SliceWidget.prototype.positionSliceHandler = function(params) {
-  left = params[0];
-  width = params[1];
-  
-  this.zoneLeft = left;
-  this.zoneWidth = width;
-  this.sliceZone.css("left", left + "px");
-  this.sliceZone.css("width", width + "px");
-  this.leftHandle.css("left", (left - 7) + "px");
-  this.rightHandle.css("left", left + width + "px");
-  
-  this._leftHandleOldLeft = left - 7;
-  this._rightHandleOldLeft = left + width;
-};
-
-/** handle a dragging of the left handle */
-IriSP.SliceWidget.prototype.leftHandleDragged = function(event, ui) {
-  /* we have a special variable, this._leftHandleOldLeft, to keep the
-     previous position of the handle. We do that to know in what direction
-     is the handle being dragged
-  */
-  
-  var currentX = this.leftHandle.offset().left;
-  var rightHandleX = Math.floor(this.rightHandle.position()["left"]);
-  
-  var container_offset = this.selector.offset().left;
-
-  if (Math.floor(ui.position.left) >= rightHandleX - 7) {
-    /* prevent the handle from moving past the right handle */
-    ui.position.left = rightHandleX - 7;
-  }
-
-  this.zoneWidth = rightHandleX - Math.floor(ui.position.left) - 7;  
-  this.zoneLeft = Math.floor(ui.position.left) + 8;
-  
-  this.sliceZone.css("width", this.zoneWidth);
-  this.sliceZone.css("left", this.zoneLeft + "px");
-  
-  this._leftHandleOldLeft = ui.position.left;  
-  this.broadcastChanges();
-    
-};
-
-/** handle a dragging of the right handle */
-IriSP.SliceWidget.prototype.rightHandleDragged = function(event, ui) { 
-  /* we have a special variable, this._leftHandleOldLeft, to keep the
-     previous position of the handle. We do that to know in what direction
-     is the handle being dragged
-  */
-  
-  var currentX = this.leftHandle.position()["left"];
-  var leftHandleX = Math.floor(this.leftHandle.position()["left"]);
-
-  var container_offset = this.selector.offset().left + this.selector.width();
-  
-  if (Math.floor(ui.position.left) < leftHandleX + 7) {
-    /* prevent the handle from moving past the left handle */
-    ui.position.left = leftHandleX + 7;
-  }
-
-  this.zoneWidth = Math.floor(ui.position.left) - (leftHandleX + 7);    
-  
-  this.sliceZone.css("width", this.zoneWidth);
-  //this.sliceZone.css("left", this.zoneLeft + "px");
-  this._rightHandleOldLeft = Math.floor(this._rightHandleOldLeft);  
-  this.broadcastChanges();
-};
-
-/** tell to the world that the coordinates of the slice have
-    changed 
-*/
-IriSP.SliceWidget.prototype.broadcastChanges = function() {
-  var leftPercent = (this.zoneLeft / this.selector.width()) * 100;
-  var zonePercent = (this.zoneWidth / this.selector.width()) * 100;
-
-  this._Popcorn.trigger("IriSP.SliceWidget.zoneChange", [leftPercent, zonePercent]);  
-};
-
-IriSP.SliceWidget.prototype.show = function() {
-  this.selector.show();
-};
-
-IriSP.SliceWidget.prototype.hide = function() {
-  this.selector.hide();
-};IriSP.SliderWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-};
-
-IriSP.SliderWidget.prototype = new IriSP.Widget();
-
-IriSP.SliderWidget.prototype.draw = function() {
-  var self = this;
-
-  this.selector.append(Mustache.to_html(IriSP.sliderWidget_template, {}));
-  this.selector.addClass("Ldt-SliderMinimized");
-
-  this.sliderBackground = this.selector.find(".Ldt-sliderBackground");
-  this.sliderForeground = this.selector.find(".Ldt-sliderForeground");
-  this.positionMarker = this.selector.find(".Ldt-sliderPositionMarker");
-
-
-  // a special variable to stop methods from tinkering
-  // with the positionMarker when the user is dragging it
-  this.draggingOngoing = false;
-
-  // another special variable used by the timeout handler to
-  // open or close the slider.
-  this.sliderMaximized = false;
-  this.timeOutId = null;
-
-  
-  this.positionMarker.draggable({axis: "x",
-  start: IriSP.wrap(this, this.positionMarkerDraggingStartedHandler),
-  stop: IriSP.wrap(this, this.positionMarkerDraggedHandler),
-  containment: "parent"
-  });
-  this.positionMarker.css("position", "absolute");
-  
-  this.sliderBackground.click(function(event) { self.backgroundClickHandler.call(self, event); });
-  this.sliderForeground.click(function(event) { self.foregroundClickHandler.call(self, event); });
-
-  this.selector.hover(IriSP.wrap(this, this.mouseOverHandler), IriSP.wrap(this, this.mouseOutHandler));
-
-  // update the positions
-  this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.sliderUpdater));
-
-  // special messages :
-  this._Popcorn.listen("IriSP.PlayerWidget.MouseOver", IriSP.wrap(this, this.mouseOverHandler));
-  this._Popcorn.listen("IriSP.PlayerWidget.MouseOut", IriSP.wrap(this, this.mouseOutHandler));
-};
-
-/* update the slider and the position marker as time passes */
-IriSP.SliderWidget.prototype.sliderUpdater = function() {
-  if(this.draggingOngoing || this._disableUpdate)
-    return;
-  
-  var time = this._Popcorn.currentTime();
-
-  var duration = this.getDuration() / 1000;
-  var percents = time / duration;
-  
-  /* we do these complicated calculations to center exactly
-     the position Marker */
-
-  var divWidth = this.selector.width();
-  var pixels = Math.floor(this.selector.width() * percents);
-  var positionMarker_width = this.positionMarker.width();
-  var correction = (positionMarker_width / 2);
-
-  /* check that we don't leave the left side */
-  var newPos = pixels - correction;
-  if (newPos <= 0)
-    newPos = 0;
-  
-  /* check that we don't leave the right side */
-  var rightEdgePos = pixels + 1 * correction;
-
-  if (rightEdgePos >= divWidth)
-    newPos = divWidth - 1 * correction - 1;
-  
-  this.sliderForeground.css("width", pixels + "px");
-  this.positionMarker.css("left", newPos + "px");
-
-};
-
-IriSP.SliderWidget.prototype.backgroundClickHandler = function(event) {
-  /* this piece of code is a little bit convoluted - here's how it works :
-     we want to handle clicks on the progress bar and convert those to seeks in the media.
-     However, jquery only gives us a global position, and we want a number of pixels relative
-     to our container div, so we get the parent position, and compute an offset to this position,
-     and finally compute the progress ratio in the media.
-     Finally we multiply this ratio with the duration to get the correct time
-  */
-
-  var parentOffset = this.sliderBackground.parent().offset();
-  var width = this.sliderBackground.width();
-  var relX = event.pageX - parentOffset.left;
-
-  var duration = this.getDuration() / 1000;
-  var newTime = ((relX / width) * duration).toFixed(2);
-
-  this._Popcorn.currentTime(newTime);
-};
-
-/* same function as the previous one, except that it handles clicks
-   on the foreground element */
-IriSP.SliderWidget.prototype.foregroundClickHandler = function(event) {
-  var parentOffset = this.sliderForeground.parent().offset();
-  var width = this.sliderBackground.width();
-  var relX = event.pageX - parentOffset.left;
-
-  var duration = this.getDuration() / 1000;
-  var newTime = ((relX / width) * duration).toFixed(2);
-
-  this._Popcorn.currentTime(newTime);
-};
-
-/* handles mouse over the slider */
-IriSP.SliderWidget.prototype.mouseOverHandler = function(event) {
-  
-  if (this.timeOutId !== null) {
-    window.clearTimeout(this.timeOutId);
-  }
- 
-  this.sliderMaximized = true;
-
-  this.sliderBackground.animate({"height": "9px"}, 100);
-  this.sliderForeground.animate({"height": "9px"}, 100);
-  this.positionMarker.animate({"height": "9px", "width": "9px"}, 100);
-  //this.positionMarker.css("margin-top", "-4px");
-  
-//  this.selector.removeClass("Ldt-SliderMinimized");
-//  this.selector.addClass("Ldt-SliderMaximized");
-};
-
-/* handles when the mouse leaves the slider */
-IriSP.SliderWidget.prototype.mouseOutHandler = function(event) {
-
-  this.timeOutId = window.setTimeout(IriSP.wrap(this, this.minimizeOnTimeout),
-                                     this.minimize_period);
-};
-
-IriSP.SliderWidget.prototype.minimizeOnTimeout = function(event) {
-  this.sliderBackground.animate({"height": "5px"}, 100);
-  this.sliderForeground.animate({"height": "5px"}, 100);
-  this.positionMarker.animate({"height": "5px", "width": "5px"}, 100);
-  this.positionMarker.css("margin-top", "0px");
-  this.sliderMinimized = true;
-  
-//  this.selector.removeClass("Ldt-SliderMaximized");
-//  this.selector.addClass("Ldt-SliderMinimized");
-
-};
-
-// called when the user starts dragging the position indicator
-IriSP.SliderWidget.prototype.positionMarkerDraggingStartedHandler = function(event, ui) {  
-  this.draggingOngoing = true;
-};
-
-IriSP.SliderWidget.prototype.positionMarkerDraggedHandler = function(event, ui) {   
-
-/*  this._disableUpdate = true; // disable slider position updates while dragging is ongoing.
-  window.setTimeout(IriSP.wrap(this, function() { this._disableUpdate = false; }), 500);
-*/
-  var parentOffset = this.sliderForeground.parent().offset();
-  var width = this.sliderBackground.width();
-  var relX = event.originalEvent.pageX - parentOffset.left;
-
-  var duration = this.getDuration() / 1000;
-  var newTime = ((relX / width) * duration).toFixed(2);
-  this._Popcorn.currentTime(newTime);
-  
-  this.draggingOngoing = false;
-};
-
-/** @class The constructor for the sparkline widget */
-IriSP.SparklineWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-
-  this._oldAnnotation = null;
-  this._results = [];
-  
-  this.slices = this._config.slices || Math.floor(this.width/20);
-  if (!this.width) {
-      this.width = this.selector.width();
-  }
-  if (!this.height) {
-      this.height = 40;
-  }
-  this.selector.css("height", this.height + "px");
-  if (this._config.background) {
-      this.selector.css("background", this._config.background);
-  }
-};
-
-
-IriSP.SparklineWidget.prototype = new IriSP.Widget();
-
-IriSP.SparklineWidget.prototype.clear = function() {
-
-};
-
-/** draw the sparkline using jquery sparkline */
-IriSP.SparklineWidget.prototype.draw = function() {
-    this.duration = this.getDuration();
-    this.paper = new Raphael(this.selector[0], this.width, this.height);
-    var _this = this;
-  
-  var views = this._serializer._data.views;
-  var stat_view;
-  if (!IriSP.null_or_undefined(views)) {
-    for (var i = 0; i < views.length; i++) {
-      var view = views[i];
-      if (view.id === "stat") {
-          stat_view = view;
-          break;
-      }
-    }
-  }
-  
-    var _ = IriSP.underscore;
-  // If we've found the correct view, feed the directly the data from the view
-  // to jquery sparkline. Otherwise, compute it ourselves.
-    if (!IriSP.null_or_undefined(stat_view)) {
-        //console.log("sparklinewidget : using stats embedded in the json");
-        var _results = stat_view.meta.stat.split(",");      
-    } else {
-        var _annotations = this._serializer._data.annotations,
-            _sliceDuration = Math.floor( this.duration / this.slices),
-            _results = _(_.range(this.slices)).map(function(_i) {
-                return _(_annotations).filter(function(_a){
-                    return (_a.begin <= (1 + _i) * _sliceDuration) && (_a.end >= _i * _sliceDuration)
-                }).length;
-            });
-    }
-    var _max = Math.max(1, _(_results).max()),
-        _h = this.height,
-        _scale = (_h - this.lineWidth) / _max,
-        _width = this.width / this.slices,
-        _y = _(_results).map(function(_v) {
-            return _h - (_scale * _v);
-        }),
-        _d = _(_y).reduce(function(_memo, _v, _k) {
-               return _memo + ( _k
-                   ? 'C' + (_k * _width) + ' ' + _y[_k - 1] + ' ' + (_k * _width) + ' ' + _v + ' ' + ((_k + .5) * _width) + ' ' + _v
-                   : 'M0 ' + _v + 'L' + (.5*_width) + ' ' + _v )
-            },'') + 'L' + this.width + ' ' + _y[_y.length - 1],
-        _d2 = _d + 'L' + this.width + ' ' + this.height + 'L0 ' + this.height;
-    this.paper.path(_d2).attr({
-        "stroke" : "none",
-        "fill" : this.fillColor
-    });
-         
-    this.paper.path(_d).attr({
-        "fill" : "none",
-        "stroke" : this.lineColor,
-        "stroke-width" : this.lineWidth
-    });
-  
-    this.rectangleProgress = this.paper.rect(0,0,0,this.height)
-        .attr({
-            "stroke" : "none",
-            "fill" : "#808080",
-            "opacity" : .3
-        });
-    this.ligneProgress = this.paper.path("M0 0L0 "+this.height).attr({"stroke":"#ff00ff", "line-width" : 2});
-  // save the results in an array so that we can re-use them when a new annotation
-  // is added.
-  this._results = _results;
-  
-  this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.timeUpdateHandler));
-//  this._Popcorn.listen("IriSP.createAnnotationWidget.addedAnnotation", IriSP.wrap(this, this.handleNewAnnotation));
-  
-  this.selector.click(IriSP.wrap(this, this.clickHandler));  
-};
-
-/** react to a timeupdate event */
-IriSP.SparklineWidget.prototype.timeUpdateHandler = function() {
-    var _currentTime = this._Popcorn.currentTime(),
-        _x = (1000 * _currentTime / this.duration) * this.width;
-    this.rectangleProgress.attr({
-        "width" : _x
-    });
-    this.ligneProgress.attr({
-        "path" : "M" + _x + " 0L" + _x + " " + this.height
-    });
-                                  
-}
-
-/** handle clicks on the widget */
-IriSP.SparklineWidget.prototype.clickHandler = function(event) {
-  var relX = event.pageX - this.selector.offset().left;
-  var newTime = ((relX / this.width) * this.duration/1000).toFixed(2);
-    
-  this._Popcorn.trigger("IriSP.SparklineWidget.clicked", newTime);
-  this._Popcorn.currentTime(newTime);
-};
-
-/** react when a new annotation is added */
-IriSP.SparklineWidget.prototype.handleNewAnnotation = function(annotation) {
-//  var num_columns = this._results.length;
-//  var duration = this._serializer.getDuration();
-//  var time_step = Math.round(duration / num_columns); /* the time interval between two columns */
-//  var begin = +annotation.begin;
-//  var end = +annotation.end;
-//  
-//  /* increment all the values between the beginning and the end of the annotation */
-//  var index_begin = Math.floor(begin / time_step);
-//  var index_end = Math.floor(end / time_step);
-//  
-//  for (var i = index_begin; i < Math.min(index_end, this._results.length); i++) {
-//    this._results[i]++;
-//  }
-//  
-//  this.selector.find(".Ldt-sparkLine").sparkline(this._results, {lineColor: "#7492b4", fillColor: "#aeaeb8",
-//                                                           spotColor: "#b70056",
-//                                                           width: this.width, height: this.height});
-};IriSP.StackGraphWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-}
-
-IriSP.StackGraphWidget.prototype = new IriSP.Widget();
-
-IriSP.StackGraphWidget.prototype.draw = function() {
-    var _ = IriSP._;
-    this.height =  this._config.height || 50;
-    this.width = this.selector.width();
-    this.slices = this._config.slices || ~~(this.width/(this.streamgraph ? 20 : 5));
-    _(this.tags).each(function(_a) {
-        _a.regexp = new RegExp(_(_a.keywords).map(function(_k) {
-            return _k.replace(/([\W])/gm,'\\$1');
-        }).join("|"),"im")
-    });
-    this.paper = new Raphael(this.selector[0], this.width, this.height);
-    this.groups = [];
-    this.duration = this.getDuration();
-    
-    var _annotationType = this._serializer.getTweets(),
-        _sliceDuration = ~~ ( this.duration / this.slices),
-        _annotations = this._serializer._data.annotations,
-        _groupedAnnotations = _(_.range(this.slices)).map(function(_i) {
-            return _(_annotations).filter(function(_a){
-                return (_a.begin <= (1 + _i) * _sliceDuration) && (_a.end >= _i * _sliceDuration)
-            });
-        }),
-        _max = IriSP._(_groupedAnnotations).max(function(_g) {
-            return _g.length
-        }).length,
-        _scale = this.height / _max,
-        _width = this.width / this.slices,
-        _showTitle = !this._config.excludeTitle,
-        _showDescription = !this._config.excludeDescription;
-    
-    
-    var _paths = _(this.tags).map(function() {
-        return [];
-    });
-    _paths.push([]);
-    
-    for (var i = 0; i < this.slices; i++) {
-        var _group = _groupedAnnotations[i];
-        if (_group) {
-            var _vol = _(this.tags).map(function() {
-                return 0;
-            });
-            for (var j = 0; j < _group.length; j++){
-           var _txt = (_showTitle ? _group[j].content.title : '') + ' ' + (_showDescription ? _group[j].content.description : '')
-                var _tags = _(this.tags).map(function(_tag) {
-                        return (_txt.search(_tag.regexp) == -1 ? 0 : 1)
-                    }),
-                    _nbtags = _(_tags).reduce(function(_a,_b) {
-                        return _a + _b;
-                    }, 0);
-                if (_nbtags) {
-                    IriSP._(_tags).each(function(_v, _k) {
-                        _vol[_k] += (_v / _nbtags);
-                    });
-                }
-            }
-            var _nbtags = _(_vol).reduce(function(_a,_b) {
-                    return _a + _b;
-                }, 0),
-                _nbneutre = _group.length - _nbtags,
-                _h = _nbneutre * _scale,
-                _base = this.height - _h;
-            if (!this.streamgraph) {
-                this.paper.rect(i * _width, _base, _width - 1, _h ).attr({
-                    "stroke" : "none",
-                    "fill" : this.defaultcolor
-                });
-            }
-           _paths[0].push(_base);
-            for (var j = 0; j < this.tags.length; j++) {
-                _h = _vol[j] * _scale;
-                _base = _base - _h;
-                if (!this.streamgraph) {
-                    this.paper.rect(i * _width, _base, _width - 1, _h ).attr({
-                        "stroke" : "none",
-                        "fill" : this.tags[j].color
-                    });
-                }
-                _paths[j+1].push(_base);
-            }
-            this.groups.push(_(_vol).map(function(_v) {
-                return _v / _group.length;
-            }))
-        } else {
-            for (var j = 0; j < _paths.length; j++) {
-                _paths[j].push(this.height);
-            }
-            this.groups.push(_(this.tags).map(function() {
-                return 0;
-            }));
-        }
-    }
-    
-    if (this.streamgraph) {
-        for (var j = _paths.length - 1; j >= 0; j--) {
-            var _d = _(_paths[j]).reduce(function(_memo, _v, _k) {
-               return _memo + ( _k
-                   ? 'C' + (_k * _width) + ' ' + _paths[j][_k - 1] + ' ' + (_k * _width) + ' ' + _v + ' ' + ((_k + .5) * _width) + ' ' + _v
-                   : 'M0 ' + _v + 'L' + (.5*_width) + ' ' + _v )
-            },'') + 'L' + this.width + ' ' + _paths[j][_paths[j].length - 1] + 'L' + this.width + ' ' + this.height + 'L0 ' + this.height;
-            this.paper.path(_d).attr({
-                "stroke" : "none",
-                "fill" : (j ? this.tags[j-1].color : this.defaultcolor)
-            });
-        }
-    }
-    this.rectangleFocus = this.paper.rect(0,0,_width,this.height)
-        .attr({
-            "stroke" : "none",
-            "fill" : "#ff00ff",
-            "opacity" : 0
-        })
-    this.rectangleProgress = this.paper.rect(0,0,0,this.height)
-        .attr({
-            "stroke" : "none",
-            "fill" : "#808080",
-            "opacity" : .3
-        });
-    this.ligneProgress = this.paper.path("M0 0L0 "+this.height).attr({"stroke":"#ff00ff", "line-width" : 2})
-    
-    this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.timeUpdateHandler));
-    var _this = this;
-    this.selector
-        .click(IriSP.wrap(this, this.clickHandler))
-        .mousemove(function(_e) {
-            _this.updateTooltip(_e);
-            // Trace
-            var relX = _e.pageX - _this.selector.offset().left;
-            var _duration = _this.getDuration();
-            var _time = parseInt((relX / _this.width) * _duration);
-            _this._Popcorn.trigger("IriSP.TraceWidget.MouseEvents", {
-                "widget" : "StackGraphWidget",
-                "type": "mousemove",
-                "x": _e.pageX,
-                "y": _e.pageY,
-                "time": _time
-            });
-
-        })
-        .mouseout(function() {
-            _this.TooltipWidget.hide();
-            _this.rectangleFocus.attr({
-                "opacity" : 0
-            })
-        })
-}
-
-IriSP.StackGraphWidget.prototype.timeUpdateHandler = function() {
-    var _currentTime = this._Popcorn.currentTime(),
-        _x = (1000 * _currentTime / this.duration) * this.width;
-    this.rectangleProgress.attr({
-        "width" : _x
-    });
-    this.ligneProgress.attr({
-        "path" : "M" + _x + " 0L" + _x + " " + this.height
-    })
-}
-
-IriSP.StackGraphWidget.prototype.clickHandler = function(event) {
-  /* Ctrl-C Ctrl-V'ed from another widget
-  */
-
-  var relX = event.pageX - this.selector.offset().left;
-  var newTime = ((relX / this.width) * this.duration/1000).toFixed(2);
-  this._Popcorn.trigger("IriSP.StackGraphWidget.clicked", newTime);
-  this._Popcorn.currentTime(newTime);                                 
-};
-
-IriSP.StackGraphWidget.prototype.updateTooltip = function(event) {
-    var _segment = Math.max(0,Math.min(this.groups.length - 1, Math.floor(this.slices * (event.pageX - this.selector.offset().left)/this.width))),
-        _valeurs = this.groups[_segment],
-        _width = this.width / this.slices,
-        _html = '<ul style="list-style: none; margin: 0; padding: 0;">' + IriSP._(this.tags).map(function(_tag, _i) {
-            return '<li style="clear: both;"><span style="float: left; width: 10px; height: 10px; margin: 2px; background: '
-                + _tag.color
-                + ';"></span>'
-                + ~~(100 * _valeurs[_i])
-                + '% de '
-                + _tag.description
-                + '</li>';
-        }).join('') + '</ul>';
-    this.TooltipWidget._shown = false; // Vraiment, on ne peut pas ouvrir le widget s'il n'est pas encore ouvert ?
-    this.TooltipWidget.show('','',(_segment + .5)* this.width / this.slices, 0);
-    this.TooltipWidget.selector.find(".tip").html(_html);
-    this.rectangleFocus.attr({
-        "x" : _segment * _width,
-        "opacity" : .4
-    })
-}
-
-IriSP.TagCloudWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-}
-
-IriSP.TagCloudWidget.prototype = new IriSP.Widget();
-
-IriSP.TagCloudWidget.prototype.draw = function() {
-    
-    var _urlRegExp = /https?:\/\/[0-9a-zA-Z\.%\/-_]+/g,
-        _stopWords = [
-            'aussi', 'and', 'avec', 'aux', 'bien', 'car', 'cette', 'comme', 'dans', 'donc', 'des', 'elle', 'encore', 'entre', 'est',
-            'être', 'eux', 'faire', 'fait', 'http', 'ici', 'ils', 'les', 'leur', 'leurs', 'mais', 'mes', 'même', 'mon', 'notre',
-            'non', 'nos', 'nous', 'ont', 'par', 'pas', 'peu', 'peut', 'plus', 'pour', 'que', 'qui', 'sans', 'ses' ,'son', 'sont', 'sur',
-            'tes', 'très', 'the', 'ton', 'tous', 'tout', 'une', 'votre', 'vos', 'vous' ],
-        _regexpword = /[^\s\.&;,'"!\?\d\(\)\+\[\]\\\…\-«»:\/]{3,}/g,
-        _words = {},
-        _showTitle = !this._config.excludeTitle,
-        _showDescription = !this._config.excludeDescription,
-        _excludePattern = this._config.excludePattern || null,
-        _tagCount = this._config.tagCount || 30;
-    if (typeof this._config.excludeWords !== "undefined" && this._config.excludeWords.length) {
-        IriSP._(this._config.excludeWords).each(function(_w) {
-            _stopWords.push(_w.toLowerCase());
-        });
-    }
-    
-    IriSP._(this._serializer._data.annotations).each(function(_annotation) {
-       if (_annotation.content && _annotation.content.description) {
-           var _txt = (_showTitle ? _annotation.content.title : '') + ' ' + (_showDescription ? _annotation.content.description : '')
-           IriSP._(_txt.toLowerCase().replace(_urlRegExp, '').match(_regexpword)).each(function(_mot) {
-               if (_stopWords.indexOf(_mot) == -1 && (_excludePattern == null || !_excludePattern.test(_mot))) {
-                   _words[_mot] = 1 + (_words[_mot] || 0);
-               }
-           })
-       } 
-    });
-    
-    _words = IriSP._(_words)
-        .chain()
-        .map(function(_v, _k) {
-            return {
-                "word" : _k,
-                "count" : _v
-            }
-        })
-        .filter(function(_v) {
-            return _v.count > 2;
-        })
-        .sortBy(function(_v) {
-            return - _v.count;
-        })
-        .first(_tagCount)
-        .value();
-    var _max = _words[0].count,
-        _min = Math.min(_words[_words.length - 1].count, _max - 1),
-        _scale = 16 / Math.sqrt(_max - _min),
-        _this = this,
-        _html = '<ul>'
-            + IriSP._(_words)
-                .chain()
-                .shuffle()
-                .map(function(_word) {
-                    var _size = 10 + _scale * Math.sqrt(_word.count - _min);
-                    return '<li class="Ldt-TraceMe" style="font-size:'
-                        + _size
-                        + 'px;">'
-                        + _word.word
-                        + '</li>'
-                })
-                .value()
-                .join("")
-            + '</ul>';
-    this.selector
-        .addClass("Ldt-TagCloud")
-        .html(_html);
-    this.selector.find("li").click(function() {
-        var _txt = this.textContent.replace(/(^[\s]+|[\s]+$)/g,'');
-        _this._Popcorn.trigger("IriSP.search.triggeredSearch", _txt);
-    });
-    this._Popcorn.listen("IriSP.search", IriSP.wrap(this, function(searchString) {
-        var _rgxp = new RegExp("(" + searchString.replace(/(\W)/g,'\\$1') + ")","gi");
-        this.selector.find("li").each(function(_i, _e) {
-            _e.innerHTML = searchString.length ?
-                _e.textContent.replace(_rgxp,'<span class="Ldt-TagCloud-actif Ldt-TraceMe">$1</span>')
-                : _e.textContent;
-        });
-    }));
-    this._Popcorn.listen("IriSP.search.closed", IriSP.wrap(this, this.endsearch));
-    this._Popcorn.listen("IriSP.search.cleared", IriSP.wrap(this, this.endsearch));
-}
-
-IriSP.TagCloudWidget.prototype.endsearch = function() {
-    this.selector.find("li").each(function(_i, _e) {
-        _e.innerHTML = _e.textContent;
-    });
-}
-/* this widget displays a small tooltip */
-IriSP.TooltipWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-  this._shown = false;
-  this._displayedText = "";
-  this._hideTimeout = -1;
-};
-
-
-IriSP.TooltipWidget.prototype = new IriSP.Widget();
-
-IriSP.TooltipWidget.prototype.draw = function() {
-  var templ = Mustache.to_html(IriSP.tooltipWidget_template);
-  // position the widget absolutely relative to document. --- NOOOO !!!!
-  this.selector.css({
-      "position": "absolute",
-      "top": 0,
-      "left": 0
-  });
-  this.selector.parent().css({
-      "position": "relative"
-  });
-  this.selector.append(templ);
-  var _this = this;
-  this.selector.mouseover(function() {
-      _this.hide();
-  });
-  this.hide();
-
-};
-
-IriSP.TooltipWidget.prototype.clear = function() {
-	this.selector.find(".tiptext").html("");
-};
-
-IriSP.TooltipWidget.prototype.show = function(text, color, x, y) {
-
-  if (this._displayedText == text && this._shown)
-    return;
-
-  this.selector.find(".tipcolor").css("background-color", color);
-  this._displayedText = text;
-  this.selector.find(".tiptext").html(text);
-  
-  var _tip = this.selector.find(".tip");
-  _tip.show();
-  _tip.css({
-      "left": Math.floor(x - _tip.outerWidth() / 2)+"px",
-      "top": Math.floor(y - _tip.outerHeight())+"px"
-  });
-  this._shown = true;
-};
-
-IriSP.TooltipWidget.prototype.hide = function() {                                                   
-  this.selector.find(".tip").hide();
-  this._shown = false;  
-};IriSP.TraceWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-  this.lastEvent = "";
-  var _this = this,
-    _listeners = {
-        "IriSP.createAnnotationWidget.addedAnnotation" : 0,
-        "IriSP.search.open" : 0,
-        "IriSP.search.closed" : 0,
-        "IriSP.search" : 0,
-        "IriSP.search.cleared" : 0,
-        "IriSP.search.matchFound" : 0,
-        "IriSP.search.noMatchFound" : 0,
-        "IriSP.search.triggeredSearch" : 0,
-        "IriSP.TraceWidget.MouseEvents" : 0,
-        "play" : 0,
-        "pause" : 0,
-        "volumechange" : 0,
-        "seeked" : 0,
-        "play" : 0,
-        "pause" : 0,
-        "timeupdate" : 2000
-    };
-    IriSP._(_listeners).each(function(_ms, _listener) {
-        var _f = function(_arg) {
-            _this.eventHandler(_listener, _arg);
-        }
-        if (_ms) {
-            _f = IriSP.underscore.throttle(_f, _ms);
-        }
-        _this._Popcorn.listen(_listener, _f);
-    });
-    this._Popcorn.listen("timeupdate", IriSP.underscore.throttle(function(_arg) {
-        _this.eventHandler(_listener, _arg);
-    }));
-    
-    this.tracer = IriSP.TraceManager(IriSP.jQuery).init_trace("test", this._config);
-    this.tracer.set_default_subject("default_subject");
-    this.tracer.trace("StartTracing", { "hello": "world" });
-    
-}
-
-IriSP.TraceWidget.prototype = new IriSP.Widget();
-
-IriSP.TraceWidget.prototype.draw = function() {
-    this.mouseLocation = '';
-    var _this = this;
-    IriSP.jQuery(".Ldt-Widget").bind("click mouseover mouseout dragstart dragstop", function(_e) {
-        var _widget = IriSP.jQuery(this).attr("widget-type"),
-            _class = _e.target.className;
-        var _data = {
-            "type": _e.type,
-            "x": _e.clientX,
-            "y": _e.clientY,
-            "widget": _widget
-        }
-        if (typeof _class == "string" && _class.indexOf('Ldt-TraceMe') != -1) {
-            var _name = _e.target.localName,
-                _id = _e.target.id,
-                _text = _e.target.textContent.trim(),
-                _title = _e.target.title,
-                _value = _e.target.value;
-            _data.target = _name + (_id.length ? '#' + IriSP.jqEscape(_id) : '') + (_class.length ? ('.' + IriSP.jqEscape(_class).replace(/\s/g,'.')).replace(/\.Ldt-(Widget|TraceMe)/g,'') : '');
-            if (typeof _title == "string" && _title.length && _title.length < 140) {
-                _data.title = _title;
-            }
-            if (typeof _text == "string" && _text.length && _text.length < 140) {
-                _data.text = _text;
-            }
-            if (typeof _value == "string" && _value.length) {
-                _data.value = _value;
-            }
-            _this._Popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
-        } else {
-            //console.log(_e.type+','+_this.mouseLocation+','+_widget);
-            if (_e.type == "mouseover") {
-                if (_this.mouseLocation != _widget) {
-                    _this._Popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
-                } else {
-                    if (typeof _this.moTimeout != "undefined") {
-                        clearTimeout(_this.moTimeout);
-                        delete _this.moTimeout;
-                    }
-                }
-            }
-            if (_e.type == "click") {
-                _this._Popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
-            }
-            if (_e.type == "mouseout") {
-                if (typeof _this.moTimeout != "undefined") {
-                    clearTimeout(_this.moTimeout);
-                }
-                _this.moTimeout = setTimeout(function() {
-                   if (_data.widget != _this.mouseLocation) {
-                       _this._Popcorn.trigger('IriSP.TraceWidget.MouseEvents', _data);
-                   }
-                },100);
-            }
-        }
-        _this.mouseLocation = _widget;
-    });
-}
-
-IriSP.TraceWidget.prototype.eventHandler = function(_listener, _arg) {
-    var _traceName = 'Mdp_';
-    if (typeof _arg == "string" || typeof _arg == "number") {
-        _arg = { "value" : _arg }
-    }
-    if (typeof _arg == "undefined") {
-        _arg = {}
-    }
-    switch(_listener) {
-        case 'IriSP.TraceWidget.MouseEvents':
-            _traceName += _arg.widget + '_' + _arg.type;
-            delete _arg.widget;
-            delete _arg.type;
-        break;
-        case 'timeupdate':
-        case 'play':
-        case 'pause':
-            _arg.time = this._Popcorn.currentTime() * 1000;
-        case 'seeked':
-        case 'volumechange':
-            _traceName += 'Popcorn_' + _listener;
-        break;
-        default:
-            _traceName += _listener.replace('IriSP.','').replace('.','_');
-    }
-    this.lastEvent = _traceName;
-    this.tracer.trace(_traceName, _arg);
-    if (this._config.js_console) {
-        console.log("tracer.trace('" + _traceName + "', " + JSON.stringify(_arg) + ");");
-    }
-}
-/* a widget that displays tweet - used in conjunction with the polemicWidget */
-
-IriSP.TweetsWidget = function(Popcorn, config, Serializer) {
-  IriSP.Widget.call(this, Popcorn, config, Serializer);
-
-  this._displayingTweet = false;
-  this._timeoutId = undefined; 
-  this._hidden = false; /* hidden means that the createAnnotationWidget is shown */
-};
-
-
-IriSP.TweetsWidget.prototype = new IriSP.Widget();
-
-
-IriSP.TweetsWidget.prototype.drawTweet = function(annotation) {
-    if (this._hidden)
-      return;
-    
-    var title = IriSP.formatTweet(annotation.content.title);
-    var img = annotation.content.img.src;
-    if (typeof(img) === "undefined" || img === "" || img === "None") {
-      img = this.default_profile_picture;
-    }
-
-    var imageMarkup = IriSP.templToHTML("<img src='{{src}}' alt='user image'></img>", 
-                                       {src : img});
-    
-    if (typeof(IriSP.get_aliased(annotation.meta, ["dc:source", "source"]).content) !== "undefined") {
-      var tweetContents = JSON.parse(IriSP.get_aliased(annotation.meta, ["dc:source", "source"]).content);
-      var creator = tweetContents.user.screen_name;
-      var real_name = tweetContents.user.name;
-
-      imageMarkup = IriSP.templToHTML("<a href='http://twitter.com/{{creator}}'><img src='{{src}}' alt='user image'></img></a>", 
-                                       {src : img, creator: creator});
-            
-      var formatted_date = new Date(tweetContents.created_at).toLocaleDateString();
-      title = IriSP.templToHTML("<a class='Ldt-tweet_userHandle' href='http://twitter.com/{{creator}}'>@{{creator}}</a> - " + 
-                                "<div class='Ldt-tweet_realName'>{{real_name}}</div>" +
-                                "<div class='Ldt-tweet_tweetContents'>{{{ contents }}}</div>" +
-                                "<div class='Ldt-tweet_date'>{{ date }}</div>", 
-                                {creator: creator, real_name: real_name, contents : title, date : formatted_date});
-
-      this.selector.find(".Ldt-TweetReply").attr("href", "http://twitter.com/home?status=@" + creator + ":%20");
-
-
-      var rtText = Mustache.to_html("http://twitter.com/home?status=RT @{{creator}}: {{text}}",
-                                    {creator: creator, text: IriSP.encodeURI(annotation.content.title)});
-      this.selector.find(".Ldt-Retweet").attr("href", rtText);
-    }
-
-    this.selector.find(".Ldt-tweetContents").html(title);
-    this.selector.find(".Ldt-tweetAvatar").html(imageMarkup);
-    this.selector.show("blind", 250); 
-};
-
-IriSP.TweetsWidget.prototype.displayTweet = function(annotation) {
-  if (this._displayingTweet === false) {
-    this._displayingTweet = true;
-  } else {
-    window.clearTimeout(this._timeoutId);
-  }
-
-  this.drawTweet(annotation);
-
-  var time = this._Popcorn.currentTime();  
-  this._timeoutId = window.setTimeout(IriSP.wrap(this, this.clearPanel), this.tweet_display_period);
-};
-
-
-IriSP.TweetsWidget.prototype.clearPanel = function() {  
-    this._displayingTweet = false;
-    this._timeoutId = undefined;
-    this.closePanel();
-    
-};
-
-IriSP.TweetsWidget.prototype.closePanel = function() {
-    if (this._timeoutId != undefined) {
-      /* we're called from the "close window" link */
-      /* cancel the timeout */
-      window.clearTimeout(this._timeoutId);
-      this._timeoutId = null;
-    }
-    
-    this.selector.hide("blind", 400);
-    
-};
-
-/* cancel the timeout if the user clicks on the keep panel open button */
-IriSP.TweetsWidget.prototype.keepPanel = function() {
-    if (this._timeoutId != undefined) {
-      /* we're called from the "close window" link */
-      /* cancel the timeout */
-      window.clearTimeout(this._timeoutId);
-      this._timeoutId = null;
-    }
-};
-
-IriSP.TweetsWidget.prototype.draw = function() {
-  var _this = this;
-  
-  var tweetMarkup = IriSP.templToHTML(IriSP.tweetWidget_template, {"share_template" : IriSP.share_template});
-  this.selector.append(tweetMarkup);
-  this.selector.hide();
-  this.selector.find(".Ldt-tweetWidgetMinimize").click(IriSP.wrap(this, this.closePanel));
-  this.selector.find(".Ldt-tweetWidgetKeepOpen").click(IriSP.wrap(this, this.keepPanel));
-  
-  this._Popcorn.listen("IriSP.PolemicTweet.click", IriSP.wrap(this, this.PolemicTweetClickHandler));
-  this._Popcorn.listen("IriSP.PlayerWidget.AnnotateButton.clicked", 
-                        IriSP.wrap(this, this.handleAnnotateSignal));  
-};
-
-IriSP.TweetsWidget.prototype.PolemicTweetClickHandler = function(tweet_id) {  
-  var index, annotation;
-  for (index in this._serializer._data.annotations) {
-    annotation = this._serializer._data.annotations[index];
-    
-    if (annotation.id === tweet_id)
-      break;
-  }
-    
-  if (annotation.id !== tweet_id)
-      /* we haven't found it */
-      return;
-  
-  this.displayTweet(annotation);
-  return;
-};
-
-/** handle clicks on the annotate button by hiding/showing itself */
-IriSP.TweetsWidget.prototype.handleAnnotateSignal = function() {
-  if (this._hidden == false) {
-    this.selector.hide();
-    this._hidden = true;
-  } else {
-    if (this._displayingTweet !== false)
-      this.selector.show();
-      
-    
-    this._hidden = false;
-  }
-};/** @class This class implement a serializer for the JSON-Cinelab format
-    @params DataLoader a dataloader reference
-    @url the url from which to get our cinelab
- */
-IriSP.JSONSerializer = function(DataLoader, url) {
-  IriSP.Serializer.call(this, DataLoader, url);
-};
-
-IriSP.JSONSerializer.prototype = new IriSP.Serializer();
-
-/** serialize data */
-IriSP.JSONSerializer.prototype.serialize = function(data) {
-  return JSON.stringify(data);
-};
-
-/** deserialize data */
-IriSP.JSONSerializer.prototype.deserialize = function(data) {
-  return JSON.parse(data);
-};
-
-/** load JSON-cinelab data and also sort the annotations by start time
-    @param callback function to call when the data is ready.
- */
-IriSP.JSONSerializer.prototype.sync = function(callback, force_refresh) {
-  /* we don't have to do much because jQuery handles json for us */
-
-  var self = this;
-
-  var fn = function(data) {
-	  //TODO: seems taht data can be null here
-	  if (data !== null) {
-		  self._data = data;  
-	      if (typeof(self._data["annotations"]) === "undefined" ||
-	          self._data["annotations"] === null)
-	          self._data["annotations"] = [];
-	      
-	      // sort the data too       
-	      self._data["annotations"].sort(function(a, b) 
-	          { var a_begin = +a.begin;
-	            var b_begin = +b.begin;
-	            return a_begin - b_begin;
-	          });
-	  }     
-      callback(data);      
-  };
-  this._DataLoader.get(this._url, fn, force_refresh);
-};
-
-/** @return the metadata about the media being read FIXME: always return the first media. */
-IriSP.JSONSerializer.prototype.currentMedia = function() {  
-  return (typeof this._data.medias == "object" && this._data.medias.length) ? this._data.medias[0] : IriSP.__jsonMetadata.medias[0];
-};
-
-IriSP.JSONSerializer.prototype.getDuration = function() {
-    var _m = this.currentMedia();
-    if (_m === null || typeof _m.meta == "undefined") {
-        return 0;
-    }
-    return +(IriSP.get_aliased(_m.meta, ["dc:duration", "duration"]) || 0);
-}
-
-
-/** searches for an annotation which matches title, description and keyword 
-   "" matches any field. 
-   Note: it ignores tweets.
-   @return a list of matching ids.
-*/    
-IriSP.JSONSerializer.prototype.searchAnnotations = function(title, description, keyword) {
-    /* we can have many types of annotations. We want search to only look for regular segments */
-    /* the next two lines are a bit verbose because for some test data, _serializer.data.view is either
-       null or undefined.
-    */
-    var view;
-
-    if (typeof(this._data.views) !== "undefined" && this._data.views !== null)
-       view = this._data.views[0];
-
-    var searchViewType = "";
-
-    if(typeof(view) !== "undefined" && typeof(view.annotation_types) !== "undefined" && view.annotation_types.length > 1) {
-            searchViewType = view.annotation_types[0];
-    }
-
-    var filterfn = function(annotation) {
-      if( searchViewType  != "" && 
-          typeof(annotation.meta) !== "undefined" && 
-          typeof(annotation.meta["id-ref"]) !== "undefined" &&
-          annotation.meta["id-ref"] !== searchViewType) {
-        return true; // don't pass
-      } else {
-          return false;
-      }
-    };
-
-    return this.searchAnnotationsFilter(title, description, keyword, filterfn);
-
-};
-
-/* only look for tweets */
-IriSP.JSONSerializer.prototype.searchTweets = function(title, description, keyword) {
-    /* we can have many types of annotations. We want search to only look for regular segments */
-    /* the next two lines are a bit verbose because for some test data, _serializer.data.view is either
-       null or undefined.
-    */
-    
-    var searchViewType = this.getTweets();
-    if (typeof(searchViewType) === "undefined") {
-      var view;
-      
-      if (typeof(this._data.views) !== "undefined" && this._data.views !== null)
-         view = this._data.views[0];    
-
-      if(typeof(view) !== "undefined" && typeof(view.annotation_types) !== "undefined" && view.annotation_types.length > 1) {
-              searchViewType = view.annotation_types[0];
-      }
-    }
-    var filterfn = function(annotation) {
-      if( searchViewType  != "" && 
-          typeof(annotation.meta) !== "undefined" && 
-          typeof(annotation.meta["id-ref"]) !== "undefined" &&
-          annotation.meta["id-ref"] === searchViewType) {
-        return false; // pass
-      } else {
-          return true;
-      }
-    };
-
-    return this.searchAnnotationsFilter(title, description, keyword, filterfn);
-
-};
-
-/**
-  search an annotation according to its title, description and keyword
-  @param filter a function to filter the results with. Used to select between annotation types.
- */    
-IriSP.JSONSerializer.prototype.searchAnnotationsFilter = function(title, description, keyword, filter) {
-
-    var rTitle;
-    var rDescription;
-    var rKeyword;
-    /* match anything if given the empty string */
-    if (title == "")
-      title = ".*";
-    if (description == "")
-      description = ".*";
-    if (keyword == "")
-      keyword = ".*";
-    
-    rTitle = new RegExp(title, "i");  
-    rDescription = new RegExp(description, "i");  
-    rKeyword = new RegExp(keyword, "i");  
-    
-    var ret_array = [];
-    
-    var i;
-    for (i in this._data.annotations) {
-      var annotation = this._data.annotations[i];
-      
-      /* filter the annotations whose type is not the one we want */
-      if (filter(annotation)) {
-          continue;
-      }
-      
-      if (rTitle.test(annotation.content.title) && 
-          rDescription.test(annotation.content.description)) {
-          /* FIXME : implement keyword support */
-          ret_array.push(annotation);
-      }
-    }
-    
-    return ret_array;
-};
-
-/** breaks a string in words and searches each of these words. Returns an array
-   of objects with the id of the annotation and its number of occurences.
-   
-   @param searchString a string of words.
-   FIXME: optimize ? seems to be n^2 in the worst case.
-*/
-IriSP.JSONSerializer.prototype.searchOccurences = function(searchString) {
-  var ret = { };
-  var keywords = searchString.split(/\s+/);
-  
-  for (var i in keywords) {
-    var keyword = keywords[i];
-    
-    // search this keyword in descriptions and title
-    var found_annotations = []
-    found_annotations = found_annotations.concat(this.searchAnnotations(keyword, "", ""));
-    found_annotations = found_annotations.concat(this.searchAnnotations("", keyword, ""));
-    
-    for (var j in found_annotations) {
-      var current_annotation = found_annotations[j];
-      
-      if (!ret.hasOwnProperty(current_annotation.id)) {
-        ret[current_annotation.id] = 1;
-      } else {
-        ret[current_annotation.id] += 1;
-      }
-      
-    }
-
-  };
-  
-  return ret;
-};
-
-/** breaks a string in words and searches each of these words. Returns an array
-   of objects with the id of the annotation and its number of occurences.
-   
-   FIXME: optimize ? seems to be n^2 in the worst case.
-*/
-IriSP.JSONSerializer.prototype.searchTweetsOccurences = function(searchString) {
-  var ret = { };
-  var keywords = searchString.split(/\s+/);
-  
-  for (var i in keywords) {
-    var keyword = keywords[i];
-    
-    // search this keyword in descriptions and title
-    var found_annotations = []
-    found_annotations = found_annotations.concat(this.searchTweets(keyword, "", ""));
-    found_annotations = found_annotations.concat(this.searchTweets("", keyword, ""));
-    
-    for (var j in found_annotations) {
-      var current_annotation = found_annotations[j];
-      
-      if (!ret.hasOwnProperty(current_annotation.id)) {
-        ret[current_annotation.id] = 1;
-      } else {
-        ret[current_annotation.id] += 1;
-      }
-      
-    }
-
-  };
-  
-  return ret;
-};
-
-/** returns all the annotations that are displayable at the moment 
-   NB: only takes account the first type of annotations - ignores tweets 
-   currentTime is in seconds.
-   
-   @param currentTime the time at which we search.
-   @param (optional) the if of the type of the annotations we want to get.
- */
-
-IriSP.JSONSerializer.prototype.currentAnnotations = function(currentTime, id) {
-  var view;
-  var currentTimeMs = 1000 * currentTime;
-
-  if (typeof(id) === "undefined") {
-      var legal_ids = this.getNonTweetIds();
-  } else {
-      legal_ids = [id];
-  }
-  
-  var ret_array = [];
-  
-  var i;
-  
-  for (i in this._data.annotations) {
-    var annotation = this._data.annotations[i];
-    
-    if (IriSP.underscore.include(legal_ids, annotation.meta["id-ref"]) && 
-        annotation.begin <= currentTimeMs &&
-        annotation.end >= currentTimeMs)
-          ret_array.push(annotation);
-  }
- 
-  if (ret_array == []) {
-    console.log("ret_array empty, ", legal_ids);
-  }
-  
-  return ret_array;
-};
-
-/** return the current chapitre
-    @param currentTime the current time, in seconds.
-*/
-IriSP.JSONSerializer.prototype.currentChapitre = function(currentTime) {
-  return this.currentAnnotations(currentTime, this.getChapitrage())[0];
-};
-
-/** returns a list of ids of tweet lines (aka: groups in cinelab) */
-IriSP.JSONSerializer.prototype.getTweetIds = function() {
-  if (IriSP.null_or_undefined(this._data.lists) || IriSP.null_or_undefined(this._data.lists) ||
-      IriSP.null_or_undefined(this._data.views) || IriSP.null_or_undefined(this._data.views[0]))
-    return [];
-
-  
-  /* Get the displayable types
-     We've got to jump through a few hoops because the json sometimes defines
-     fields with underscores and sometimes with dashes
-  */
-  var annotation_types = IriSP.get_aliased(this._data.views[0], ["annotation_types", "annotation-types"]);
-  if (annotation_types === null) {
-      console.log("neither view.annotation_types nor view.annotation-types are defined");      
-      return;
-  }
-
-  var available_types = IriSP.get_aliased(this._data, ["annotation_types", "annotation-types"]);    
-  if (available_types === null) {
-      console.log("neither view.annotation_types nor view.annotation-types are defined");      
-      return;
-  }
-  
-  var potential_types = [];
-  
-  // Get the list of types which contain "Tw" in their content
-  for (var i = 0; i < available_types.length; i++) {
-    if (/Tw/i.test(IriSP.get_aliased(available_types[i], ['dc:title', 'title']))) {
-      potential_types.push(available_types[i].id);
-    }
-  }
-  
-  // Get the intersection of both.
-  var tweetsId = IriSP.underscore.intersection(annotation_types, potential_types);
-  
-  return tweetsId;
-};
-
-/** this function returns a list of lines which are not tweet lines */
-IriSP.JSONSerializer.prototype.getNonTweetIds = function() {
-  if (IriSP.null_or_undefined(this._data.lists) || IriSP.null_or_undefined(this._data.lists) ||
-      IriSP.null_or_undefined(this._data.views) || IriSP.null_or_undefined(this._data.views[0]))
-    return [];
-
-  /* Get the displayable types
-     We've got to jump through a few hoops because the json sometimes defines
-     fields with underscores and sometimes with dashes
-  */
-  var annotation_types = IriSP.get_aliased(this._data.views[0], ["annotation_types", "annotation-types"]);
-  if (annotation_types === null) {
-      console.log("neither view.annotation_types nor view.annotation-types are defined");      
-      return;
-  }
-
-  var available_types = IriSP.get_aliased(this._data, ["annotation_types", "annotation-types"]);    
-  if (available_types === null) {
-      console.log("neither view.annotation_types nor view.annotation-types are defined");      
-      return;
-  }
-
-  var potential_types = [];
-  
-  // Get the list of types which do not contain "Tw" in their content
-  for (var i = 0; i < available_types.length; i++) {
-    if (!(/Tw/i.test(IriSP.get_aliased(available_types[i], ['dc:title', 'title'])))) {
-      potential_types.push(available_types[i].id);
-    }
-  }
-
-  // Get the intersection of both.
-  var nonTweetsId = IriSP.underscore.intersection(annotation_types, potential_types);
-  
-  return nonTweetsId;
-  
-};
-
-/** return the id of the ligne de temps which contains name
-    @param name of the ligne de temps
-*/
-IriSP.JSONSerializer.prototype.getId = function(name) {
-   var available_types = IriSP.get_aliased(this._data, ["annotation_types", "annotation-types"]);  
-   
-  if (available_types == null)
-    return;
-
-  name = name.toUpperCase();
-  var e;  
-  e = IriSP.underscore.find(available_types, 
-    function(entry) {
-        if (IriSP.get_aliased(entry, ['dc:title', 'title']) === null)
-          return false;
-        return (entry["dc:title"].toUpperCase().indexOf(name) !== -1);
-    });
-  
-  if (typeof(e) === "undefined")
-    return;
-    
-  var id = e.id;
-
-  return id;
-};
-
-/** return the list of id's of the ligne de temps which contains name
-    @param name of the ligne de temps
-*/
-IriSP.JSONSerializer.prototype.getIds = function(name) {
-   var available_types = IriSP.get_aliased(this._data, ["annotation_types", "annotation-types"]);  
-   
-  if (available_types == null)
-    return;
-
-  name = name.toUpperCase();
-  var e = [];  
-  e = IriSP.underscore.filter(available_types, 
-                                  function(entry) { return (IriSP.get_aliased(entry, ['dc:title', 'title']).toUpperCase().indexOf(name) !== -1) });
-  return IriSP.underscore.pluck(e, "id");  
-};
-
-/** return the id of the ligne de temps named "Chapitrage" */
-IriSP.JSONSerializer.prototype.getChapitrage = function() {
-  var val = this.getId("Chapitrage");
-  if (typeof(val) === "undefined")
-    val = this.getId("Chapter");   
-  if (typeof(val) === "undefined")
-    val = this.getId("Chapit");
-  if (typeof(val) === "undefined")
-    val = this.getId("Chap");
-    
-  return val;
-};
-
-/** return the id of the ligne de temps named "Tweets" */
-IriSP.JSONSerializer.prototype.getTweets = function() {
-  var val = this.getId("Tweets");
-  if (typeof(val) === "undefined")
-    val = this.getId("Tweet");
-  if (typeof(val) === "undefined")
-    val = this.getId("Twitter");
-  if (typeof(val) === "undefined")
-    val = this.getId("twit");
-  if (typeof(val) === "undefined")
-    val = this.getId("Polemic");
-  
-  return val;
-};
-
-/** return the id of the ligne de temps named "Contributions" */
-IriSP.JSONSerializer.prototype.getContributions = function() {
-  var val = this.getId("Contribution");
-  if (typeof(val) === "undefined")
-    val = this.getId("Particip");   
-  if (typeof(val) === "undefined")
-    val = this.getId("Contr");
-  if (typeof(val) === "undefined")
-    val = this.getId("Publ");
-    
-  return val;
-};
\ No newline at end of file
Binary file test/integration/allocine_dossier_independant/js/libs/images/ui-bg_flat_0_aaaaaa_40x100.png has changed
Binary file test/integration/allocine_dossier_independant/js/libs/images/ui-bg_flat_75_ffffff_40x100.png has changed
Binary file test/integration/allocine_dossier_independant/js/libs/images/ui-bg_glass_55_fbf9ee_1x400.png has changed
Binary file test/integration/allocine_dossier_independant/js/libs/images/ui-bg_glass_65_ffffff_1x400.png has changed
Binary file test/integration/allocine_dossier_independant/js/libs/images/ui-bg_glass_75_dadada_1x400.png has changed
Binary file test/integration/allocine_dossier_independant/js/libs/images/ui-bg_glass_75_e6e6e6_1x400.png has changed
Binary file test/integration/allocine_dossier_independant/js/libs/images/ui-bg_glass_95_fef1ec_1x400.png has changed
Binary file test/integration/allocine_dossier_independant/js/libs/images/ui-bg_highlight-soft_75_cccccc_1x100.png has changed
Binary file test/integration/allocine_dossier_independant/js/libs/images/ui-icons_222222_256x240.png has changed
Binary file test/integration/allocine_dossier_independant/js/libs/images/ui-icons_2e83ff_256x240.png has changed
Binary file test/integration/allocine_dossier_independant/js/libs/images/ui-icons_454545_256x240.png has changed
Binary file test/integration/allocine_dossier_independant/js/libs/images/ui-icons_888888_256x240.png has changed
Binary file test/integration/allocine_dossier_independant/js/libs/images/ui-icons_cd0a0a_256x240.png has changed
--- a/test/integration/allocine_dossier_independant/js/libs/jquery-ui.css	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,570 +0,0 @@
-/*
- * jQuery UI CSS Framework @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-/*
- * jQuery UI Accordion @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Accordion#theming
- */
-/* IE/Win - Fix animation bug - #4615 */
-.ui-accordion { width: 100%; }
-.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
-.ui-accordion .ui-accordion-li-fix { display: inline; }
-.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
-.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
-.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
-.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
-.ui-accordion .ui-accordion-content-active { display: block; }/*
- * jQuery UI Autocomplete @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Autocomplete#theming
- */
-.ui-autocomplete { position: absolute; cursor: default; }	
-
-/* workarounds */
-* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-
-/*
- * jQuery UI Menu @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Menu#theming
- */
-.ui-menu {
-	list-style:none;
-	padding: 2px;
-	margin: 0;
-	display:block;
-	float: left;
-}
-.ui-menu .ui-menu {
-	margin-top: -3px;
-}
-.ui-menu .ui-menu-item {
-	margin:0;
-	padding: 0;
-	zoom: 1;
-	float: left;
-	clear: left;
-	width: 100%;
-}
-.ui-menu .ui-menu-item a {
-	text-decoration:none;
-	display:block;
-	padding:.2em .4em;
-	line-height:1.5;
-	zoom:1;
-}
-.ui-menu .ui-menu-item a.ui-state-hover,
-.ui-menu .ui-menu-item a.ui-state-active {
-	font-weight: normal;
-	margin: -1px;
-}
-/*
- * jQuery UI Button @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Button#theming
- */
-.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
-.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
-button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; } 
-button.ui-button-icons-only { width: 3.7em; } 
-
-/*button text element */
-.ui-button .ui-button-text { display: block; line-height: 1.4;  }
-.ui-button-text-only .ui-button-text { padding: .4em 1em; }
-.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
-.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
-.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
-.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
-/* no icon support for input elements, provide padding by default */
-input.ui-button { padding: .4em 1em; }
-
-/*button icon element(s) */
-.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
-.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
-.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
-.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-
-/*button sets*/
-.ui-buttonset { margin-right: 7px; }
-.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
-
-/* workarounds */
-button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
-/*
- * jQuery UI Datepicker @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker#theming
- */
-.ui-datepicker { width: 17em; padding: .2em .2em 0; }
-.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
-.ui-datepicker .ui-datepicker-next-hover { right:1px; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month, 
-.ui-datepicker select.ui-datepicker-year { width: 49%;}
-.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
-.ui-datepicker td { border: 0; padding: 1px; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; }
-
-/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
-    display: none; /*sorry for IE5*/
-    display/**/: block; /*sorry for IE5*/
-    position: absolute; /*must have*/
-    z-index: -1; /*must have*/
-    filter: mask(); /*must have*/
-    top: -4px; /*must have*/
-    left: -4px; /*must have*/
-    width: 200px; /*must have*/
-    height: 200px; /*must have*/
-}/*
- * jQuery UI Dialog @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Dialog#theming
- */
-.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
-.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative;  }
-.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; } 
-.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
-.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
-.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
-.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
-.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
-.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
-.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
-/*
- * jQuery UI Progressbar @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Progressbar#theming
- */
-.ui-progressbar { height:2em; text-align: left; }
-.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/*
- * jQuery UI Resizable @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Resizable#theming
- */
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
- * jQuery UI Selectable @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Selectable#theming
- */
-.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
-/*
- * jQuery UI Slider @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Slider#theming
- */
-.ui-slider { position: relative; text-align: left; }
-.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
-.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
-
-.ui-slider-horizontal { height: .8em; }
-.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
-.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
-.ui-slider-horizontal .ui-slider-range-min { left: 0; }
-.ui-slider-horizontal .ui-slider-range-max { right: 0; }
-
-.ui-slider-vertical { width: .8em; height: 100px; }
-.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
-.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
-.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
-.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
- * jQuery UI Tabs @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Tabs#theming
- */
-.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
-.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
-.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
-.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
-.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
-.ui-tabs .ui-tabs-hide { display: none !important; }
-/*
- * jQuery UI CSS Framework @VERSION
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- *
- * To view and modify this theme, visit http://jqueryui.com/themeroller/
- */
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; }
-.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; }
-.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; }
-.ui-widget-content a { color: #222222/*{fcContent}*/; }
-.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; }
-.ui-widget-header a { color: #222222/*{fcHeader}*/; }
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; }
-.ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; }
-.ui-widget :active { outline: none; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }
-.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }
-.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; }
-.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; }
-.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; }
-.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; }
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; }
-.ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; }
-.ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; }
-.ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }
-.ui-corner-top { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; }
-.ui-corner-bottom { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }
-.ui-corner-right {  -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }
-.ui-corner-left { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; }
-.ui-corner-all { -moz-border-radius: 4px/*{cornerRadius}*/; -webkit-border-radius: 4px/*{cornerRadius}*/; border-radius: 4px/*{cornerRadius}*/; }
-
-/* Overlays */
-.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; }
-.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; }
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/js/libs/jquery-ui.min.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,784 +0,0 @@
-/*!
- * jQuery UI 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI
- */
-(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.13",
-keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();
-b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,
-"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",
-function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,
-outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,"tabindex"),d=isNaN(b);
-return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=
-0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery);
-;/*!
- * jQuery UI Widget 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Widget
- */
-(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)b(d).triggerHandler("remove");k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,
-a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.charAt(0)==="_")return h;
-e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,
-this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},
-widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},
-enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
-;/*!
- * jQuery UI Mouse 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Mouse
- *
- * Depends:
- *	jquery.ui.widget.js
- */
-(function(b){var d=false;b(document).mousedown(function(){d=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(c){return a._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(true===b.data(c.target,a.widgetName+".preventClickEvent")){b.removeData(c.target,a.widgetName+".preventClickEvent");c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
-this.widgetName)},_mouseDown:function(a){if(!d){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var c=this,f=a.which==1,g=typeof this.options.cancel=="string"?b(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!f||g||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=
-this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();return true}}true===b.data(a.target,this.widgetName+".preventClickEvent")&&b.removeData(a.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(e){return c._mouseMove(e)};this._mouseUpDelegate=function(e){return c._mouseUp(e)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return d=true}},_mouseMove:function(a){if(b.browser.msie&&
-!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=
-false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
-;/*
- * jQuery UI Position 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Position
- */
-(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY,
-left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+=
-k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-=
-m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left=
-d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+=
-a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b),
-g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery);
-;/*
- * jQuery UI Draggable 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Draggables
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.mouse.js
- *	jquery.ui.widget.js
- */
-(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper==
-"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b=
-this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;d(b.iframeFix===true?"iframe":b.iframeFix).each(function(){d('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")});return true},_mouseStart:function(a){var b=this.options;this.helper=
-this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});
-this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);
-this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=
-d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",
-a)!==false&&this._clear();return false},_mouseUp:function(a){this.options.iframeFix===true&&d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});return d.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==
-a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a=
-{left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&
-d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=
-this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions=
-{width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[(a.containment=="document"?0:d(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(a.containment=="document"?0:d(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(a.containment=="document"?0:d(window).scrollLeft())+
-d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){a=d(a.containment);var b=a[0];if(b){a.offset();var c=d(b).css("overflow")!="hidden";this.containment=[(parseInt(d(b).css("borderLeftWidth"),
-10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0),(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0),(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-
-this.margins.top-this.margins.bottom];this.relative_container=a}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&
-d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],
-this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,h=a.pageY;if(this.originalPosition){var g;if(this.containment){if(this.relative_container){g=this.relative_container.offset();g=[this.containment[0]+g.left,this.containment[1]+g.top,this.containment[2]+g.left,this.containment[3]+g.top]}else g=this.containment;if(a.pageX-this.offset.click.left<g[0])e=g[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<g[1])h=g[1]+this.offset.click.top;
-if(a.pageX-this.offset.click.left>g[2])e=g[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>g[3])h=g[3]+this.offset.click.top}if(b.grid){h=this.originalPageY+Math.round((h-this.originalPageY)/b.grid[1])*b.grid[1];h=g?!(h-this.offset.click.top<g[1]||h-this.offset.click.top>g[3])?h:!(h-this.offset.click.top<g[1])?h-b.grid[1]:h+b.grid[1]:h;e=this.originalPageX+Math.round((e-this.originalPageX)/b.grid[0])*b.grid[0];e=g?!(e-this.offset.click.left<g[0]||e-this.offset.click.left>g[2])?e:!(e-this.offset.click.left<
-g[0])?e-b.grid[0]:e+b.grid[0]:e}}return{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop()),left:e-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");
-this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(a,b,c){c=c||this._uiHash();d.ui.plugin.call(this,a,[b,c]);if(a=="drag")this.positionAbs=this._convertPositionTo("absolute");return d.Widget.prototype._trigger.call(this,a,b,c)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});d.extend(d.ui.draggable,{version:"1.8.13"});
-d.ui.plugin.add("draggable","connectToSortable",{start:function(a,b){var c=d(this).data("draggable"),f=c.options,e=d.extend({},b,{item:c.element});c.sortables=[];d(f.connectToSortable).each(function(){var h=d.data(this,"sortable");if(h&&!h.options.disabled){c.sortables.push({instance:h,shouldRevert:h.options.revert});h.refreshPositions();h._trigger("activate",a,e)}})},stop:function(a,b){var c=d(this).data("draggable"),f=d.extend({},b,{item:c.element});d.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=
-0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(a);this.instance.options.helper=this.instance.options._helper;c.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",a,f)}})},drag:function(a,b){var c=d(this).data("draggable"),f=this;d.each(c.sortables,function(){this.instance.positionAbs=
-c.positionAbs;this.instance.helperProportions=c.helperProportions;this.instance.offset.click=c.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=d(f).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return b.helper[0]};a.target=this.instance.currentItem[0];this.instance._mouseCapture(a,
-true);this.instance._mouseStart(a,true,true);this.instance.offset.click.top=c.offset.click.top;this.instance.offset.click.left=c.offset.click.left;this.instance.offset.parent.left-=c.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=c.offset.parent.top-this.instance.offset.parent.top;c._trigger("toSortable",a);c.dropped=this.instance.element;c.currentItem=c.element;this.instance.fromOutside=c}this.instance.currentItem&&this.instance._mouseDrag(a)}else if(this.instance.isOver){this.instance.isOver=
-0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",a,this.instance._uiHash(this.instance));this.instance._mouseStop(a,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&&this.instance.placeholder.remove();c._trigger("fromSortable",a);c.dropped=false}})}});d.ui.plugin.add("draggable","cursor",{start:function(){var a=d("body"),b=d(this).data("draggable").options;if(a.css("cursor"))b._cursor=
-a.css("cursor");a.css("cursor",b.cursor)},stop:function(){var a=d(this).data("draggable").options;a._cursor&&d("body").css("cursor",a._cursor)}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");
-if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop+c.scrollSpeed;else if(a.pageY-b.overflowOffset.top<c.scrollSensitivity)b.scrollParent[0].scrollTop=
-f=b.scrollParent[0].scrollTop-c.scrollSpeed;if(!c.axis||c.axis!="y")if(b.overflowOffset.left+b.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft+c.scrollSpeed;else if(a.pageX-b.overflowOffset.left<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft-c.scrollSpeed}else{if(!c.axis||c.axis!="x")if(a.pageY-d(document).scrollTop()<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()-c.scrollSpeed);
-else if(d(window).height()-(a.pageY-d(document).scrollTop())<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()+c.scrollSpeed);if(!c.axis||c.axis!="y")if(a.pageX-d(document).scrollLeft()<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()-c.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()+c.scrollSpeed)}f!==false&&d.ui.ddmanager&&!c.dropBehaviour&&d.ui.ddmanager.prepareOffsets(b,
-a)}});d.ui.plugin.add("draggable","snap",{start:function(){var a=d(this).data("draggable"),b=a.options;a.snapElements=[];d(b.snap.constructor!=String?b.snap.items||":data(draggable)":b.snap).each(function(){var c=d(this),f=c.offset();this!=a.element[0]&&a.snapElements.push({item:this,width:c.outerWidth(),height:c.outerHeight(),top:f.top,left:f.left})})},drag:function(a,b){for(var c=d(this).data("draggable"),f=c.options,e=f.snapTolerance,h=b.offset.left,g=h+c.helperProportions.width,n=b.offset.top,
-o=n+c.helperProportions.height,i=c.snapElements.length-1;i>=0;i--){var j=c.snapElements[i].left,l=j+c.snapElements[i].width,k=c.snapElements[i].top,m=k+c.snapElements[i].height;if(j-e<h&&h<l+e&&k-e<n&&n<m+e||j-e<h&&h<l+e&&k-e<o&&o<m+e||j-e<g&&g<l+e&&k-e<n&&n<m+e||j-e<g&&g<l+e&&k-e<o&&o<m+e){if(f.snapMode!="inner"){var p=Math.abs(k-o)<=e,q=Math.abs(m-n)<=e,r=Math.abs(j-g)<=e,s=Math.abs(l-h)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:k-c.helperProportions.height,left:0}).top-c.margins.top;
-if(q)b.position.top=c._convertPositionTo("relative",{top:m,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:j-c.helperProportions.width}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:l}).left-c.margins.left}var t=p||q||r||s;if(f.snapMode!="outer"){p=Math.abs(k-n)<=e;q=Math.abs(m-o)<=e;r=Math.abs(j-h)<=e;s=Math.abs(l-g)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:k,left:0}).top-c.margins.top;if(q)b.position.top=
-c._convertPositionTo("relative",{top:m-c.helperProportions.height,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:j}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:l-c.helperProportions.width}).left-c.margins.left}if(!c.snapElements[i].snapping&&(p||q||r||s||t))c.options.snap.snap&&c.options.snap.snap.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[i].item}));c.snapElements[i].snapping=p||q||r||s||t}else{c.snapElements[i].snapping&&
-c.options.snap.release&&c.options.snap.release.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[i].item}));c.snapElements[i].snapping=false}}}});d.ui.plugin.add("draggable","stack",{start:function(){var a=d(this).data("draggable").options;a=d.makeArray(d(a.stack)).sort(function(c,f){return(parseInt(d(c).css("zIndex"),10)||0)-(parseInt(d(f).css("zIndex"),10)||0)});if(a.length){var b=parseInt(a[0].style.zIndex)||0;d(a).each(function(c){this.style.zIndex=b+c});this[0].style.zIndex=b+a.length}}});
-d.ui.plugin.add("draggable","zIndex",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("zIndex"))b._zIndex=a.css("zIndex");a.css("zIndex",b.zIndex)},stop:function(a,b){a=d(this).data("draggable").options;a._zIndex&&d(b.helper).css("zIndex",a._zIndex)}})})(jQuery);
-;/*
- * jQuery UI Droppable 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Droppables
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.widget.js
- *	jquery.ui.mouse.js
- *	jquery.ui.draggable.js
- */
-(function(d){d.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,b=a.accept;this.isover=0;this.isout=1;this.accept=d.isFunction(b)?b:function(c){return c.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};d.ui.ddmanager.droppables[a.scope]=d.ui.ddmanager.droppables[a.scope]||[];d.ui.ddmanager.droppables[a.scope].push(this);
-a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=d.ui.ddmanager.droppables[this.options.scope],b=0;b<a.length;b++)a[b]==this&&a.splice(b,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,b){if(a=="accept")this.accept=d.isFunction(b)?b:function(c){return c.is(b)};d.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&
-this.element.addClass(this.options.activeClass);b&&this._trigger("activate",a,this.ui(b))},_deactivate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);b&&this._trigger("deactivate",a,this.ui(b))},_over:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass);
-this._trigger("over",a,this.ui(b))}},_out:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",a,this.ui(b))}},_drop:function(a,b){var c=b||d.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return false;var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g=
-d.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==c.options.scope&&g.accept.call(g.element[0],c.currentItem||c.element)&&d.ui.intersect(c,d.extend(g,{offset:g.element.offset()}),g.options.tolerance)){e=true;return false}});if(e)return false;if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop",
-a,this.ui(c));return this.element}return false},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}});d.extend(d.ui.droppable,{version:"1.8.13"});d.ui.intersect=function(a,b,c){if(!b.offset)return false;var e=(a.positionAbs||a.position.absolute).left,g=e+a.helperProportions.width,f=(a.positionAbs||a.position.absolute).top,h=f+a.helperProportions.height,i=b.offset.left,k=i+b.proportions.width,j=b.offset.top,l=j+b.proportions.height;
-switch(c){case "fit":return i<=e&&g<=k&&j<=f&&h<=l;case "intersect":return i<e+a.helperProportions.width/2&&g-a.helperProportions.width/2<k&&j<f+a.helperProportions.height/2&&h-a.helperProportions.height/2<l;case "pointer":return d.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,j,i,b.proportions.height,b.proportions.width);case "touch":return(f>=j&&f<=l||h>=j&&h<=l||f<j&&h>l)&&(e>=
-i&&e<=k||g>=i&&g<=k||e<i&&g>k);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f<c.length;f++)if(!(c[f].options.disabled||a&&!c[f].accept.call(c[f].element[0],a.currentItem||a.element))){for(var h=0;h<g.length;h++)if(g[h]==c[f].element[0]){c[f].proportions.height=0;continue a}c[f].visible=c[f].element.css("display")!=
-"none";if(c[f].visible){e=="mousedown"&&c[f]._activate.call(c[f],b);c[f].offset=c[f].element.offset();c[f].proportions={width:c[f].element[0].offsetWidth,height:c[f].element[0].offsetHeight}}}},drop:function(a,b){var c=false;d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&d.ui.intersect(a,this,this.options.tolerance))c=c||this._drop.call(this,b);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem||
-a.element)){this.isout=1;this.isover=0;this._deactivate.call(this,b)}}});return c},drag:function(a,b){a.options.refreshPositions&&d.ui.ddmanager.prepareOffsets(a,b);d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var c=d.ui.intersect(a,this,this.options.tolerance);if(c=!c&&this.isover==1?"isout":c&&this.isover==0?"isover":null){var e;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){e=
-d.data(g[0],"droppable");e.greedyChild=c=="isover"?1:0}}if(e&&c=="isover"){e.isover=0;e.isout=1;e._out.call(e,b)}this[c]=1;this[c=="isout"?"isover":"isout"]=0;this[c=="isover"?"_over":"_out"].call(this,b);if(e&&c=="isout"){e.isout=0;e.isover=1;e._over.call(e,b)}}}})}}})(jQuery);
-;/*
- * jQuery UI Resizable 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Resizables
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.mouse.js
- *	jquery.ui.widget.js
- */
-(function(e){e.widget("ui.resizable",e.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");e.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,
-_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&e.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),
-top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=
-this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",
-nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d<c.length;d++){var f=e.trim(c[d]),g=e('<div class="ui-resizable-handle '+("ui-resizable-"+f)+'"></div>');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor==
-String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection();
-this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){e(this).removeClass("ui-resizable-autohide");b._handles.show()}},function(){if(!a.disabled)if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();
-var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=
-false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});
-this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff=
-{width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];
-if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=
-false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);
-c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,
-d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top=a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=l(b.height)&&a.maxHeight&&a.maxHeight<b.height,g=l(b.width)&&a.minWidth&&a.minWidth>b.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=
-a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=
-this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var d=[c.css("borderTopWidth"),c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],f=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=e.map(d,function(g,h){g=parseInt(g,10)||0;h=parseInt(f[h],10)||0;return g+h})}e.browser.msie&&(e(b).is(":hidden")||e(b).parents(":hidden").length)||
-c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=this.element.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-
-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,
-arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,
-element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.13"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};
-if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),
-p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,
-c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),
-g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),
-10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,
-top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;
-g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:
-0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));
-if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&
-!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost==
-"string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;
-var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,
-10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery);
-;/*
- * jQuery UI Selectable 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Selectables
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.mouse.js
- *	jquery.ui.widget.js
- */
-(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),
-selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,
-c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting",
-c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d=
-this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");
-a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&
-!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=
-e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.13"})})(jQuery);
-;/*
- * jQuery UI Sortable 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Sortables
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.mouse.js
- *	jquery.ui.widget.js
- */
-(function(d){d.widget("ui.sortable",d.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var a=this.options;this.containerCache={};this.element.addClass("ui-sortable");
-this.refresh();this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a===
-"disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&
-!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,
-left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};
-this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=
-document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);
-return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop+b.scrollSpeed;else if(a.pageY-this.overflowOffset.top<
-b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop-b.scrollSpeed;if(this.overflowOffset.left+this.scrollParent[0].offsetWidth-a.pageX<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft+b.scrollSpeed;else if(a.pageX-this.overflowOffset.left<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft-b.scrollSpeed}else{if(a.pageY-d(document).scrollTop()<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()-
-b.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()+b.scrollSpeed);if(a.pageX-d(document).scrollLeft()<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()-b.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()+b.scrollSpeed)}c!==false&&d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,
-a)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(b=this.items.length-1;b>=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],
-e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();
-c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):
-this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,
-dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},
-toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+j<k&&b+l>g&&b+l<h;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||
-this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?j:g<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<h&&i<e+this.helperProportions.height/2&&f-this.helperProportions.height/2<k},_intersectsWithPointer:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left,a.width);b=b&&a;a=this._getDragVerticalDirection();
-var c=this._getDragHorizontalDirection();if(!b)return false;return this.floating?c&&c=="right"||a=="down"?2:1:a&&(a=="down"?2:1)},_intersectsWithSides:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width);var c=this._getDragVerticalDirection(),e=this._getDragHorizontalDirection();return this.floating&&e?e=="right"&&a||e=="left"&&!a:c&&(c=="down"&&b||c=="up"&&!b)},
-_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();
-if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),
-this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(a){this.items=[];this.containers=[this];var b=this.items,c=[[d.isFunction(this.options.items)?this.options.items.call(this.element[0],a,{item:this.currentItem}):d(this.options.items,this.element),
-this]],e=this._connectWith();if(e)for(var f=e.length-1;f>=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h<g;h++){i=d(e[h]);i.data("sortable-item",a);b.push({item:i,instance:a,width:0,height:0,left:0,top:0})}}},refreshPositions:function(a){if(this.offsetParent&&
-this.helper)this.offset.parent=this._getParentOffset();for(var b=this.items.length-1;b>=0;b--){var c=this.items[b];if(!(c.instance!=this.currentContainer&&this.currentContainer&&c.item[0]!=this.currentItem[0])){var e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=
-this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=
-d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||
-0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",
-a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-
-f)<b){b=Math.abs(h-f);e=this.items[g]}}if(e||this.options.dropOnEmpty){this.currentContainer=this.containers[c];e?this._rearrange(a,e,null,true):this._rearrange(a,null,this.containers[c].element,true);this._trigger("change",a,this._uiHash());this.containers[c]._trigger("change",a,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}}},_createHelper:function(a){var b=
-this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a,this.currentItem])):b.helper=="clone"?this.currentItem.clone():this.currentItem;a.parents("body").length||d(b.appendTo!="parent"?b.appendTo:this.currentItem[0].parentNode)[0].appendChild(a[0]);if(a[0]==this.currentItem[0])this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")};if(a[0].style.width==
-""||b.forceHelperSize)a.width(this.currentItem.width());if(a[0].style.height==""||b.forceHelperSize)a.height(this.currentItem.height());return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=
-this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a=
-{top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),
-10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?
-document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)){var b=d(a.containment)[0];a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),
-10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(a,b){if(!b)b=
-this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&
-this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0]))this.offset.relative=this._getRelativeOffset();
-var f=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])f=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-
-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;f=this.originalPageX+Math.round((f-this.originalPageX)/b.grid[0])*b.grid[0];f=this.containment?!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:!(f-this.offset.click.left<this.containment[0])?f-b.grid[0]:f+b.grid[0]:f}}return{top:g-
-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())}},_rearrange:function(a,b,c,e){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],
-this.direction=="down"?b.item[0]:b.item[0].nextSibling);this.counter=this.counter?++this.counter:1;var f=this,g=this.counter;window.setTimeout(function(){g==f.counter&&f.refreshPositions(!e)},0)},_clear:function(a,b){this.reverting=false;var c=[];!this._noFinalSort&&this.currentItem[0].parentNode&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var e in this._storedCSS)if(this._storedCSS[e]=="auto"||this._storedCSS[e]=="static")this._storedCSS[e]=
-"";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!b&&c.push(function(f){this._trigger("receive",f,this._uiHash(this.fromOutside))});if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!b)c.push(function(f){this._trigger("update",f,this._uiHash())});if(!d.ui.contains(this.element[0],this.currentItem[0])){b||c.push(function(f){this._trigger("remove",
-f,this._uiHash())});for(e=this.containers.length-1;e>=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,
-this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",
-a,this._uiHash());for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}return false}b||this._trigger("beforeStop",a,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!b){for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){d.Widget.prototype._trigger.apply(this,arguments)===false&&this.cancel()},
-_uiHash:function(a){var b=a||this;return{helper:b.helper,placeholder:b.placeholder||d([]),position:b.position,originalPosition:b.originalPosition,offset:b.positionAbs,item:b.currentItem,sender:a?a.element:null}}});d.extend(d.ui.sortable,{version:"1.8.13"})})(jQuery);
-;/*
- * jQuery UI Accordion 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Accordion
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.widget.js
- */
-(function(c){c.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");
-a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
-if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",
-function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a=
-this.options;if(a.icons){c("<span></span>").addClass("ui-icon "+a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex");
-this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons();
-b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target);
-a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+
-c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options;
-if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);
-if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(),
-e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight||
-e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",
-"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.13",
-animations:{slide:function(a,b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);
-f[i]={value:j[1],unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",
-paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery);
-;/*
- * jQuery UI Autocomplete 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Autocomplete
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.widget.js
- *	jquery.ui.position.js
- */
-(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){g=
-false;var f=d.ui.keyCode;switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=
-a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};
-this.menu=d("<ul></ul>").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&&
-a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"),i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");
-d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&&
-b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source=
-this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)!==false)return this._search(a)},_search:function(a){this.pending++;this.element.addClass("ui-autocomplete-loading");this.source({term:a},this.response)},_response:function(a){if(!this.options.disabled&&a&&a.length){a=this._normalize(a);this._suggest(a);this._trigger("open")}else this.close();
-this.pending--;this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this.menu.element.hide();this.menu.deactivate();this._trigger("close",a)}},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(a){if(a.length&&a[0].label&&a[0].value)return a;return d.map(a,function(b){if(typeof b==="string")return{label:b,value:b};return d.extend({label:b.label||
-b.value,value:b.value||b.label},b)})},_suggest:function(a){var b=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(b,a);this.menu.deactivate();this.menu.refresh();b.show();this._resizeMenu();b.position(d.extend({of:this.element},this.options.position));this.options.autoFocus&&this.menu.next(new d.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth(),this.element.outerWidth()))},_renderMenu:function(a,b){var g=this;
-d.each(b,function(c,f){g._renderItem(a,f)})},_renderItem:function(a,b){return d("<li></li>").data("item.autocomplete",b).append(d("<a></a>").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,
-"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery);
-(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",
--1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.scrollTop(),c=this.element.height();if(b<0)this.element.scrollTop(g+b);else b>=c&&this.element.scrollTop(g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");
-this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0);e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b,
-this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e,g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||
-this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||
-this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[d.fn.prop?"prop":"attr"]("scrollHeight")},select:function(e){this._trigger("selected",e,{item:this.active})}})})(jQuery);
-;/*
- * jQuery UI Button 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Button
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.widget.js
- */
-(function(a){var g,i=function(b){a(":ui-button",b.target.form).each(function(){var c=a(this).data("button");setTimeout(function(){c.refresh()},1)})},h=function(b){var c=b.name,d=b.form,f=a([]);if(c)f=d?a(d).find("[name='"+c+"']"):a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form});return f};a.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",
-i);if(typeof this.options.disabled!=="boolean")this.options.disabled=this.element.attr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var b=this,c=this.options,d=this.type==="checkbox"||this.type==="radio",f="ui-state-hover"+(!d?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",
-function(){if(!c.disabled){a(this).addClass("ui-state-hover");this===g&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){c.disabled||a(this).removeClass(f)}).bind("focus.button",function(){a(this).addClass("ui-state-focus")}).bind("blur.button",function(){a(this).removeClass("ui-state-focus")}).bind("click.button",function(e){c.disabled&&e.stopImmediatePropagation()});d&&this.element.bind("change.button",function(){b.refresh()});if(this.type==="checkbox")this.buttonElement.bind("click.button",
-function(){if(c.disabled)return false;a(this).toggleClass("ui-state-active");b.buttonElement.attr("aria-pressed",b.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed",true);var e=b.element[0];h(e).not(e).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",
-function(){if(c.disabled)return false;a(this).addClass("ui-state-active");g=this;a(document).one("mouseup",function(){g=null})}).bind("mouseup.button",function(){if(c.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(e){if(c.disabled)return false;if(e.keyCode==a.ui.keyCode.SPACE||e.keyCode==a.ui.keyCode.ENTER)a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(e){e.keyCode===
-a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",c.disabled)},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type==="radio"){var b=this.element.parents().filter(":last"),c="label[for="+this.element.attr("id")+"]";this.buttonElement=b.find(c);if(!this.buttonElement.length){b=b.length?b.siblings():this.element.siblings();this.buttonElement=b.filter(c);
-if(!this.buttonElement.length)this.buttonElement=b.find(c)}this.element.addClass("ui-helper-hidden-accessible");(b=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active  ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());
-this.hasTitle||this.buttonElement.removeAttr("title");a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")h(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed",
-true):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"),
-c=a("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,f=d.primary&&d.secondary,e=[];if(d.primary||d.secondary){if(this.options.text)e.push("ui-button-text-icon"+(f?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>");d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>");if(!this.options.text){e.push(f?"ui-button-icons-only":
-"ui-button-icon-only");this.hasTitle||b.attr("title",c)}}else e.push("ui-button-text-only");b.addClass(e.join(" "))}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()},
-destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery);
-;/*
- * jQuery UI Dialog 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Dialog
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.widget.js
- *  jquery.ui.button.js
- *	jquery.ui.draggable.js
- *	jquery.ui.mouse.js
- *	jquery.ui.position.js
- *	jquery.ui.resizable.js
- */
-(function(c,l){var m={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},n={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},o=c.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,
-position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||"&#160;",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+
-b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),
-h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",
-e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");
-a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==
-b.uiDialog[0]){e=c(this).css("z-index");isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=
-1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===
-f[0]&&e.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,
-function(){return!(d=true)});if(d){c.each(a,function(f,h){h=c.isFunction(h)?{click:h,text:f}:h;var i=c('<button type="button"></button>').click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.each(h,function(j,k){if(j!=="click")j in o?i[j](k):i.attr(j,k)});c.fn.button&&i.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",
-handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,
-originalSize:f.originalSize,position:f.position,size:f.size}}a=a===l?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",
-f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):
-[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);
-if(g in m)e=true;if(g in n)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):
-e.removeClass("ui-dialog-disabled");break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||"&#160;"));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=
-this.options,b,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-
-b,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.13",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),
-create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()<c.ui.dialog.overlay.maxZ)return false})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),
-height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);
-b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,
-function(){a=a.add(this)});a.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
-;/*
- * jQuery UI Slider 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Slider
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.mouse.js
- *	jquery.ui.widget.js
- */
-(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var b=this,a=this.options,c=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f=a.values&&a.values.length||1,e=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
-this.orientation+" ui-widget ui-widget-content ui-corner-all"+(a.disabled?" ui-slider-disabled ui-disabled":""));this.range=d([]);if(a.range){if(a.range===true){if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}this.range=d("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(a.range==="min"||a.range==="max"?" ui-slider-range-"+a.range:""))}for(var j=c.length;j<f;j+=1)e.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
-this.handles=c.add(d(e.join("")).appendTo(b.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle",
-g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!b.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");i=b._start(g,l);if(i===false)return}break}m=b.options.step;i=b.options.values&&b.options.values.length?
-(h=b.values(l)):(h=b.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=b._valueMin();break;case d.ui.keyCode.END:h=b._valueMax();break;case d.ui.keyCode.PAGE_UP:h=b._trimAlignValue(i+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=b._trimAlignValue(i-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===b._valueMax())return;h=b._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===b._valueMin())return;h=b._trimAlignValue(i-
-m);break}b._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(g,k);b._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();
-return this},_mouseCapture:function(b){var a=this.options,c,f,e,j,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(a.range===true&&this.values(1)===a.min){g+=1;e=d(this.handles[g])}if(this._start(b,g)===false)return false;
-this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();a=e.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-e.width()/2,top:b.pageY-a.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(b){var a=
-this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a;if(this.orientation==="horizontal"){a=
-this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);
-c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var f;if(this.options.values&&this.options.values.length){f=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>f||a===1&&c<f))c=f;if(c!==this.values(a)){f=this.values();f[a]=c;b=this._trigger("slide",b,{handle:this.handles[a],value:c,values:f});this.values(a?0:1);b!==false&&this.values(a,c,true)}}else if(c!==this.value()){b=this._trigger("slide",b,{handle:this.handles[a],value:c});
-b!==false&&this.value(c)}},_stop:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);c.values=this.values()}this._trigger("stop",b,c)},_change:function(b,a){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);c.values=this.values()}this._trigger("change",b,c)}},value:function(b){if(arguments.length){this.options.value=
-this._trimAlignValue(b);this._refreshValue();this._change(null,0)}else return this._value()},values:function(b,a){var c,f,e;if(arguments.length>1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e<c.length;e+=1){c[e]=this._trimAlignValue(f[e]);this._change(null,e)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(b):
-this.value();else return this._values()},_setOption:function(b,a){var c,f=0;if(d.isArray(this.options.values))f=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(b){case "disabled":if(a){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation();
-this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var b=this.options.value;return b=this._trimAlignValue(b)},_values:function(b){var a,c;if(arguments.length){a=this.options.values[b];
-return a=this._trimAlignValue(a)}else{a=this.options.values.slice();for(c=0;c<a.length;c+=1)a[c]=this._trimAlignValue(a[c]);return a}},_trimAlignValue:function(b){if(b<=this._valueMin())return this._valueMin();if(b>=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},
-_refreshValue:function(){var b=this.options.range,a=this.options,c=this,f=!this._animateOff?a.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},a.animate);
-if(h===1)c.range[f?"animate":"css"]({width:e-g+"%"},{queue:false,duration:a.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},a.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:a.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1,
-1)[f?"animate":"css"]({width:e+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.13"})})(jQuery);
-;/*
- * jQuery UI Tabs 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Tabs
- *
- * Depends:
- *	jquery.ui.core.js
- *	jquery.ui.widget.js
- */
-(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&&
-e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=
-d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]||
-(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
-this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected=
-this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");
-if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));
-this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+
-g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",
-function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};
-this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected=
--1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";
-d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=
-d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b,
-e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);
-j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();
-if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=b}),function(h){return h>=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null,
-this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this},
-load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c,
-"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},
-url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.13"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k<a.anchors.length?k:0)},b);j&&j.stopPropagation()});e=a._unrotate||(a._unrotate=!e?function(j){j.clientX&&
-a.rotate(null)}:function(){t=c.selected;h()});if(b){this.element.bind("tabsshow",h);this.anchors.bind(c.event+".tabs",e);h()}else{clearTimeout(a.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(c.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
-;/*
- * jQuery UI Datepicker 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker
- *
- * Depends:
- *	jquery.ui.core.js
- */
-(function(d,B){function M(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=
-"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su",
-"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",
-minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=N(d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function N(a){return a.delegate("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a",
-"mouseout",function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).delegate("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a","mouseover",function(){if(!d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
-d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==B)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.13"}});var z=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},
-_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){H(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,
-b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",
-function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);
-if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);
-return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);
-if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');
-this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/
-2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,
-"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=
-false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=
-true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;
-for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&
-this._hideDatepicker();var h=this._getDateDatepicker(a,true),i=this._getMinMaxDate(e,"min"),g=this._getMinMaxDate(e,"max");H(e.settings,f);if(i!==null&&f.dateFormat!==B&&f.minDate===B)e.settings.minDate=this._formatDate(e,i);if(g!==null&&f.dateFormat!==B&&f.maxDate===B)e.settings.maxDate=this._formatDate(e,g);this._attachments(d(a),e);this._autoSize(e);this._setDate(e,h);this._updateAlternate(e);this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=
-this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();
-c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass+":not(."+d.datepicker._currentClass+")",b.dpDiv);c[0]?d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]):d.datepicker._hideDatepicker();return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,
-"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,
--7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();
-a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));var c=String.fromCharCode(a.charCode==B?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);
-d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");H(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=
-null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=
-null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],
-top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing=true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=d.datepicker._getBorders(a.dpDiv);J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");
-c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");
-a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},
-_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-
-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=
-null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},
-_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):
-0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=
-false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=
-d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);
-else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=
-a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,
-g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=A+1<a.length&&a.charAt(A+1)==p)&&A++;return p},m=function(p){var C=o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"&&C?4:p=="o"?3:2)+"}");p=b.substring(s).match(p);if(!p)throw"Missing number at position "+s;s+=p[0].length;return parseInt(p[0],10)},n=function(p,C,K){p=d.map(o(p)?K:C,function(w,x){return[[x,w]]}).sort(function(w,x){return-(w[1].length-x[1].length)});var E=-1;d.each(p,function(w,x){w=
-x[1];if(b.substr(s,w.length).toLowerCase()==w.toLowerCase()){E=x[0];s+=w.length;return false}});if(E!=-1)return E+1;else throw"Unknown name at position "+s;},r=function(){if(b.charAt(s)!=a.charAt(A))throw"Unexpected literal at position "+s;s++},s=0,A=0;A<a.length;A++)if(k)if(a.charAt(A)=="'"&&!o("'"))k=false;else r();else switch(a.charAt(A)){case "d":l=m("d");break;case "D":n("D",f,h);break;case "o":u=m("o");break;case "m":j=m("m");break;case "M":j=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=
-new Date(m("@"));c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "'":if(o("'"))r();else k=true;break;default:r()}if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=
-c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,
-h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+1<a.length&&a.charAt(k+1)==o)&&k++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},j=function(o,m,n,r){return i(o)?r[m]:n[m]},l="",u=false;if(b)for(var k=0;k<a.length;k++)if(u)if(a.charAt(k)=="'"&&!i("'"))u=false;else l+=a.charAt(k);else switch(a.charAt(k)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=j("D",b.getDay(),e,f);break;
-case "o":l+=g("o",(b.getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5,3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=j("M",b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(k)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+
-1)==h)&&f++;return h},f=0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==B?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,
-f,h;f=h=this._getDefaultDate(a);var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,
-c){var e=function(h){var i=new Date;i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,j=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,k=u.exec(h);k;){switch(k[2]||"d"){case "d":case "D":g+=parseInt(k[1],10);break;case "w":case "W":g+=parseInt(k[1],10)*7;break;case "m":case "M":l+=
-parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break;case "y":case "Y":j+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break}k=u.exec(h)}return new Date(j,l,g)};if(b=(b=b==null||b===""?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):new Date(b.getTime()))&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;
-a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||
-a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?
-new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&n<k?k:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));
-n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+z+".datepicker._adjustDate('#"+a.id+"', -"+j+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,
-g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+z+".datepicker._adjustDate('#"+a.id+"', +"+j+", 'M');\" title=\""+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&
-a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+z+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,r)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+
-z+".datepicker._gotoToday('#"+a.id+"');\">"+j+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),A=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),C=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x<i[0];x++){for(var O=
-"",G=0;G<i[1];G++){var P=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",y="";if(l){y+='<div class="ui-datepicker-group';if(i[1]>1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&x==0?c?
-f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,A,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var D=j?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var q=(t+h)%7;D+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+r[q]+'">'+s[q]+"</span></th>"}y+=D+"</tr></thead><tbody>";D=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,
-D);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;D=l?6:Math.ceil((t+D)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q<D;Q++){y+="<tr>";var R=!j?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(q)+"</td>";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[q]):[true,""],F=q.getMonth()!=g,L=F&&!K||!I[0]||k&&q<k||o&&q>o;R+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(q.getTime()==P.getTime()&&g==a.selectedMonth&&
-a._keyEvent||E.getTime()==q.getTime()&&E.getTime()==P.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!C?"":" "+I[1]+(q.getTime()==u.getTime()?" "+this._currentClass:"")+(q.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!F||C)&&I[2]?' title="'+I[2]+'"':"")+(L?"":' onclick="DP_jQuery_'+z+".datepicker._selectDay('#"+a.id+"',"+q.getMonth()+","+q.getFullYear()+', this);return false;"')+">"+(F&&!C?"&#xa0;":L?'<span class="ui-state-default">'+q.getDate()+
-"</span>":'<a class="ui-state-default'+(q.getTime()==b.getTime()?" ui-state-highlight":"")+(q.getTime()==u.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+'" href="#">'+q.getDate()+"</a>")+"</td>";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}y+=R+"</tr>"}g++;if(g>11){g=0;m++}y+="</tbody></table>"+(l?"</div>"+(i[0]>0&&G==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':
-"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='<div class="ui-datepicker-title">',o="";if(h||!j)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+z+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+z+".datepicker._clickMonthYear('#"+
-a.id+"');\">";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(k+=o+(h||!(j&&l)?"&#xa0;":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?
-r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+z+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+z+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";a.yearshtml+="</select>";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=
-(h||!(j&&l)?"&#xa0;":"")+o;k+="</div>";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,
-"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,
-b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!=
-"string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));
-return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=function(a){if(!this.length)return this;if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&
-arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.13";window["DP_jQuery_"+z]=d})(jQuery);
-;/*
- * jQuery UI Progressbar 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Progressbar
- *
- * Depends:
- *   jquery.ui.core.js
- *   jquery.ui.widget.js
- */
-(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow");
-this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*
-this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.13"})})(jQuery);
-;/*
- * jQuery UI Effects 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/
- */
-jQuery.effects||function(f,j){function m(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1],
-16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return n.transparent;return n[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return m(b)}function o(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
-a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function p(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d=
-a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function l(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor",
-"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=m(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var n={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,
-0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,
-211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},q=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,
-d){if(f.isFunction(b)){d=b;b=null}return this.queue(function(){var e=f(this),g=e.attr("style")||" ",h=p(o.call(this)),r,v=e.attr("class");f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});r=p(o.call(this));e.attr("class",v);e.animate(u(h,r),{queue:false,duration:a,easding:b,complete:function(){f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments);f.dequeue(this)}})})};
-f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,
-[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.13",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case "top":b=
-0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});
-c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,
-a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(l(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);
-a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(l(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(l(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%",
-"pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*
-((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=
-e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=
-e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/
-h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*
-h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,
-e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
-;/*
- * jQuery UI Effects Blind 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Blind
- *
- * Depends:
- *	jquery.effects.core.js
- */
-(function(b){b.effects.blind=function(c){return this.queue(function(){var a=b(this),g=["position","top","bottom","left","right"],f=b.effects.setMode(a,c.options.mode||"hide"),d=c.options.direction||"vertical";b.effects.save(a,g);a.show();var e=b.effects.createWrapper(a).css({overflow:"hidden"}),h=d=="vertical"?"height":"width";d=d=="vertical"?e.height():e.width();f=="show"&&e.css(h,0);var i={};i[h]=f=="show"?d:0;e.animate(i,c.duration,c.options.easing,function(){f=="hide"&&a.hide();b.effects.restore(a,
-g);b.effects.removeWrapper(a);c.callback&&c.callback.apply(a[0],arguments);a.dequeue()})})}})(jQuery);
-;/*
- * jQuery UI Effects Bounce 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Bounce
- *
- * Depends:
- *	jquery.effects.core.js
- */
-(function(e){e.effects.bounce=function(b){return this.queue(function(){var a=e(this),l=["position","top","bottom","left","right"],h=e.effects.setMode(a,b.options.mode||"effect"),d=b.options.direction||"up",c=b.options.distance||20,m=b.options.times||5,i=b.duration||250;/show|hide/.test(h)&&l.push("opacity");e.effects.save(a,l);a.show();e.effects.createWrapper(a);var f=d=="up"||d=="down"?"top":"left";d=d=="up"||d=="left"?"pos":"neg";c=b.options.distance||(f=="top"?a.outerHeight({margin:true})/3:a.outerWidth({margin:true})/
-3);if(h=="show")a.css("opacity",0).css(f,d=="pos"?-c:c);if(h=="hide")c/=m*2;h!="hide"&&m--;if(h=="show"){var g={opacity:1};g[f]=(d=="pos"?"+=":"-=")+c;a.animate(g,i/2,b.options.easing);c/=2;m--}for(g=0;g<m;g++){var j={},k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing);c=h=="hide"?c*2:c/2}if(h=="hide"){g={opacity:0};g[f]=(d=="pos"?"-=":"+=")+c;a.animate(g,i/2,b.options.easing,function(){a.hide();e.effects.restore(a,l);e.effects.removeWrapper(a);
-b.callback&&b.callback.apply(this,arguments)})}else{j={};k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing,function(){e.effects.restore(a,l);e.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments)})}a.queue("fx",function(){a.dequeue()});a.dequeue()})}})(jQuery);
-;/*
- * jQuery UI Effects Clip 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Clip
- *
- * Depends:
- *	jquery.effects.core.js
- */
-(function(b){b.effects.clip=function(e){return this.queue(function(){var a=b(this),i=["position","top","bottom","left","right","height","width"],f=b.effects.setMode(a,e.options.mode||"hide"),c=e.options.direction||"vertical";b.effects.save(a,i);a.show();var d=b.effects.createWrapper(a).css({overflow:"hidden"});d=a[0].tagName=="IMG"?d:a;var g={size:c=="vertical"?"height":"width",position:c=="vertical"?"top":"left"};c=c=="vertical"?d.height():d.width();if(f=="show"){d.css(g.size,0);d.css(g.position,
-c/2)}var h={};h[g.size]=f=="show"?c:0;h[g.position]=f=="show"?0:c/2;d.animate(h,{queue:false,duration:e.duration,easing:e.options.easing,complete:function(){f=="hide"&&a.hide();b.effects.restore(a,i);b.effects.removeWrapper(a);e.callback&&e.callback.apply(a[0],arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Drop 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Drop
- *
- * Depends:
- *	jquery.effects.core.js
- */
-(function(c){c.effects.drop=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right","opacity"],e=c.effects.setMode(a,d.options.mode||"hide"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a);var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true})/2:a.outerWidth({margin:true})/2);if(e=="show")a.css("opacity",0).css(f,b=="pos"?-g:g);var i={opacity:e==
-"show"?1:0};i[f]=(e=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Explode 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Explode
- *
- * Depends:
- *	jquery.effects.core.js
- */
-(function(j){j.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode=a.options.mode=="toggle"?j(this).is(":visible")?"hide":"show":a.options.mode;var b=j(this).show().css("visibility","hidden"),g=b.offset();g.top-=parseInt(b.css("marginTop"),10)||0;g.left-=parseInt(b.css("marginLeft"),10)||0;for(var h=b.outerWidth(true),i=b.outerHeight(true),e=0;e<c;e++)for(var f=
-0;f<d;f++)b.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+
-e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery);
-;/*
- * jQuery UI Effects Fade 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Fade
- *
- * Depends:
- *	jquery.effects.core.js
- */
-(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Fold 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Fold
- *
- * Depends:
- *	jquery.effects.core.js
- */
-(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],
-10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery);
-;/*
- * jQuery UI Effects Highlight 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Highlight
- *
- * Depends:
- *	jquery.effects.core.js
- */
-(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&&
-this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Pulsate 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Pulsate
- *
- * Depends:
- *	jquery.effects.core.js
- */
-(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c<times;c++){b.animate({opacity:animateTo},duration,a.options.easing);animateTo=(animateTo+1)%2}b.animate({opacity:animateTo},duration,
-a.options.easing,function(){animateTo==0&&b.hide();a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()}).dequeue()})}})(jQuery);
-;/*
- * jQuery UI Effects Scale 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Scale
- *
- * Depends:
- *	jquery.effects.core.js
- */
-(function(c){c.effects.puff=function(b){return this.queue(function(){var a=c(this),e=c.effects.setMode(a,b.options.mode||"hide"),g=parseInt(b.options.percent,10)||150,h=g/100,i={height:a.height(),width:a.width()};c.extend(b.options,{fade:true,mode:e,percent:e=="hide"?g:100,from:e=="hide"?i:{height:i.height*h,width:i.width*h}});a.effect("scale",b.options,b.duration,b.callback);a.dequeue()})};c.effects.scale=function(b){return this.queue(function(){var a=c(this),e=c.extend(true,{},b.options),g=c.effects.setMode(a,
-b.options.mode||"effect"),h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:g=="hide"?0:100),i=b.options.direction||"both",f=b.options.origin;if(g!="effect"){e.origin=f||["middle","center"];e.restore=true}f={height:a.height(),width:a.width()};a.from=b.options.from||(g=="show"?{height:0,width:0}:f);h={y:i!="horizontal"?h/100:1,x:i!="vertical"?h/100:1};a.to={height:f.height*h.y,width:f.width*h.x};if(b.options.fade){if(g=="show"){a.from.opacity=0;a.to.opacity=1}if(g=="hide"){a.from.opacity=
-1;a.to.opacity=0}}e.from=a.from;e.to=a.to;e.mode=g;a.effect("size",e,b.duration,b.callback);a.dequeue()})};c.effects.size=function(b){return this.queue(function(){var a=c(this),e=["position","top","bottom","left","right","width","height","overflow","opacity"],g=["position","top","bottom","left","right","overflow","opacity"],h=["width","height","overflow"],i=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],k=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],
-p=c.effects.setMode(a,b.options.mode||"effect"),n=b.options.restore||false,m=b.options.scale||"both",l=b.options.origin,j={height:a.height(),width:a.width()};a.from=b.options.from||j;a.to=b.options.to||j;if(l){l=c.effects.getBaseline(l,j);a.from.top=(j.height-a.from.height)*l.y;a.from.left=(j.width-a.from.width)*l.x;a.to.top=(j.height-a.to.height)*l.y;a.to.left=(j.width-a.to.width)*l.x}var d={from:{y:a.from.height/j.height,x:a.from.width/j.width},to:{y:a.to.height/j.height,x:a.to.width/j.width}};
-if(m=="box"||m=="both"){if(d.from.y!=d.to.y){e=e.concat(f);a.from=c.effects.setTransition(a,f,d.from.y,a.from);a.to=c.effects.setTransition(a,f,d.to.y,a.to)}if(d.from.x!=d.to.x){e=e.concat(k);a.from=c.effects.setTransition(a,k,d.from.x,a.from);a.to=c.effects.setTransition(a,k,d.to.x,a.to)}}if(m=="content"||m=="both")if(d.from.y!=d.to.y){e=e.concat(i);a.from=c.effects.setTransition(a,i,d.from.y,a.from);a.to=c.effects.setTransition(a,i,d.to.y,a.to)}c.effects.save(a,n?e:g);a.show();c.effects.createWrapper(a);
-a.css("overflow","hidden").css(a.from);if(m=="content"||m=="both"){f=f.concat(["marginTop","marginBottom"]).concat(i);k=k.concat(["marginLeft","marginRight"]);h=e.concat(f).concat(k);a.find("*[width]").each(function(){child=c(this);n&&c.effects.save(child,h);var o={height:child.height(),width:child.width()};child.from={height:o.height*d.from.y,width:o.width*d.from.x};child.to={height:o.height*d.to.y,width:o.width*d.to.x};if(d.from.y!=d.to.y){child.from=c.effects.setTransition(child,f,d.from.y,child.from);
-child.to=c.effects.setTransition(child,f,d.to.y,child.to)}if(d.from.x!=d.to.x){child.from=c.effects.setTransition(child,k,d.from.x,child.from);child.to=c.effects.setTransition(child,k,d.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){n&&c.effects.restore(child,h)})})}a.animate(a.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){a.to.opacity===0&&a.css("opacity",a.from.opacity);p=="hide"&&a.hide();c.effects.restore(a,
-n?e:g);c.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Shake 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Shake
- *
- * Depends:
- *	jquery.effects.core.js
- */
-(function(d){d.effects.shake=function(a){return this.queue(function(){var b=d(this),j=["position","top","bottom","left","right"];d.effects.setMode(b,a.options.mode||"effect");var c=a.options.direction||"left",e=a.options.distance||20,l=a.options.times||3,f=a.duration||a.options.duration||140;d.effects.save(b,j);b.show();d.effects.createWrapper(b);var g=c=="up"||c=="down"?"top":"left",h=c=="up"||c=="left"?"pos":"neg";c={};var i={},k={};c[g]=(h=="pos"?"-=":"+=")+e;i[g]=(h=="pos"?"+=":"-=")+e*2;k[g]=
-(h=="pos"?"-=":"+=")+e*2;b.animate(c,f,a.options.easing);for(e=1;e<l;e++)b.animate(i,f,a.options.easing).animate(k,f,a.options.easing);b.animate(i,f,a.options.easing).animate(c,f/2,a.options.easing,function(){d.effects.restore(b,j);d.effects.removeWrapper(b);a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()});b.dequeue()})}})(jQuery);
-;/*
- * jQuery UI Effects Slide 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Slide
- *
- * Depends:
- *	jquery.effects.core.js
- */
-(function(c){c.effects.slide=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right"],f=c.effects.setMode(a,d.options.mode||"show"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a).css({overflow:"hidden"});var g=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var e=d.options.distance||(g=="top"?a.outerHeight({margin:true}):a.outerWidth({margin:true}));if(f=="show")a.css(g,b=="pos"?isNaN(e)?"-"+e:-e:e);
-var i={};i[g]=(f=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+e;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){f=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Transfer 1.8.13
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Transfer
- *
- * Depends:
- *	jquery.effects.core.js
- */
-(function(e){e.effects.transfer=function(a){return this.queue(function(){var b=e(this),c=e(a.options.to),d=c.offset();c={top:d.top,left:d.left,height:c.innerHeight(),width:c.innerWidth()};d=b.offset();var f=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments);
-b.dequeue()})})}})(jQuery);
-;
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/js/libs/jquery.min.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-/*! jQuery v1.7.1 jquery.com | jquery.org/license */
-(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
-f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
-{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/js/libs/jquery.sparkline.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1271 +0,0 @@
-/**
-*
-* jquery.sparkline.js
-*
-* v1.6
-* (c) Splunk, Inc 
-* Contact: Gareth Watts (gareth@splunk.com)
-* http://omnipotent.net/jquery.sparkline/
-*
-* Generates inline sparkline charts from data supplied either to the method
-* or inline in HTML
-* 
-* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag
-* (Firefox 2.0+, Safari, Opera, etc)
-*
-* License: New BSD License
-* 
-* Copyright (c) 2010, Splunk Inc.
-* All rights reserved.
-* 
-* Redistribution and use in source and binary forms, with or without modification, 
-* are permitted provided that the following conditions are met:
-* 
-*     * Redistributions of source code must retain the above copyright notice, 
-*       this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright notice, 
-*       this list of conditions and the following disclaimer in the documentation 
-*       and/or other materials provided with the distribution.
-*     * Neither the name of Splunk Inc nor the names of its contributors may 
-*       be used to endorse or promote products derived from this software without 
-*       specific prior written permission.
-* 
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
-* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
-* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
-* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
-* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
-* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
-* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*
-* Usage: 
-*  $(selector).sparkline(values, options)
-*
-* If values is undefined or set to 'html' then the data values are read from the specified tag:
-*   <p>Sparkline: <span class="sparkline">1,4,6,6,8,5,3,5</span></p>
-*   $('.sparkline').sparkline();
-* There must be no spaces in the enclosed data set
-*
-* Otherwise values must be an array of numbers or null values
-*    <p>Sparkline: <span id="sparkline1">This text replaced if the browser is compatible</span></p>
-*    $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])
-*    $('#sparkline2').sparkline([1,4,6,null,null,5,3,5])
-*
-* Values can also be specified in an HTML comment, or as a values attribute:
-*    <p>Sparkline: <span class="sparkline"><!--1,4,6,6,8,5,3,5 --></span></p>
-*    <p>Sparkline: <span class="sparkline" values="1,4,6,6,8,5,3,5"></span></p>
-*    $('.sparkline').sparkline();
-*
-* For line charts, x values can also be specified:
-*   <p>Sparkline: <span class="sparkline">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p>
-*    $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])
-*
-* By default, options should be passed in as teh second argument to the sparkline function:
-*   $('.sparkline').sparkline([1,2,3,4], {type: 'bar'})
-*
-* Options can also be set by passing them on the tag itself.  This feature is disabled by default though
-* as there's a slight performance overhead:
-*   $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true})
-*   <p>Sparkline: <span class="sparkline" sparkType="bar" sparkBarColor="red">loading</span></p>
-* Prefix all options supplied as tag attribute with "spark" (configurable by setting tagOptionPrefix)
-*
-* Supported options:
-*   lineColor - Color of the line used for the chart
-*   fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart
-*   width - Width of the chart - Defaults to 3 times the number of values in pixels
-*   height - Height of the chart - Defaults to the height of the containing element
-*   chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied
-*   chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied
-*   chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax
-*   chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied
-*   chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied
-*   composite - If true then don't erase any existing chart attached to the tag, but draw
-*           another chart over the top - Note that width and height are ignored if an
-*           existing chart is detected.
-*   tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values'
-*   enableTagOptions - Whether to check tags for sparkline options 
-*   tagOptionPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark'
-*
-* There are 7 types of sparkline, selected by supplying a "type" option of 'line' (default),
-* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'
-*    line - Line chart.  Options:
-*       spotColor - Set to '' to not end each line in a circular spot
-*       minSpotColor - If set, color of spot at minimum value
-*       maxSpotColor - If set, color of spot at maximum value
-*       spotRadius - Radius in pixels
-*       lineWidth - Width of line in pixels
-*       normalRangeMin 
-*       normalRangeMax - If set draws a filled horizontal bar between these two values marking the "normal"
-*                      or expected range of values
-*       normalRangeColor - Color to use for the above bar
-*       drawNormalOnTop - Draw the normal range above the chart fill color if true
-*       defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart
-*
-*   bar - Bar chart.  Options:
-*       barColor - Color of bars for postive values
-*       negBarColor - Color of bars for negative values
-*       zeroColor - Color of bars with zero values
-*       nullColor - Color of bars with null values - Defaults to omitting the bar entirely
-*       barWidth - Width of bars in pixels
-*       colorMap - Optional mappnig of values to colors to override the *BarColor values above
-*                  can be an Array of values to control the color of individual bars
-*       barSpacing - Gap between bars in pixels
-*       zeroAxis - Centers the y-axis around zero if true
-*
-*   tristate - Charts values of win (>0), lose (<0) or draw (=0)
-*       posBarColor - Color of win values
-*       negBarColor - Color of lose values
-*       zeroBarColor - Color of draw values
-*       barWidth - Width of bars in pixels
-*       barSpacing - Gap between bars in pixels
-*       colorMap - Optional mappnig of values to colors to override the *BarColor values above
-*                  can be an Array of values to control the color of individual bars
-*
-*   discrete - Options:
-*       lineHeight - Height of each line in pixels - Defaults to 30% of the graph height
-*       thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor
-*       thresholdColor
-*
-*   bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...
-*       options:
-*       targetColor - The color of the vertical target marker
-*       targetWidth - The width of the target marker in pixels
-*       performanceColor - The color of the performance measure horizontal bar
-*       rangeColors - Colors to use for each qualitative range background color
-*
-*   pie - Pie chart. Options:
-*       sliceColors - An array of colors to use for pie slices
-*       offset - Angle in degrees to offset the first slice - Try -90 or +90
-*
-*   box - Box plot. Options:
-*       raw - Set to true to supply pre-computed plot points as values
-*             values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier
-*             When set to false you can supply any number of values and the box plot will
-*             be computed for you.  Default is false.
-*       showOutliers - Set to true (default) to display outliers as circles
-*       outlierIRQ - Interquartile range used to determine outliers.  Default 1.5
-*       boxLineColor - Outline color of the box
-*       boxFillColor - Fill color for the box
-*       whiskerColor - Line color used for whiskers
-*       outlierLineColor - Outline color of outlier circles
-*       outlierFillColor - Fill color of the outlier circles
-*       spotRadius - Radius of outlier circles
-*       medianColor - Line color of the median line
-*       target - Draw a target cross hair at the supplied value (default undefined)
-*      
-*   
-*       
-*   Examples:
-*   $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });
-*   $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });
-*   $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):
-*   $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });
-*   $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });
-*   $('#pie').sparkline([1,1,2], { type:'pie' });
-*/
-
-
-(function($) {
-
-    /*
-     * Default configuration settings
-     */
-    var defaults = {
-        // Settings common to most/all chart types
-        common: {
-            type : 'line',
-            lineColor : '#00f',
-            fillColor : '#cdf',
-            defaultPixelsPerValue : 3,
-            width : 'auto', 
-            height : 'auto',
-            composite : false,
-            tagValuesAttribute: 'values',
-            tagOptionsPrefix: 'spark',
-            enableTagOptions: false
-        },
-        // Defaults for line charts
-        line: {
-            spotColor : '#f80',
-            spotRadius : 1.5,
-            minSpotColor : '#f80',
-            maxSpotColor : '#f80',
-            lineWidth: 1, 
-            normalRangeMin : undefined,
-            normalRangeMax : undefined,
-            normalRangeColor : '#ccc',
-            drawNormalOnTop: false,
-            chartRangeMin : undefined,
-            chartRangeMax : undefined,
-            chartRangeMinX : undefined,
-            chartRangeMaxX : undefined
-        },
-        // Defaults for bar charts
-        bar: {
-            barColor : '#00f',
-            negBarColor : '#f44',
-            zeroColor: undefined,
-            nullColor: undefined,
-            zeroAxis : undefined,
-            barWidth : 4,
-            barSpacing : 1,
-            chartRangeMax: undefined,
-            chartRangeMin: undefined,
-            chartRangeClip: false,
-            colorMap : undefined
-        },
-        // Defaults for tristate charts
-        tristate: {
-            barWidth : 4,
-            barSpacing : 1,
-            posBarColor: '#6f6',
-            negBarColor : '#f44',
-            zeroBarColor : '#999',
-            colorMap : {}
-        },
-        // Defaults for discrete charts
-        discrete: {
-            lineHeight: 'auto',
-            thresholdColor: undefined,
-            thresholdValue : 0,
-            chartRangeMax: undefined,
-            chartRangeMin: undefined,
-            chartRangeClip: false
-        },
-        // Defaults for bullet charts
-        bullet: {
-            targetColor : 'red',
-            targetWidth : 3, // width of the target bar in pixels
-            performanceColor : 'blue',
-            rangeColors : ['#D3DAFE', '#A8B6FF', '#7F94FF' ],
-            base : undefined // set this to a number to change the base start number
-        },
-        // Defaults for pie charts
-        pie: {
-            sliceColors : ['#f00', '#0f0', '#00f']
-        },
-        // Defaults for box plots
-        box: {
-            raw: false,
-            boxLineColor: 'black',
-            boxFillColor: '#cdf',
-            whiskerColor: 'black',
-            outlierLineColor: '#333',
-            outlierFillColor: 'white',
-            medianColor: 'red',
-            showOutliers: true,
-            outlierIQR: 1.5,
-            spotRadius: 1.5,
-            target: undefined,
-            targetColor: '#4a2',
-            chartRangeMax: undefined,
-            chartRangeMin: undefined
-        }
-    };
-
-    // Provide a cross-browser interface to a few simple drawing primitives
-    var VCanvas_base, VCanvas_canvas, VCanvas_vml;
-    $.fn.simpledraw = function(width, height, use_existing) {
-        if (use_existing && this[0].VCanvas) {
-            return this[0].VCanvas;
-        }
-        if (width === undefined) { 
-            width=$(this).innerWidth();
-        }
-        if (height === undefined) {
-            height=$(this).innerHeight();
-        }
-        if ($.browser.hasCanvas) {
-            return new VCanvas_canvas(width, height, this);
-        } else if ($.browser.msie) {
-            return new VCanvas_vml(width, height, this);
-        } else {
-            return false;
-        }
-    };
-
-    var pending = [];
-
-
-    $.fn.sparkline = function(uservalues, userOptions) {
-        return this.each(function() {
-            var options = new $.fn.sparkline.options(this, userOptions);
-            var render = function() {
-                var values, width, height;
-                if (uservalues==='html' || uservalues===undefined) {
-                    var vals = this.getAttribute(options.get('tagValuesAttribute'));
-                    if (vals===undefined || vals===null) {
-                        vals = $(this).html();
-                    }
-                    values = vals.replace(/(^\s*<!--)|(-->\s*$)|\s+/g, '').split(',');
-                } else {
-                    values = uservalues;
-                }
-
-                width = options.get('width')=='auto' ? values.length*options.get('defaultPixelsPerValue') : options.get('width');
-                if (options.get('height') == 'auto') {
-                    if (!options.get('composite') || !this.VCanvas) {
-                        // must be a better way to get the line height
-                        var tmp = document.createElement('span');
-                        tmp.innerHTML = 'a';
-                        $(this).html(tmp);
-                        height = $(tmp).innerHeight();
-                        $(tmp).remove();
-                    }
-                } else {
-                    height = options.get('height');
-                }
-
-                $.fn.sparkline[options.get('type')].call(this, values, options, width, height);
-            };
-            // jQuery 1.3.0 completely changed the meaning of :hidden :-/
-            if (($(this).html() && $(this).is(':hidden')) || ($.fn.jquery < "1.3.0" && $(this).parents().is(':hidden')) || !$(this).parents('body').length) {
-                pending.push([this, render]);
-            } else {
-                render.call(this);
-            }
-        });
-    };
-
-    $.fn.sparkline.defaults = defaults;
-
-
-    $.sparkline_display_visible = function() {
-        for (var i=pending.length-1; i>=0; i--) {
-            var el = pending[i][0];
-            if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {
-                pending[i][1].call(el);
-                pending.splice(i, 1);
-            }
-        }
-    };
-
-
-    /**
-     * User option handler
-     */
-    var UNSET_OPTION = {};
-    var normalizeValue = function(val) {
-        switch(val) {
-            case 'undefined':
-                val = undefined;
-                break;
-            case 'null':
-                val = null;
-                break;
-            case 'true':
-                val = true;
-                break;
-            case 'false':
-                val = false;
-                break;
-            default:
-                var nf = parseFloat(val);
-                if (val == nf) {
-                    val = nf;
-                }
-        }
-        return val;
-    };
-    $.fn.sparkline.options = function(tag, userOptions) {
-        var extendedOptions;
-        this.userOptions = userOptions = userOptions || {};
-        this.tag = tag;
-        this.tagValCache = {};
-        var defaults = $.fn.sparkline.defaults;
-        var base = defaults.common;
-        this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix);
-            
-        var tagOptionType = this.getTagSetting('type');
-        if (tagOptionType === UNSET_OPTION) {
-            extendedOptions = defaults[userOptions.type || base.type];
-        } else {
-            extendedOptions = defaults[tagOptionType];
-        }
-        this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);
-    };
-
-
-    $.fn.sparkline.options.prototype.getTagSetting = function(key) {
-        var val, i, prefix = this.tagOptionsPrefix;
-        if (prefix === false || prefix === undefined) {
-            return UNSET_OPTION;
-        }
-        if (this.tagValCache.hasOwnProperty(key)) {
-            val = this.tagValCache.key;
-        } else {
-            val = this.tag.getAttribute(prefix + key);
-            if (val === undefined || val === null) {
-                val = UNSET_OPTION;
-            } else if (val.substr(0, 1) == '[') {
-                val = val.substr(1, val.length-2).split(',');
-                for(i=val.length; i--;) {
-                    val[i] = normalizeValue(val[i].replace(/(^\s*)|(\s*$)/g, ''));
-                }
-            } else if (val.substr(0, 1) == '{') {
-                var pairs= val.substr(1, val.length-2).split(',');
-                val = {};
-                for(i=pairs.length; i--;) {
-                    var keyval = pairs[i].split(':', 2);
-                    val[keyval[0].replace(/(^\s*)|(\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\s*)|(\s*$)/g, ''));
-                }
-            } else {
-                val = normalizeValue(val);
-            }
-            this.tagValCache.key = val;
-        }
-        return val; 
-    };
-
-    $.fn.sparkline.options.prototype.get = function(key) {
-        var tagOption = this.getTagSetting(key);
-        if (tagOption !== UNSET_OPTION) {
-            return tagOption;
-        }
-        return this.mergedOptions[key];
-    };
-
-
-    /**
-     * Line charts
-     */
-    $.fn.sparkline.line = function(values, options, width, height) {
-        var xvalues = [], yvalues = [], yminmax = [];
-        for (var i=0; i<values.length; i++) {
-            var val = values[i];
-            var isstr = typeof(values[i])=='string';
-            var isarray = typeof(values[i])=='object' && values[i] instanceof Array;
-            var sp = isstr && values[i].split(':');
-            if (isstr && sp.length == 2) { // x:y
-                xvalues.push(Number(sp[0]));
-                yvalues.push(Number(sp[1]));
-                yminmax.push(Number(sp[1]));
-            } else if (isarray) {
-                xvalues.push(val[0]);
-                yvalues.push(val[1]);
-                yminmax.push(val[1]);
-            } else {
-                xvalues.push(i);
-                if (values[i]===null || values[i]=='null') {
-                    yvalues.push(null);
-                } else {
-                    yvalues.push(Number(val));
-                    yminmax.push(Number(val));
-                }
-            }
-        }
-        if (options.get('xvalues')) {
-            xvalues = options.get('xvalues');
-        }
-
-        var maxy = Math.max.apply(Math, yminmax);
-        var maxyval = maxy;
-        var miny = Math.min.apply(Math, yminmax);
-        var minyval = miny;
-
-        var maxx = Math.max.apply(Math, xvalues);
-        var minx = Math.min.apply(Math, xvalues);
-
-        var normalRangeMin = options.get('normalRangeMin');
-        var normalRangeMax = options.get('normalRangeMax');
-
-        if (normalRangeMin!==undefined) {
-            if (normalRangeMin<miny) {
-                miny = normalRangeMin;
-            }
-            if (normalRangeMax>maxy) {
-                maxy = normalRangeMax;
-            }
-        }
-        if (options.get('chartRangeMin')!==undefined && (options.get('chartRangeClip') ||  options.get('chartRangeMin')<miny)) {
-            miny = options.get('chartRangeMin');
-        }
-        if (options.get('chartRangeMax')!==undefined && (options.get('chartRangeClip') || options.get('chartRangeMax')>maxy)) {
-            maxy = options.get('chartRangeMax');
-        }
-        if (options.get('chartRangeMinX')!==undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX')<minx)) {
-            minx = options.get('chartRangeMinX');
-        }
-        if (options.get('chartRangeMaxX')!==undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX')>maxx)) {
-            maxx = options.get('chartRangeMaxX');
-        }
-        var rangex = maxx-minx === 0 ? 1 : maxx-minx;
-        var rangey = maxy-miny === 0 ? 1 : maxy-miny;
-        var vl = yvalues.length-1;
-
-        if (vl<1) {
-            this.innerHTML = '';
-            return;
-        }
-
-        var target = $(this).simpledraw(width, height, options.get('composite'));
-        if (target) {
-            var canvas_width = target.pixel_width;
-            var canvas_height = target.pixel_height;
-            var canvas_top = 0;
-            var canvas_left = 0;
-
-            var spotRadius = options.get('spotRadius');
-            if (spotRadius && (canvas_width < (spotRadius*4) || canvas_height < (spotRadius*4))) {
-                spotRadius = 0;
-            }
-            if (spotRadius) {
-                // adjust the canvas size as required so that spots will fit
-                if (options.get('minSpotColor') || (options.get('spotColor') && yvalues[vl]==miny)) {
-                    canvas_height -= Math.ceil(spotRadius);
-                }
-                if (options.get('maxSpotColor') || (options.get('spotColor') && yvalues[vl]==maxy)) {
-                    canvas_height -= Math.ceil(spotRadius);
-                    canvas_top += Math.ceil(spotRadius);
-                }
-                if (options.get('minSpotColor') || options.get('maxSpotColor') && (yvalues[0]==miny || yvalues[0]==maxy)) {
-                    canvas_left += Math.ceil(spotRadius);
-                    canvas_width -= Math.ceil(spotRadius);
-                }
-                if (options.get('spotColor') || (options.get('minSpotColor') || options.get('maxSpotColor') && (yvalues[vl]==miny||yvalues[vl]==maxy))) {
-                    canvas_width -= Math.ceil(spotRadius);
-                }
-            }
-
-
-            canvas_height--;
-
-            var drawNormalRange = function() {
-                if (normalRangeMin!==undefined) {
-                    var ytop = canvas_top+Math.round(canvas_height-(canvas_height*((normalRangeMax-miny)/rangey)));
-                    var height = Math.round((canvas_height*(normalRangeMax-normalRangeMin))/rangey);
-                    target.drawRect(canvas_left, ytop, canvas_width, height, undefined, options.get('normalRangeColor'));
-                }
-            };
-
-            if (!options.get('drawNormalOnTop')) {
-                drawNormalRange();
-            }
-
-            var path = [];
-            var paths = [path];
-            var x, y, vlen=yvalues.length;
-            for(i=0; i<vlen; i++) {
-                x=xvalues[i];
-                y=yvalues[i];
-                if (y===null) {
-                    if (i) {
-                        if (yvalues[i-1]!==null) {
-                            path = [];
-                            paths.push(path);
-                        }
-                    }
-                } else {
-                    if (y < miny) {
-                        y=miny;
-                    }
-                    if (y > maxy) {
-                        y=maxy;
-                    }
-                    if (!path.length) {
-                        // previous value was null
-                        path.push([canvas_left+Math.round((x-minx)*(canvas_width/rangex)), canvas_top+canvas_height]);
-                    }
-                    path.push([canvas_left+Math.round((x-minx)*(canvas_width/rangex)), canvas_top+Math.round(canvas_height-(canvas_height*((y-miny)/rangey)))]);
-                }
-            }
-            var lineshapes = [];
-            var fillshapes = [];
-            var plen=paths.length;
-            for(i=0; i<plen; i++) {
-                path = paths[i];
-                if (!path.length) {
-                    continue; // last value was null
-                }
-                if (options.get('fillColor')) {
-                    path.push([path[path.length-1][0], canvas_top+canvas_height-1]);
-                    fillshapes.push(path.slice(0));
-                    path.pop();
-                }
-                // if there's only a single point in this path, then we want to display it as a vertical line
-                // which means we keep path[0]  as is
-                if (path.length>2) {
-                    // else we want the first value 
-                    path[0] = [ path[0][0], path[1][1] ];
-                }
-                lineshapes.push(path);
-            }
-
-            // draw the fill first, then optionally the normal range, then the line on top of that
-            plen = fillshapes.length;
-            for(i=0; i<plen; i++) {
-                target.drawShape(fillshapes[i], undefined, options.get('fillColor'));
-            }
-
-            if (options.get('drawNormalOnTop')) {
-                drawNormalRange();
-            }
-
-            plen = lineshapes.length;
-            for(i=0; i<plen; i++) {
-                target.drawShape(lineshapes[i], options.get('lineColor'), undefined, options.get('lineWidth'));
-            }
-                
-            if (spotRadius && options.get('spotColor')) {
-                target.drawCircle(canvas_left+Math.round(xvalues[xvalues.length-1]*(canvas_width/rangex)),  canvas_top+Math.round(canvas_height-(canvas_height*((yvalues[vl]-miny)/rangey))), spotRadius, undefined, options.get('spotColor'));
-            }
-            if (maxy!=minyval) {
-                if (spotRadius && options.get('minSpotColor')) {
-                    x = xvalues[$.inArray(minyval, yvalues)];
-                    target.drawCircle(canvas_left+Math.round((x-minx)*(canvas_width/rangex)),  canvas_top+Math.round(canvas_height-(canvas_height*((minyval-miny)/rangey))), spotRadius, undefined, options.get('minSpotColor'));
-                }
-                if (spotRadius && options.get('maxSpotColor')) {
-                    x = xvalues[$.inArray(maxyval, yvalues)];
-                    target.drawCircle(canvas_left+Math.round((x-minx)*(canvas_width/rangex)),  canvas_top+Math.round(canvas_height-(canvas_height*((maxyval-miny)/rangey))), spotRadius, undefined, options.get('maxSpotColor'));
-                }
-            }
-
-        } else {
-            // Remove the tag contents if sparklines aren't supported
-            this.innerHTML = '';
-        }
-    };
-
-    
-    /** 
-     * Bar charts
-     */
-    $.fn.sparkline.bar = function(values, options, width, height) {
-        width = (values.length * options.get('barWidth')) + ((values.length-1) * options.get('barSpacing'));
-        var num_values = [];
-        for(var i=0, vlen=values.length; i<vlen; i++) {
-            if (values[i]=='null' || values[i]===null) {
-                values[i] = null;
-            } else {
-                values[i] = Number(values[i]);
-                num_values.push(Number(values[i]));
-            }
-        }
-        var max = Math.max.apply(Math, num_values),
-            min = Math.min.apply(Math, num_values);
-        if (options.get('chartRangeMin')!==undefined && (options.get('chartRangeClip') || options.get('chartRangeMin')<min)) {
-            min = options.get('chartRangeMin');
-        }
-        if (options.get('chartRangeMax')!==undefined && (options.get('chartRangeClip') || options.get('chartRangeMax')>max)) {
-            max = options.get('chartRangeMax');
-        }
-        var zeroAxis = options.get('zeroAxis');
-        if (zeroAxis === undefined) {
-            zeroAxis = min<0;
-        }
-        var range = max-min === 0 ? 1 : max-min;
-
-        var colorMapByIndex, colorMapByValue;
-        if ($.isArray(options.get('colorMap'))) {
-            colorMapByIndex = options.get('colorMap');
-            colorMapByValue = null;
-        } else {
-            colorMapByIndex = null;
-            colorMapByValue = options.get('colorMap');
-        }
-
-        var target = $(this).simpledraw(width, height, options.get('composite'));
-        if (target) {
-            var color,
-                canvas_height = target.pixel_height,
-                yzero = min<0 && zeroAxis ? canvas_height-Math.round(canvas_height * (Math.abs(min)/range))-1 : canvas_height-1;
-
-            for(i=values.length; i--;) {
-                var x = i*(options.get('barWidth')+options.get('barSpacing')),
-                    y, 
-                    val = values[i];
-                if (val===null) {
-                    if (options.get('nullColor')) {
-                        color = options.get('nullColor');
-                        val = (zeroAxis && min<0) ? 0 : min;
-                        height = 1;
-                        y = (zeroAxis && min<0) ? yzero : canvas_height - height;
-                    } else {
-                        continue;
-                    }
-                } else {
-                    if (val < min) {
-                        val=min;
-                    }
-                    if (val > max) {
-                        val=max;
-                    }
-                    color = (val < 0) ? options.get('negBarColor') : options.get('barColor');
-                    if (zeroAxis && min<0) {
-                        height = Math.round(canvas_height*((Math.abs(val)/range)))+1;
-                        y = (val < 0) ? yzero : yzero-height;
-                    } else {
-                        height = Math.round(canvas_height*((val-min)/range))+1;
-                        y = canvas_height-height;
-                    }
-                    if (val===0 && options.get('zeroColor')!==undefined) {
-                        color = options.get('zeroColor');
-                    }
-                    if (colorMapByValue && colorMapByValue[val]) {
-                        color = colorMapByValue[val];
-                    } else if (colorMapByIndex && colorMapByIndex.length>i) {
-                        color = colorMapByIndex[i];
-                    }
-                    if (color===null) {
-                        continue;
-                    }
-                }
-                target.drawRect(x, y, options.get('barWidth')-1, height-1, color, color);
-            }
-        } else {
-            // Remove the tag contents if sparklines aren't supported
-            this.innerHTML = '';
-        }
-    };
-
-
-    /**
-     * Tristate charts
-     */
-    $.fn.sparkline.tristate = function(values, options, width, height) {
-        values = $.map(values, Number);
-        width = (values.length * options.get('barWidth')) + ((values.length-1) * options.get('barSpacing'));
-
-        var colorMapByIndex, colorMapByValue;
-        if ($.isArray(options.get('colorMap'))) {
-            colorMapByIndex = options.get('colorMap');
-            colorMapByValue = null;
-        } else {
-            colorMapByIndex = null;
-            colorMapByValue = options.get('colorMap');
-        }
-
-        var target = $(this).simpledraw(width, height, options.get('composite'));
-        if (target) {
-            var canvas_height = target.pixel_height,
-                half_height = Math.round(canvas_height/2);
-
-            for(var i=values.length; i--;) {
-                var x = i*(options.get('barWidth')+options.get('barSpacing')),
-                    y, color;
-                if (values[i] < 0) {
-                    y = half_height;
-                    height = half_height-1;
-                    color = options.get('negBarColor');
-                } else if (values[i] > 0) {
-                    y = 0;
-                    height = half_height-1;
-                    color = options.get('posBarColor');
-                } else {
-                    y = half_height-1;
-                    height = 2;
-                    color = options.get('zeroBarColor');
-                }
-                if (colorMapByValue && colorMapByValue[values[i]]) {
-                    color = colorMapByValue[values[i]];
-                } else if (colorMapByIndex && colorMapByIndex.length>i) {
-                    color = colorMapByIndex[i];
-                }
-                if (color===null) {
-                    continue;
-                }
-                target.drawRect(x, y, options.get('barWidth')-1, height-1, color, color);
-            }
-        } else {
-            // Remove the tag contents if sparklines aren't supported
-            this.innerHTML = '';
-        }
-    };
-
-
-    /** 
-     * Discrete charts
-     */
-    $.fn.sparkline.discrete = function(values, options, width, height) {
-        values = $.map(values, Number);
-        width = options.get('width')=='auto' ? values.length*2 : width;
-        var interval = Math.floor(width / values.length);
-
-        var target = $(this).simpledraw(width, height, options.get('composite'));
-        if (target) {
-            var canvas_height = target.pixel_height,
-                line_height = options.get('lineHeight') == 'auto' ? Math.round(canvas_height * 0.3) : options.get('lineHeight'),
-                pheight = canvas_height - line_height,
-                min = Math.min.apply(Math, values),
-                max = Math.max.apply(Math, values);
-            if (options.get('chartRangeMin')!==undefined && (options.get('chartRangeClip') || options.get('chartRangeMin')<min)) {
-                min = options.get('chartRangeMin');
-            }
-            if (options.get('chartRangeMax')!==undefined && (options.get('chartRangeClip')  || options.get('chartRangeMax')>max)) {
-                max = options.get('chartRangeMax');
-            }
-            var range = max-min;
-
-            for(var i=values.length; i--;) {
-                var val = values[i];
-                if (val < min) {
-                    val=min;
-                }
-                if (val > max) {
-                    val=max;
-                }
-                var x = (i*interval),
-                    ytop = Math.round(pheight-pheight*((val-min)/range));
-                target.drawLine(x, ytop, x, ytop+line_height, (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor'));
-            }
-        }  else {
-            // Remove the tag contents if sparklines aren't supported
-            this.innerHTML = '';
-        }
-                
-    };
-
-
-    /**
-     * Bullet charts
-     */
-    $.fn.sparkline.bullet = function(values, options, width, height) {
-        values = $.map(values, Number);
-        // target, performance, range1, range2, range3
-        
-        width = options.get('width')=='auto' ? '4.0em' : width;
-
-        var target = $(this).simpledraw(width, height, options.get('composite'));
-        if (target && values.length>1) {
-            var canvas_width = target.pixel_width-Math.ceil(options.get('targetWidth')/2),
-                canvas_height = target.pixel_height,
-                min = Math.min.apply(Math, values),
-                max = Math.max.apply(Math, values);
-
-            if (options.get('base') === undefined) {
-                min = min < 0 ? min : 0;
-            } else {
-                min = options.get('base');
-            }
-            var range = max-min;
-
-            // draw range values
-            for(var i=2, vlen=values.length; i<vlen; i++) {
-                var rangeval = values[i],
-                    rangewidth = Math.round(canvas_width*((rangeval-min)/range));
-                target.drawRect(0, 0, rangewidth-1, canvas_height-1, options.get('rangeColors')[i-2], options.get('rangeColors')[i-2]);
-            }
-
-            // draw the performance bar
-            var perfval = values[1],
-                perfwidth = Math.round(canvas_width*((perfval-min)/range));
-            target.drawRect(0, Math.round(canvas_height*0.3), perfwidth-1, Math.round(canvas_height*0.4)-1, options.get('performanceColor'), options.get('performanceColor'));
-
-            // draw the target line
-            var targetval = values[0],
-                x = Math.round(canvas_width*((targetval-min)/range)-(options.get('targetWidth')/2)),
-                targettop = Math.round(canvas_height*0.10),
-                targetheight = canvas_height-(targettop*2);
-            target.drawRect(x, targettop, options.get('targetWidth')-1, targetheight-1, options.get('targetColor'), options.get('targetColor'));
-        }  else {
-            // Remove the tag contents if sparklines aren't supported
-            this.innerHTML = '';
-        }
-    };
-
-
-    /**
-     * Pie charts
-     */
-    $.fn.sparkline.pie = function(values, options, width, height) {
-        values = $.map(values, Number);
-        width = options.get('width')=='auto' ? height : width;
-
-        var target = $(this).simpledraw(width, height, options.get('composite'));
-        if (target && values.length>1) {
-            var canvas_width = target.pixel_width,
-                canvas_height = target.pixel_height,
-                radius = Math.floor(Math.min(canvas_width, canvas_height)/2),
-                total = 0,
-                next = 0,
-                circle = 2*Math.PI;
-
-            for(var i=values.length; i--;) {
-                total += values[i];
-            }
-
-            if (options.get('offset')) {
-                next += (2*Math.PI)*(options.get('offset')/360);
-            }
-            var vlen = values.length;
-            for(i=0; i<vlen; i++) {
-                var start = next;
-                var end = next;
-                if (total > 0) {  // avoid divide by zero
-                    end = next + (circle*(values[i]/total));
-                }
-                target.drawPieSlice(radius, radius, radius, start, end, undefined, options.get('sliceColors')[i % options.get('sliceColors').length]);
-                next = end;
-            }
-        }
-    };
-
-
-    /**
-     * Box plots
-     */
-    var quartile = function(values, q) {
-        if (q==2) {
-            var vl2 = Math.floor(values.length/2);
-            return values.length % 2 ? values[vl2] : (values[vl2]+values[vl2+1])/2;
-        } else {
-            var vl4 = Math.floor(values.length/4);
-            return values.length % 2 ? (values[vl4*q]+values[vl4*q+1])/2 : values[vl4*q];
-        }
-    };
-
-    $.fn.sparkline.box = function(values, options, width, height) {
-        values = $.map(values, Number);
-        width = options.get('width')=='auto' ? '4.0em' : width;
-
-        var minvalue = options.get('chartRangeMin')===undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'),
-            maxvalue = options.get('chartRangeMax')===undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'),
-            target = $(this).simpledraw(width, height, options.get('composite')),
-            vlen = values.length,
-            lwhisker, loutlier, q1, q2, q3, rwhisker, routlier;
-
-        if (target && values.length>1) {
-            var canvas_width = target.pixel_width,
-                canvas_height = target.pixel_height;
-            if (options.get('raw')) {
-                if (options.get('showOutliers') && values.length>5) {
-                    loutlier=values[0]; lwhisker=values[1]; q1=values[2]; q2=values[3]; q3=values[4]; rwhisker=values[5]; routlier=values[6];
-                } else {
-                    lwhisker=values[0]; q1=values[1]; q2=values[2]; q3=values[3]; rwhisker=values[4];
-                }
-            } else {
-                values.sort(function(a, b) { return a-b; });
-                q1 = quartile(values, 1);
-                q2 = quartile(values, 2);
-                q3 = quartile(values, 3);
-                var iqr = q3-q1;
-                if (options.get('showOutliers')) {
-                    lwhisker=undefined; rwhisker=undefined;
-                    for(var i=0; i<vlen; i++) {
-                        if (lwhisker===undefined && values[i] > q1-(iqr*options.get('outlierIQR'))) {
-                            lwhisker = values[i];
-                        }
-                        if (values[i] < q3+(iqr*options.get('outlierIQR'))) {
-                            rwhisker = values[i];
-                        }
-                    }
-                    loutlier = values[0];
-                    routlier = values[vlen-1];
-                } else {
-                    lwhisker = values[0];
-                    rwhisker = values[vlen-1];
-                }
-            }
-
-            var unitsize = canvas_width / (maxvalue-minvalue+1),
-                canvas_left = 0;
-            if (options.get('showOutliers')) {
-                canvas_left = Math.ceil(options.get('spotRadius'));
-                canvas_width -= 2*Math.ceil(options.get('spotRadius'));
-                unitsize = canvas_width / (maxvalue-minvalue+1);
-                if (loutlier < lwhisker) {
-                    target.drawCircle((loutlier-minvalue)*unitsize+canvas_left, canvas_height/2, options.get('spotRadius'), options.get('outlierLineColor'), options.get('outlierFillColor'));
-                }
-                if (routlier > rwhisker) {
-                    target.drawCircle((routlier-minvalue)*unitsize+canvas_left, canvas_height/2, options.get('spotRadius'), options.get('outlierLineColor'), options.get('outlierFillColor'));
-                }
-            }
-
-            // box
-            target.drawRect(
-                Math.round((q1-minvalue)*unitsize+canvas_left),
-                Math.round(canvas_height*0.1),
-                Math.round((q3-q1)*unitsize), 
-                Math.round(canvas_height*0.8), 
-                options.get('boxLineColor'), 
-                options.get('boxFillColor'));
-            // left whisker
-            target.drawLine(
-                Math.round((lwhisker-minvalue)*unitsize+canvas_left), 
-                Math.round(canvas_height/2), 
-                Math.round((q1-minvalue)*unitsize+canvas_left), 
-                Math.round(canvas_height/2), 
-                options.get('lineColor'));
-            target.drawLine(
-                Math.round((lwhisker-minvalue)*unitsize+canvas_left), 
-                Math.round(canvas_height/4), 
-                Math.round((lwhisker-minvalue)*unitsize+canvas_left), 
-                Math.round(canvas_height-canvas_height/4), 
-                options.get('whiskerColor'));
-            // right whisker
-            target.drawLine(Math.round((rwhisker-minvalue)*unitsize+canvas_left), 
-                Math.round(canvas_height/2), 
-                Math.round((q3-minvalue)*unitsize+canvas_left), 
-                Math.round(canvas_height/2), 
-                options.get('lineColor'));
-            target.drawLine(
-                Math.round((rwhisker-minvalue)*unitsize+canvas_left), 
-                Math.round(canvas_height/4), 
-                Math.round((rwhisker-minvalue)*unitsize+canvas_left), 
-                Math.round(canvas_height-canvas_height/4), 
-                options.get('whiskerColor'));
-            // median line
-            target.drawLine(
-                Math.round((q2-minvalue)*unitsize+canvas_left), 
-                Math.round(canvas_height*0.1),
-                Math.round((q2-minvalue)*unitsize+canvas_left), 
-                Math.round(canvas_height*0.9),
-                options.get('medianColor'));
-            if (options.get('target')) {
-                var size = Math.ceil(options.get('spotRadius'));
-                target.drawLine(
-                    Math.round((options.get('target')-minvalue)*unitsize+canvas_left), 
-                    Math.round((canvas_height/2)-size), 
-                    Math.round((options.get('target')-minvalue)*unitsize+canvas_left), 
-                    Math.round((canvas_height/2)+size), 
-                    options.get('targetColor'));
-                target.drawLine(
-                    Math.round((options.get('target')-minvalue)*unitsize+canvas_left-size), 
-                    Math.round(canvas_height/2), 
-                    Math.round((options.get('target')-minvalue)*unitsize+canvas_left+size), 
-                    Math.round(canvas_height/2), 
-                    options.get('targetColor'));
-            }
-        }  else {
-            // Remove the tag contents if sparklines aren't supported
-            this.innerHTML = '';
-        }
-    };
-
-
-    // Setup a very simple "virtual canvas" to make drawing the few shapes we need easier
-    // This is accessible as $(foo).simpledraw()
-
-    if ($.browser.msie && !document.namespaces.v) {
-        document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');
-    }
-
-    if ($.browser.hasCanvas === undefined) {
-        var t = document.createElement('canvas');
-        $.browser.hasCanvas = t.getContext!==undefined;
-    }
-
-    VCanvas_base = function(width, height, target) {
-    };
-
-    VCanvas_base.prototype = {
-        init : function(width, height, target) {
-            this.width = width;
-            this.height = height;
-            this.target = target;
-            if (target[0]) {
-                target=target[0];
-            }
-            target.VCanvas = this;
-        },
-
-        drawShape : function(path, lineColor, fillColor, lineWidth) {
-            alert('drawShape not implemented');
-        },
-
-        drawLine : function(x1, y1, x2, y2, lineColor, lineWidth) {
-            return this.drawShape([ [x1,y1], [x2,y2] ], lineColor, lineWidth);
-        },
-
-        drawCircle : function(x, y, radius, lineColor, fillColor) {
-            alert('drawCircle not implemented');
-        },
-
-        drawPieSlice : function(x, y, radius, startAngle, endAngle, lineColor, fillColor) {
-            alert('drawPieSlice not implemented');
-        },
-
-        drawRect : function(x, y, width, height, lineColor, fillColor) {
-            alert('drawRect not implemented');
-        },
-
-        getElement : function() {
-            return this.canvas;
-        },
-
-        _insert : function(el, target) {
-            $(target).html(el);
-        }
-    };
-
-    VCanvas_canvas = function(width, height, target) {
-        return this.init(width, height, target);
-    };
-
-    VCanvas_canvas.prototype = $.extend(new VCanvas_base(), {
-        _super : VCanvas_base.prototype,
-
-        init : function(width, height, target) {
-            this._super.init(width, height, target);
-            this.canvas = document.createElement('canvas');
-            if (target[0]) {
-                target=target[0];
-            }
-            target.VCanvas = this;
-            $(this.canvas).css({ display:'inline-block', width:width, height:height, verticalAlign:'top' });
-            this._insert(this.canvas, target);
-            this.pixel_height = $(this.canvas).height();
-            this.pixel_width = $(this.canvas).width();
-            this.canvas.width = this.pixel_width;
-            this.canvas.height = this.pixel_height;
-            $(this.canvas).css({width: this.pixel_width, height: this.pixel_height});
-        },
-
-        _getContext : function(lineColor, fillColor, lineWidth) {
-            var context = this.canvas.getContext('2d');
-            if (lineColor !== undefined) {
-                context.strokeStyle = lineColor;
-            }
-            context.lineWidth = lineWidth===undefined ? 1 : lineWidth;
-            if (fillColor !== undefined) {
-                context.fillStyle = fillColor;
-            }
-            return context;
-        },
-
-        drawShape : function(path, lineColor, fillColor, lineWidth) {
-            var context = this._getContext(lineColor, fillColor, lineWidth);
-            context.beginPath();
-            context.moveTo(path[0][0]+0.5, path[0][1]+0.5);
-            for(var i=1, plen=path.length; i<plen; i++) {
-                context.lineTo(path[i][0]+0.5, path[i][1]+0.5); // the 0.5 offset gives us crisp pixel-width lines
-            }
-            if (lineColor !== undefined) {
-                context.stroke();
-            }
-            if (fillColor !== undefined) {
-                context.fill();
-            }
-        },
-
-        drawCircle : function(x, y, radius, lineColor, fillColor) {
-            var context = this._getContext(lineColor, fillColor);
-            context.beginPath();
-            context.arc(x, y, radius, 0, 2*Math.PI, false);
-            if (lineColor !== undefined) {
-                context.stroke();
-            }
-            if (fillColor !== undefined) {
-                context.fill();
-            }
-        }, 
-
-        drawPieSlice : function(x, y, radius, startAngle, endAngle, lineColor, fillColor) {
-            var context = this._getContext(lineColor, fillColor);
-            context.beginPath();
-            context.moveTo(x, y);
-            context.arc(x, y, radius, startAngle, endAngle, false);
-            context.lineTo(x, y);
-            context.closePath();
-            if (lineColor !== undefined) {
-                context.stroke();
-            }
-            if (fillColor) {
-                context.fill();
-            }
-        },
-
-        drawRect : function(x, y, width, height, lineColor, fillColor) {
-            return this.drawShape([ [x,y], [x+width, y], [x+width, y+height], [x, y+height], [x, y] ], lineColor, fillColor);
-        }
-        
-    });
-
-    VCanvas_vml = function(width, height, target) {
-        return this.init(width, height, target);
-    };
-
-    VCanvas_vml.prototype = $.extend(new VCanvas_base(), {
-        _super : VCanvas_base.prototype,
-
-        init : function(width, height, target) {
-            this._super.init(width, height, target);
-            if (target[0]) {
-                target=target[0];
-            }
-            target.VCanvas = this;
-            this.canvas = document.createElement('span');
-            $(this.canvas).css({ display:'inline-block', position: 'relative', overflow:'hidden', width:width, height:height, margin:'0px', padding:'0px', verticalAlign: 'top'});
-            this._insert(this.canvas, target);
-            this.pixel_height = $(this.canvas).height();
-            this.pixel_width = $(this.canvas).width();
-            this.canvas.width = this.pixel_width;
-            this.canvas.height = this.pixel_height;
-            var groupel = '<v:group coordorigin="0 0" coordsize="'+this.pixel_width+' '+this.pixel_height+'"' +
-                    ' style="position:absolute;top:0;left:0;width:'+this.pixel_width+'px;height='+this.pixel_height+'px;"></v:group>';
-            this.canvas.insertAdjacentHTML('beforeEnd', groupel);
-            this.group = $(this.canvas).children()[0];
-        },
-
-        drawShape : function(path, lineColor, fillColor, lineWidth) {
-            var vpath = [];
-            for(var i=0, plen=path.length; i<plen; i++) {
-                vpath[i] = ''+(path[i][0])+','+(path[i][1]);
-            }
-            var initial = vpath.splice(0,1);
-            lineWidth = lineWidth === undefined ? 1 : lineWidth;
-            var stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="'+lineWidth+'" strokeColor="'+lineColor+'" ';
-            var fill = fillColor === undefined ? ' filled="false"' : ' fillColor="'+fillColor+'" filled="true" ';
-            var closed = vpath[0] == vpath[vpath.length-1] ? 'x ' : '';
-            var vel = '<v:shape coordorigin="0 0" coordsize="'+this.pixel_width+' '+this.pixel_height+'" ' +
-                 stroke +
-                 fill +
-                ' style="position:absolute;left:0px;top:0px;height:'+this.pixel_height+'px;width:'+this.pixel_width+'px;padding:0px;margin:0px;" ' +
-                ' path="m '+initial+' l '+vpath.join(', ')+' '+closed+'e">' +
-                ' </v:shape>';
-             this.group.insertAdjacentHTML('beforeEnd', vel);
-        },
-
-        drawCircle : function(x, y, radius, lineColor, fillColor) {
-            x -= radius+1;
-            y -= radius+1;
-            var stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="1" strokeColor="'+lineColor+'" ';
-            var fill = fillColor === undefined ? ' filled="false"' : ' fillColor="'+fillColor+'" filled="true" ';
-            var vel = '<v:oval ' +
-                stroke +
-                fill +
-                ' style="position:absolute;top:'+y+'px; left:'+x+'px; width:'+(radius*2)+'px; height:'+(radius*2)+'px"></v:oval>';
-            this.group.insertAdjacentHTML('beforeEnd', vel);
-            
-        },
-        
-        drawPieSlice : function(x, y, radius, startAngle, endAngle, lineColor, fillColor) {
-            if (startAngle == endAngle) {
-                return;  // VML seems to have problem when start angle equals end angle.
-            }
-            if ((endAngle - startAngle) == (2*Math.PI)) {
-                startAngle = 0.0;  // VML seems to have a problem when drawing a full circle that doesn't start 0
-                endAngle = (2*Math.PI);
-            }
-
-            var startx = x + Math.round(Math.cos(startAngle) * radius);
-            var starty = y + Math.round(Math.sin(startAngle) * radius);
-            var endx = x + Math.round(Math.cos(endAngle) * radius);
-            var endy = y + Math.round(Math.sin(endAngle) * radius);
-
-            // Prevent very small slices from being mistaken as a whole pie
-            if (startx==endx && starty==endy && (endAngle-startAngle) < Math.PI) {
-                return;
-            }
-
-            var vpath = [  x-radius, y-radius, x+radius, y+radius, startx, starty, endx, endy ]; 
-            var stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="1" strokeColor="'+lineColor+'" ';
-            var fill = fillColor === undefined ? ' filled="false"' : ' fillColor="'+fillColor+'" filled="true" ';
-            var vel = '<v:shape coordorigin="0 0" coordsize="'+this.pixel_width+' '+this.pixel_height+'" ' +
-                 stroke +
-                 fill +
-                ' style="position:absolute;left:0px;top:0px;height:'+this.pixel_height+'px;width:'+this.pixel_width+'px;padding:0px;margin:0px;" ' +
-                ' path="m '+x+','+y+' wa '+vpath.join(', ')+' x e">' +
-                ' </v:shape>';
-             this.group.insertAdjacentHTML('beforeEnd', vel);
-        },
-
-        drawRect : function(x, y, width, height, lineColor, fillColor) {
-            return this.drawShape( [ [x, y], [x, y+height], [x+width, y+height], [x+width, y], [x, y] ], lineColor, fillColor);
-        }
-    });
-
-})(jQuery);
--- a/test/integration/allocine_dossier_independant/js/libs/jquery.tools.min.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-/*
- * jQuery Tools 1.2.5 - The missing UI library for the Web
- * 
- * [jquery, toolbox.flashembed, toolbox.history, toolbox.expose, toolbox.mousewheel, tabs, tabs.slideshow, tooltip, tooltip.slide, tooltip.dynamic, scrollable, scrollable.autoscroll, scrollable.navigator, overlay, overlay.apple, dateinput, rangeinput, validator]
- * 
- * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
- * 
- * http://flowplayer.org/tools/
- * 
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://docs.jquery.com/License
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- * 
- * -----
- * 
- 
-
- * jquery.event.wheel.js - rev 1 
- * Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
- * Liscensed under the MIT License (MIT-LICENSE.txt)
- * http://www.opensource.org/licenses/mit-license.php
- * Created: 2008-07-01 | Updated: 2008-07-14
- * 
- * -----
- * 
- * File generated: Tue Sep 21 12:33:09 GMT 2010
- */
-(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
-e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
-j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
-"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
-true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
-Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
-(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
-a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
-"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
-function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
-c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
-L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
-"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
-a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
-d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
-a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
-!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
-true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
-parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
-false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
-s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
-applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
-else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
-a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
-w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
-cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
-i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
-" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
-this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
-e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
-c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
-a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
-function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
-k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
-C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
-null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
-e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
-f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
-if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
-"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
-a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
-isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
-{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
-if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
-e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
-"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
-d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
-!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
-toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
-u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
-function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
-if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
-e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
-t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
-g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
-for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
-1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
-CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
-relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
-l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
-h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
-CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
-g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
-text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
-setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
-h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
-m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
-"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
-h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
-!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
-h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
-q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
-if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
-(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
-function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
-gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
-c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
-{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
-"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
-d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
-a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
-1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
-a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
-c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
-wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
-prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
-this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
-return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
-""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
-this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
-u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
-1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
-return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
-""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
-c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
-c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
-function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
-Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
-"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
-a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
-a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
-"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
-serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
-function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
-global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
-e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
-"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
-false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
-false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
-c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
-d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
-g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
-1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
-"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
-if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
-this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
-"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
-animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
-j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
-this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
-"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
-c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
-this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
-this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
-e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
-c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
-function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
-this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
-k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
-f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
-a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
-c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
-d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
-"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
-e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
-(function(){function f(a,b){if(b)for(var c in b)if(b.hasOwnProperty(c))a[c]=b[c];return a}function l(a,b){var c=[];for(var d in a)if(a.hasOwnProperty(d))c[d]=b(a[d]);return c}function m(a,b,c){if(e.isSupported(b.version))a.innerHTML=e.getHTML(b,c);else if(b.expressInstall&&e.isSupported([6,65]))a.innerHTML=e.getHTML(f(b,{src:b.expressInstall}),{MMredirectURL:location.href,MMplayerType:"PlugIn",MMdoctitle:document.title});else{if(!a.innerHTML.replace(/\s/g,"")){a.innerHTML="<h2>Flash version "+b.version+
-" or greater is required</h2><h3>"+(g[0]>0?"Your version is "+g:"You have no flash plugin installed")+"</h3>"+(a.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='"+k+"'>here</a></p>");if(a.tagName=="A")a.onclick=function(){location.href=k}}if(b.onFail){var d=b.onFail.call(this);if(typeof d=="string")a.innerHTML=d}}if(i)window[b.id]=document.getElementById(b.id);f(this,{getRoot:function(){return a},getOptions:function(){return b},getConf:function(){return c},
-getApi:function(){return a.firstChild}})}var i=document.all,k="http://www.adobe.com/go/getflashplayer",n=typeof jQuery=="function",o=/(\d+)[^\d]+(\d+)[^\d]*(\d*)/,j={width:"100%",height:"100%",id:"_"+(""+Math.random()).slice(9),allowfullscreen:true,allowscriptaccess:"always",quality:"high",version:[3,0],onFail:null,expressInstall:null,w3c:false,cachebusting:false};window.attachEvent&&window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}});
-window.flashembed=function(a,b,c){if(typeof a=="string")a=document.getElementById(a.replace("#",""));if(a){if(typeof b=="string")b={src:b};return new m(a,f(f({},j),b),c)}};var e=f(window.flashembed,{conf:j,getVersion:function(){var a,b;try{b=navigator.plugins["Shockwave Flash"].description.slice(16)}catch(c){try{b=(a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"))&&a.GetVariable("$version")}catch(d){try{b=(a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"))&&a.GetVariable("$version")}catch(h){}}}return(b=
-o.exec(b))?[b[1],b[3]]:[0,0]},asString:function(a){if(a===null||a===undefined)return null;var b=typeof a;if(b=="object"&&a.push)b="array";switch(b){case "string":a=a.replace(new RegExp('(["\\\\])',"g"),"\\$1");a=a.replace(/^\s?(\d+\.?\d+)%/,"$1pct");return'"'+a+'"';case "array":return"["+l(a,function(d){return e.asString(d)}).join(",")+"]";case "function":return'"function()"';case "object":b=[];for(var c in a)a.hasOwnProperty(c)&&b.push('"'+c+'":'+e.asString(a[c]));return"{"+b.join(",")+"}"}return String(a).replace(/\s/g,
-" ").replace(/\'/g,'"')},getHTML:function(a,b){a=f({},a);var c='<object width="'+a.width+'" height="'+a.height+'" id="'+a.id+'" name="'+a.id+'"';if(a.cachebusting)a.src+=(a.src.indexOf("?")!=-1?"&":"?")+Math.random();c+=a.w3c||!i?' data="'+a.src+'" type="application/x-shockwave-flash"':' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';c+=">";if(a.w3c||i)c+='<param name="movie" value="'+a.src+'" />';a.width=a.height=a.id=a.w3c=a.src=null;a.onFail=a.version=a.expressInstall=null;for(var d in a)if(a[d])c+=
-'<param name="'+d+'" value="'+a[d]+'" />';a="";if(b){for(var h in b)if(b[h]){d=b[h];a+=h+"="+(/function|object/.test(typeof d)?e.asString(d):d)+"&"}a=a.slice(0,-1);c+='<param name="flashvars" value=\''+a+"' />"}c+="</object>";return c},isSupported:function(a){return g[0]>a[0]||g[0]==a[0]&&g[1]>=a[1]}}),g=e.getVersion();if(n){jQuery.tools=jQuery.tools||{version:"1.2.5"};jQuery.tools.flashembed={conf:j};jQuery.fn.flashembed=function(a,b){return this.each(function(){$(this).data("flashembed",flashembed(this,
-a,b))})}}})();
-(function(b){function h(c){if(c){var a=d.contentWindow.document;a.open().close();a.location.hash=c}}var g,d,f,i;b.tools=b.tools||{version:"1.2.5"};b.tools.history={init:function(c){if(!i){if(b.browser.msie&&b.browser.version<"8"){if(!d){d=b("<iframe/>").attr("src","javascript:false;").hide().get(0);b("body").append(d);setInterval(function(){var a=d.contentWindow.document;a=a.location.hash;g!==a&&b.event.trigger("hash",a)},100);h(location.hash||"#")}}else setInterval(function(){var a=location.hash;
-a!==g&&b.event.trigger("hash",a)},100);f=!f?c:f.add(c);c.click(function(a){var e=b(this).attr("href");d&&h(e);if(e.slice(0,1)!="#"){location.href="#"+e;return a.preventDefault()}});i=true}}};b(window).bind("hash",function(c,a){a?f.filter(function(){var e=b(this).attr("href");return e==a||e==a.replace("#","")}).trigger("history",[a]):f.eq(0).trigger("history",[a]);g=a});b.fn.history=function(c){b.tools.history.init(this);return this.bind("history",c)}})(jQuery);
-(function(b){function k(){if(b.browser.msie){var a=b(document).height(),d=b(window).height();return[window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,a-d<20?d:a]}return[b(document).width(),b(document).height()]}function h(a){if(a)return a.call(b.mask)}b.tools=b.tools||{version:"1.2.5"};var l;l=b.tools.expose={conf:{maskId:"exposeMask",loadSpeed:"slow",closeSpeed:"fast",closeOnClick:true,closeOnEsc:true,zIndex:9998,opacity:0.8,startOpacity:0,color:"#fff",onLoad:null,
-onClose:null}};var c,i,e,g,j;b.mask={load:function(a,d){if(e)return this;if(typeof a=="string")a={color:a};a=a||g;g=a=b.extend(b.extend({},l.conf),a);c=b("#"+a.maskId);if(!c.length){c=b("<div/>").attr("id",a.maskId);b("body").append(c)}var m=k();c.css({position:"absolute",top:0,left:0,width:m[0],height:m[1],display:"none",opacity:a.startOpacity,zIndex:a.zIndex});a.color&&c.css("backgroundColor",a.color);if(h(a.onBeforeLoad)===false)return this;a.closeOnEsc&&b(document).bind("keydown.mask",function(f){f.keyCode==
-27&&b.mask.close(f)});a.closeOnClick&&c.bind("click.mask",function(f){b.mask.close(f)});b(window).bind("resize.mask",function(){b.mask.fit()});if(d&&d.length){j=d.eq(0).css("zIndex");b.each(d,function(){var f=b(this);/relative|absolute|fixed/i.test(f.css("position"))||f.css("position","relative")});i=d.css({zIndex:Math.max(a.zIndex+1,j=="auto"?0:j)})}c.css({display:"block"}).fadeTo(a.loadSpeed,a.opacity,function(){b.mask.fit();h(a.onLoad);e="full"});e=true;return this},close:function(){if(e){if(h(g.onBeforeClose)===
-false)return this;c.fadeOut(g.closeSpeed,function(){h(g.onClose);i&&i.css({zIndex:j});e=false});b(document).unbind("keydown.mask");c.unbind("click.mask");b(window).unbind("resize.mask")}return this},fit:function(){if(e){var a=k();c.css({width:a[0],height:a[1]})}},getMask:function(){return c},isLoaded:function(a){return a?e=="full":e},getConf:function(){return g},getExposed:function(){return i}};b.fn.mask=function(a){b.mask.load(a);return this};b.fn.expose=function(a){b.mask.load(a,this);return this}})(jQuery);
-(function(b){function c(a){switch(a.type){case "mousemove":return b.extend(a.data,{clientX:a.clientX,clientY:a.clientY,pageX:a.pageX,pageY:a.pageY});case "DOMMouseScroll":b.extend(a,a.data);a.delta=-a.detail/3;break;case "mousewheel":a.delta=a.wheelDelta/120;break}a.type="wheel";return b.event.handle.call(this,a,a.delta)}b.fn.mousewheel=function(a){return this[a?"bind":"trigger"]("wheel",a)};b.event.special.wheel={setup:function(){b.event.add(this,d,c,{})},teardown:function(){b.event.remove(this,
-d,c)}};var d=!b.browser.mozilla?"mousewheel":"DOMMouseScroll"+(b.browser.version<"1.9"?" mousemove":"")})(jQuery);
-(function(c){function p(d,b,a){var e=this,l=d.add(this),h=d.find(a.tabs),i=b.jquery?b:d.children(b),j;h.length||(h=d.children());i.length||(i=d.parent().find(b));i.length||(i=c(b));c.extend(this,{click:function(f,g){var k=h.eq(f);if(typeof f=="string"&&f.replace("#","")){k=h.filter("[href*="+f.replace("#","")+"]");f=Math.max(h.index(k),0)}if(a.rotate){var n=h.length-1;if(f<0)return e.click(n,g);if(f>n)return e.click(0,g)}if(!k.length){if(j>=0)return e;f=a.initialIndex;k=h.eq(f)}if(f===j)return e;
-g=g||c.Event();g.type="onBeforeClick";l.trigger(g,[f]);if(!g.isDefaultPrevented()){o[a.effect].call(e,f,function(){g.type="onClick";l.trigger(g,[f])});j=f;h.removeClass(a.current);k.addClass(a.current);return e}},getConf:function(){return a},getTabs:function(){return h},getPanes:function(){return i},getCurrentPane:function(){return i.eq(j)},getCurrentTab:function(){return h.eq(j)},getIndex:function(){return j},next:function(){return e.click(j+1)},prev:function(){return e.click(j-1)},destroy:function(){h.unbind(a.event).removeClass(a.current);
-i.find("a[href^=#]").unbind("click.T");return e}});c.each("onBeforeClick,onClick".split(","),function(f,g){c.isFunction(a[g])&&c(e).bind(g,a[g]);e[g]=function(k){k&&c(e).bind(g,k);return e}});if(a.history&&c.fn.history){c.tools.history.init(h);a.event="history"}h.each(function(f){c(this).bind(a.event,function(g){e.click(f,g);return g.preventDefault()})});i.find("a[href^=#]").bind("click.T",function(f){e.click(c(this).attr("href"),f)});if(location.hash&&a.tabs=="a"&&d.find("[href="+location.hash+"]").length)e.click(location.hash);
-else if(a.initialIndex===0||a.initialIndex>0)e.click(a.initialIndex)}c.tools=c.tools||{version:"1.2.5"};c.tools.tabs={conf:{tabs:"a",current:"current",onBeforeClick:null,onClick:null,effect:"default",initialIndex:0,event:"click",rotate:false,history:false},addEffect:function(d,b){o[d]=b}};var o={"default":function(d,b){this.getPanes().hide().eq(d).show();b.call()},fade:function(d,b){var a=this.getConf(),e=a.fadeOutSpeed,l=this.getPanes();e?l.fadeOut(e):l.hide();l.eq(d).fadeIn(a.fadeInSpeed,b)},slide:function(d,
-b){this.getPanes().slideUp(200);this.getPanes().eq(d).slideDown(400,b)},ajax:function(d,b){this.getPanes().eq(0).load(this.getTabs().eq(d).attr("href"),b)}},m;c.tools.tabs.addEffect("horizontal",function(d,b){m||(m=this.getPanes().eq(0).width());this.getCurrentPane().animate({width:0},function(){c(this).hide()});this.getPanes().eq(d).animate({width:m},function(){c(this).show();b.call()})});c.fn.tabs=function(d,b){var a=this.data("tabs");if(a){a.destroy();this.removeData("tabs")}if(c.isFunction(b))b=
-{onBeforeClick:b};b=c.extend({},c.tools.tabs.conf,b);this.each(function(){a=new p(c(this),d,b);c(this).data("tabs",a)});return b.api?a:this}})(jQuery);
-(function(c){function p(g,a){function m(f){var e=c(f);return e.length<2?e:g.parent().find(f)}var b=this,i=g.add(this),d=g.data("tabs"),h,j=true,n=m(a.next).click(function(){d.next()}),k=m(a.prev).click(function(){d.prev()});c.extend(b,{getTabs:function(){return d},getConf:function(){return a},play:function(){if(h)return b;var f=c.Event("onBeforePlay");i.trigger(f);if(f.isDefaultPrevented())return b;h=setInterval(d.next,a.interval);j=false;i.trigger("onPlay");return b},pause:function(){if(!h)return b;
-var f=c.Event("onBeforePause");i.trigger(f);if(f.isDefaultPrevented())return b;h=clearInterval(h);i.trigger("onPause");return b},stop:function(){b.pause();j=true}});c.each("onBeforePlay,onPlay,onBeforePause,onPause".split(","),function(f,e){c.isFunction(a[e])&&c(b).bind(e,a[e]);b[e]=function(q){return c(b).bind(e,q)}});a.autopause&&d.getTabs().add(n).add(k).add(d.getPanes()).hover(b.pause,function(){j||b.play()});a.autoplay&&b.play();a.clickable&&d.getPanes().click(function(){d.next()});if(!d.getConf().rotate){var l=
-a.disabledClass;d.getIndex()||k.addClass(l);d.onBeforeClick(function(f,e){k.toggleClass(l,!e);n.toggleClass(l,e==d.getTabs().length-1)})}}var o;o=c.tools.tabs.slideshow={conf:{next:".forward",prev:".backward",disabledClass:"disabled",autoplay:false,autopause:true,interval:3E3,clickable:true,api:false}};c.fn.slideshow=function(g){var a=this.data("slideshow");if(a)return a;g=c.extend({},o.conf,g);this.each(function(){a=new p(c(this),g);c(this).data("slideshow",a)});return g.api?a:this}})(jQuery);
-(function(f){function p(a,b,c){var h=c.relative?a.position().top:a.offset().top,d=c.relative?a.position().left:a.offset().left,i=c.position[0];h-=b.outerHeight()-c.offset[0];d+=a.outerWidth()+c.offset[1];if(/iPad/i.test(navigator.userAgent))h-=f(window).scrollTop();var j=b.outerHeight()+a.outerHeight();if(i=="center")h+=j/2;if(i=="bottom")h+=j;i=c.position[1];a=b.outerWidth()+a.outerWidth();if(i=="center")d-=a/2;if(i=="left")d-=a;return{top:h,left:d}}function u(a,b){var c=this,h=a.add(c),d,i=0,j=
-0,m=a.attr("title"),q=a.attr("data-tooltip"),r=o[b.effect],l,s=a.is(":input"),v=s&&a.is(":checkbox, :radio, select, :button, :submit"),t=a.attr("type"),k=b.events[t]||b.events[s?v?"widget":"input":"def"];if(!r)throw'Nonexistent effect "'+b.effect+'"';k=k.split(/,\s*/);if(k.length!=2)throw"Tooltip: bad events configuration for "+t;a.bind(k[0],function(e){clearTimeout(i);if(b.predelay)j=setTimeout(function(){c.show(e)},b.predelay);else c.show(e)}).bind(k[1],function(e){clearTimeout(j);if(b.delay)i=
-setTimeout(function(){c.hide(e)},b.delay);else c.hide(e)});if(m&&b.cancelDefault){a.removeAttr("title");a.data("title",m)}f.extend(c,{show:function(e){if(!d){if(q)d=f(q);else if(b.tip)d=f(b.tip).eq(0);else if(m)d=f(b.layout).addClass(b.tipClass).appendTo(document.body).hide().append(m);else{d=a.next();d.length||(d=a.parent().next())}if(!d.length)throw"Cannot find tooltip for "+a;}if(c.isShown())return c;d.stop(true,true);var g=p(a,d,b);b.tip&&d.html(a.data("title"));e=e||f.Event();e.type="onBeforeShow";
-h.trigger(e,[g]);if(e.isDefaultPrevented())return c;g=p(a,d,b);d.css({position:"absolute",top:g.top,left:g.left});l=true;r[0].call(c,function(){e.type="onShow";l="full";h.trigger(e)});g=b.events.tooltip.split(/,\s*/);if(!d.data("__set")){d.bind(g[0],function(){clearTimeout(i);clearTimeout(j)});g[1]&&!a.is("input:not(:checkbox, :radio), textarea")&&d.bind(g[1],function(n){n.relatedTarget!=a[0]&&a.trigger(k[1].split(" ")[0])});d.data("__set",true)}return c},hide:function(e){if(!d||!c.isShown())return c;
-e=e||f.Event();e.type="onBeforeHide";h.trigger(e);if(!e.isDefaultPrevented()){l=false;o[b.effect][1].call(c,function(){e.type="onHide";h.trigger(e)});return c}},isShown:function(e){return e?l=="full":l},getConf:function(){return b},getTip:function(){return d},getTrigger:function(){return a}});f.each("onHide,onBeforeShow,onShow,onBeforeHide".split(","),function(e,g){f.isFunction(b[g])&&f(c).bind(g,b[g]);c[g]=function(n){n&&f(c).bind(g,n);return c}})}f.tools=f.tools||{version:"1.2.5"};f.tools.tooltip=
-{conf:{effect:"toggle",fadeOutSpeed:"fast",predelay:0,delay:30,opacity:1,tip:0,position:["top","center"],offset:[0,0],relative:false,cancelDefault:true,events:{def:"mouseenter,mouseleave",input:"focus,blur",widget:"focus mouseenter,blur mouseleave",tooltip:"mouseenter,mouseleave"},layout:"<div/>",tipClass:"tooltip"},addEffect:function(a,b,c){o[a]=[b,c]}};var o={toggle:[function(a){var b=this.getConf(),c=this.getTip();b=b.opacity;b<1&&c.css({opacity:b});c.show();a.call()},function(a){this.getTip().hide();
-a.call()}],fade:[function(a){var b=this.getConf();this.getTip().fadeTo(b.fadeInSpeed,b.opacity,a)},function(a){this.getTip().fadeOut(this.getConf().fadeOutSpeed,a)}]};f.fn.tooltip=function(a){var b=this.data("tooltip");if(b)return b;a=f.extend(true,{},f.tools.tooltip.conf,a);if(typeof a.position=="string")a.position=a.position.split(/,?\s/);this.each(function(){b=new u(f(this),a);f(this).data("tooltip",b)});return a.api?b:this}})(jQuery);
-(function(d){var i=d.tools.tooltip;d.extend(i.conf,{direction:"up",bounce:false,slideOffset:10,slideInSpeed:200,slideOutSpeed:200,slideFade:!d.browser.msie});var e={up:["-","top"],down:["+","top"],left:["-","left"],right:["+","left"]};i.addEffect("slide",function(g){var a=this.getConf(),f=this.getTip(),b=a.slideFade?{opacity:a.opacity}:{},c=e[a.direction]||e.up;b[c[1]]=c[0]+"="+a.slideOffset;a.slideFade&&f.css({opacity:0});f.show().animate(b,a.slideInSpeed,g)},function(g){var a=this.getConf(),f=a.slideOffset,
-b=a.slideFade?{opacity:0}:{},c=e[a.direction]||e.up,h=""+c[0];if(a.bounce)h=h=="+"?"-":"+";b[c[1]]=h+"="+f;this.getTip().animate(b,a.slideOutSpeed,function(){d(this).hide();g.call()})})})(jQuery);
-(function(g){function j(a){var c=g(window),d=c.width()+c.scrollLeft(),h=c.height()+c.scrollTop();return[a.offset().top<=c.scrollTop(),d<=a.offset().left+a.width(),h<=a.offset().top+a.height(),c.scrollLeft()>=a.offset().left]}function k(a){for(var c=a.length;c--;)if(a[c])return false;return true}var i=g.tools.tooltip;i.dynamic={conf:{classNames:"top right bottom left"}};g.fn.dynamic=function(a){if(typeof a=="number")a={speed:a};a=g.extend({},i.dynamic.conf,a);var c=a.classNames.split(/\s/),d;this.each(function(){var h=
-g(this).tooltip().onBeforeShow(function(e,f){e=this.getTip();var b=this.getConf();d||(d=[b.position[0],b.position[1],b.offset[0],b.offset[1],g.extend({},b)]);g.extend(b,d[4]);b.position=[d[0],d[1]];b.offset=[d[2],d[3]];e.css({visibility:"hidden",position:"absolute",top:f.top,left:f.left}).show();f=j(e);if(!k(f)){if(f[2]){g.extend(b,a.top);b.position[0]="top";e.addClass(c[0])}if(f[3]){g.extend(b,a.right);b.position[1]="right";e.addClass(c[1])}if(f[0]){g.extend(b,a.bottom);b.position[0]="bottom";e.addClass(c[2])}if(f[1]){g.extend(b,
-a.left);b.position[1]="left";e.addClass(c[3])}if(f[0]||f[2])b.offset[0]*=-1;if(f[1]||f[3])b.offset[1]*=-1}e.css({visibility:"visible"}).hide()});h.onBeforeShow(function(){var e=this.getConf();this.getTip();setTimeout(function(){e.position=[d[0],d[1]];e.offset=[d[2],d[3]]},0)});h.onHide(function(){var e=this.getTip();e.removeClass(a.classNames)});ret=h});return a.api?ret:this}})(jQuery);
-(function(e){function p(f,c){var b=e(c);return b.length<2?b:f.parent().find(c)}function u(f,c){var b=this,n=f.add(b),g=f.children(),l=0,j=c.vertical;k||(k=b);if(g.length>1)g=e(c.items,f);e.extend(b,{getConf:function(){return c},getIndex:function(){return l},getSize:function(){return b.getItems().size()},getNaviButtons:function(){return o.add(q)},getRoot:function(){return f},getItemWrap:function(){return g},getItems:function(){return g.children(c.item).not("."+c.clonedClass)},move:function(a,d){return b.seekTo(l+
-a,d)},next:function(a){return b.move(1,a)},prev:function(a){return b.move(-1,a)},begin:function(a){return b.seekTo(0,a)},end:function(a){return b.seekTo(b.getSize()-1,a)},focus:function(){return k=b},addItem:function(a){a=e(a);if(c.circular){g.children("."+c.clonedClass+":last").before(a);g.children("."+c.clonedClass+":first").replaceWith(a.clone().addClass(c.clonedClass))}else g.append(a);n.trigger("onAddItem",[a]);return b},seekTo:function(a,d,h){a.jquery||(a*=1);if(c.circular&&a===0&&l==-1&&d!==
-0)return b;if(!c.circular&&a<0||a>b.getSize()||a<-1)return b;var i=a;if(a.jquery)a=b.getItems().index(a);else i=b.getItems().eq(a);var r=e.Event("onBeforeSeek");if(!h){n.trigger(r,[a,d]);if(r.isDefaultPrevented()||!i.length)return b}i=j?{top:-i.position().top}:{left:-i.position().left};l=a;k=b;if(d===undefined)d=c.speed;g.animate(i,d,c.easing,h||function(){n.trigger("onSeek",[a])});return b}});e.each(["onBeforeSeek","onSeek","onAddItem"],function(a,d){e.isFunction(c[d])&&e(b).bind(d,c[d]);b[d]=function(h){h&&
-e(b).bind(d,h);return b}});if(c.circular){var s=b.getItems().slice(-1).clone().prependTo(g),t=b.getItems().eq(1).clone().appendTo(g);s.add(t).addClass(c.clonedClass);b.onBeforeSeek(function(a,d,h){if(!a.isDefaultPrevented())if(d==-1){b.seekTo(s,h,function(){b.end(0)});return a.preventDefault()}else d==b.getSize()&&b.seekTo(t,h,function(){b.begin(0)})});b.seekTo(0,0,function(){})}var o=p(f,c.prev).click(function(){b.prev()}),q=p(f,c.next).click(function(){b.next()});if(!c.circular&&b.getSize()>1){b.onBeforeSeek(function(a,
-d){setTimeout(function(){if(!a.isDefaultPrevented()){o.toggleClass(c.disabledClass,d<=0);q.toggleClass(c.disabledClass,d>=b.getSize()-1)}},1)});c.initialIndex||o.addClass(c.disabledClass)}c.mousewheel&&e.fn.mousewheel&&f.mousewheel(function(a,d){if(c.mousewheel){b.move(d<0?1:-1,c.wheelSpeed||50);return false}});if(c.touch){var m={};g[0].ontouchstart=function(a){a=a.touches[0];m.x=a.clientX;m.y=a.clientY};g[0].ontouchmove=function(a){if(a.touches.length==1&&!g.is(":animated")){var d=a.touches[0],h=
-m.x-d.clientX;d=m.y-d.clientY;b[j&&d>0||!j&&h>0?"next":"prev"]();a.preventDefault()}}}c.keyboard&&e(document).bind("keydown.scrollable",function(a){if(!(!c.keyboard||a.altKey||a.ctrlKey||e(a.target).is(":input")))if(!(c.keyboard!="static"&&k!=b)){var d=a.keyCode;if(j&&(d==38||d==40)){b.move(d==38?-1:1);return a.preventDefault()}if(!j&&(d==37||d==39)){b.move(d==37?-1:1);return a.preventDefault()}}});c.initialIndex&&b.seekTo(c.initialIndex,0,function(){})}e.tools=e.tools||{version:"1.2.5"};e.tools.scrollable=
-{conf:{activeClass:"active",circular:false,clonedClass:"cloned",disabledClass:"disabled",easing:"swing",initialIndex:0,item:null,items:".items",keyboard:true,mousewheel:false,next:".next",prev:".prev",speed:400,vertical:false,touch:true,wheelSpeed:0}};var k;e.fn.scrollable=function(f){var c=this.data("scrollable");if(c)return c;f=e.extend({},e.tools.scrollable.conf,f);this.each(function(){c=new u(e(this),f);e(this).data("scrollable",c)});return f.api?c:this}})(jQuery);
-(function(b){var f=b.tools.scrollable;f.autoscroll={conf:{autoplay:true,interval:3E3,autopause:true}};b.fn.autoscroll=function(c){if(typeof c=="number")c={interval:c};var d=b.extend({},f.autoscroll.conf,c),g;this.each(function(){var a=b(this).data("scrollable");if(a)g=a;var e,h=true;a.play=function(){if(!e){h=false;e=setInterval(function(){a.next()},d.interval)}};a.pause=function(){e=clearInterval(e)};a.stop=function(){a.pause();h=true};d.autopause&&a.getRoot().add(a.getNaviButtons()).hover(a.pause,
-a.play);d.autoplay&&a.play()});return d.api?g:this}})(jQuery);
-(function(d){function p(b,g){var h=d(g);return h.length<2?h:b.parent().find(g)}var m=d.tools.scrollable;m.navigator={conf:{navi:".navi",naviItem:null,activeClass:"active",indexed:false,idPrefix:null,history:false}};d.fn.navigator=function(b){if(typeof b=="string")b={navi:b};b=d.extend({},m.navigator.conf,b);var g;this.each(function(){function h(a,c,i){e.seekTo(c);if(j){if(location.hash)location.hash=a.attr("href").replace("#","")}else return i.preventDefault()}function f(){return k.find(b.naviItem||
-"> *")}function n(a){var c=d("<"+(b.naviItem||"a")+"/>").click(function(i){h(d(this),a,i)}).attr("href","#"+a);a===0&&c.addClass(l);b.indexed&&c.text(a+1);b.idPrefix&&c.attr("id",b.idPrefix+a);return c.appendTo(k)}function o(a,c){a=f().eq(c.replace("#",""));a.length||(a=f().filter("[href="+c+"]"));a.click()}var e=d(this).data("scrollable"),k=b.navi.jquery?b.navi:p(e.getRoot(),b.navi),q=e.getNaviButtons(),l=b.activeClass,j=b.history&&d.fn.history;if(e)g=e;e.getNaviButtons=function(){return q.add(k)};
-f().length?f().each(function(a){d(this).click(function(c){h(d(this),a,c)})}):d.each(e.getItems(),function(a){n(a)});e.onBeforeSeek(function(a,c){setTimeout(function(){if(!a.isDefaultPrevented()){var i=f().eq(c);!a.isDefaultPrevented()&&i.length&&f().removeClass(l).eq(c).addClass(l)}},1)});e.onAddItem(function(a,c){c=n(e.getItems().index(c));j&&c.history(o)});j&&f().history(o)});return b.api?g:this}})(jQuery);
-(function(a){function t(d,b){var c=this,j=d.add(c),o=a(window),k,f,m,g=a.tools.expose&&(b.mask||b.expose),n=Math.random().toString().slice(10);if(g){if(typeof g=="string")g={color:g};g.closeOnClick=g.closeOnEsc=false}var p=b.target||d.attr("rel");f=p?a(p):d;if(!f.length)throw"Could not find Overlay: "+p;d&&d.index(f)==-1&&d.click(function(e){c.load(e);return e.preventDefault()});a.extend(c,{load:function(e){if(c.isOpened())return c;var h=q[b.effect];if(!h)throw'Overlay: cannot find effect : "'+b.effect+
-'"';b.oneInstance&&a.each(s,function(){this.close(e)});e=e||a.Event();e.type="onBeforeLoad";j.trigger(e);if(e.isDefaultPrevented())return c;m=true;g&&a(f).expose(g);var i=b.top,r=b.left,u=f.outerWidth({margin:true}),v=f.outerHeight({margin:true});if(typeof i=="string")i=i=="center"?Math.max((o.height()-v)/2,0):parseInt(i,10)/100*o.height();if(r=="center")r=Math.max((o.width()-u)/2,0);h[0].call(c,{top:i,left:r},function(){if(m){e.type="onLoad";j.trigger(e)}});g&&b.closeOnClick&&a.mask.getMask().one("click",
-c.close);b.closeOnClick&&a(document).bind("click."+n,function(l){a(l.target).parents(f).length||c.close(l)});b.closeOnEsc&&a(document).bind("keydown."+n,function(l){l.keyCode==27&&c.close(l)});return c},close:function(e){if(!c.isOpened())return c;e=e||a.Event();e.type="onBeforeClose";j.trigger(e);if(!e.isDefaultPrevented()){m=false;q[b.effect][1].call(c,function(){e.type="onClose";j.trigger(e)});a(document).unbind("click."+n).unbind("keydown."+n);g&&a.mask.close();return c}},getOverlay:function(){return f},
-getTrigger:function(){return d},getClosers:function(){return k},isOpened:function(){return m},getConf:function(){return b}});a.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","),function(e,h){a.isFunction(b[h])&&a(c).bind(h,b[h]);c[h]=function(i){i&&a(c).bind(h,i);return c}});k=f.find(b.close||".close");if(!k.length&&!b.close){k=a('<a class="close"></a>');f.prepend(k)}k.click(function(e){c.close(e)});b.load&&c.load()}a.tools=a.tools||{version:"1.2.5"};a.tools.overlay={addEffect:function(d,
-b,c){q[d]=[b,c]},conf:{close:null,closeOnClick:true,closeOnEsc:true,closeSpeed:"fast",effect:"default",fixed:!a.browser.msie||a.browser.version>6,left:"center",load:false,mask:null,oneInstance:true,speed:"normal",target:null,top:"10%"}};var s=[],q={};a.tools.overlay.addEffect("default",function(d,b){var c=this.getConf(),j=a(window);if(!c.fixed){d.top+=j.scrollTop();d.left+=j.scrollLeft()}d.position=c.fixed?"fixed":"absolute";this.getOverlay().css(d).fadeIn(c.speed,b)},function(d){this.getOverlay().fadeOut(this.getConf().closeSpeed,
-d)});a.fn.overlay=function(d){var b=this.data("overlay");if(b)return b;if(a.isFunction(d))d={onBeforeLoad:d};d=a.extend(true,{},a.tools.overlay.conf,d);this.each(function(){b=new t(a(this),d);s.push(b);a(this).data("overlay",b)});return d.api?b:this}})(jQuery);
-(function(h){function k(d){var e=d.offset();return{top:e.top+d.height()/2,left:e.left+d.width()/2}}var l=h.tools.overlay,f=h(window);h.extend(l.conf,{start:{top:null,left:null},fadeInSpeed:"fast",zIndex:9999});function o(d,e){var a=this.getOverlay(),c=this.getConf(),g=this.getTrigger(),p=this,m=a.outerWidth({margin:true}),b=a.data("img"),n=c.fixed?"fixed":"absolute";if(!b){b=a.css("backgroundImage");if(!b)throw"background-image CSS property not set for overlay";b=b.slice(b.indexOf("(")+1,b.indexOf(")")).replace(/\"/g,
-"");a.css("backgroundImage","none");b=h('<img src="'+b+'"/>');b.css({border:0,display:"none"}).width(m);h("body").append(b);a.data("img",b)}var i=c.start.top||Math.round(f.height()/2),j=c.start.left||Math.round(f.width()/2);if(g){g=k(g);i=g.top;j=g.left}if(c.fixed){i-=f.scrollTop();j-=f.scrollLeft()}else{d.top+=f.scrollTop();d.left+=f.scrollLeft()}b.css({position:"absolute",top:i,left:j,width:0,zIndex:c.zIndex}).show();d.position=n;a.css(d);b.animate({top:a.css("top"),left:a.css("left"),width:m},
-c.speed,function(){a.css("zIndex",c.zIndex+1).fadeIn(c.fadeInSpeed,function(){p.isOpened()&&!h(this).index(a)?e.call():a.hide()})}).css("position",n)}function q(d){var e=this.getOverlay().hide(),a=this.getConf(),c=this.getTrigger();e=e.data("img");var g={top:a.start.top,left:a.start.left,width:0};c&&h.extend(g,k(c));a.fixed&&e.css({position:"absolute"}).animate({top:"+="+f.scrollTop(),left:"+="+f.scrollLeft()},0);e.animate(g,a.closeSpeed,d)}l.addEffect("apple",o,q)})(jQuery);
-(function(d){function R(a,c){return 32-(new Date(a,c,32)).getDate()}function S(a,c){a=""+a;for(c=c||2;a.length<c;)a="0"+a;return a}function T(a,c,i){var p=a.getDate(),h=a.getDay(),q=a.getMonth();a=a.getFullYear();var f={d:p,dd:S(p),ddd:B[i].shortDays[h],dddd:B[i].days[h],m:q+1,mm:S(q+1),mmm:B[i].shortMonths[q],mmmm:B[i].months[q],yy:String(a).slice(2),yyyy:a};c=c.replace(X,function(r){return r in f?f[r]:r.slice(1,r.length-1)});return Y.html(c).html()}function y(a){return parseInt(a,10)}function U(a,
-c){return a.getFullYear()===c.getFullYear()&&a.getMonth()==c.getMonth()&&a.getDate()==c.getDate()}function C(a){if(a){if(a.constructor==Date)return a;if(typeof a=="string"){var c=a.split("-");if(c.length==3)return new Date(y(c[0]),y(c[1])-1,y(c[2]));if(!/^-?\d+$/.test(a))return;a=y(a)}c=new Date;c.setDate(c.getDate()+a);return c}}function Z(a,c){function i(b,e,g){m=b;D=b.getFullYear();E=b.getMonth();G=b.getDate();g=g||d.Event("api");g.type="change";H.trigger(g,[b]);if(!g.isDefaultPrevented()){a.val(T(b,
-e.format,e.lang));a.data("date",b);h.hide(g)}}function p(b){b.type="onShow";H.trigger(b);d(document).bind("keydown.d",function(e){if(e.ctrlKey)return true;var g=e.keyCode;if(g==8){a.val("");return h.hide(e)}if(g==27)return h.hide(e);if(d(V).index(g)>=0){if(!v){h.show(e);return e.preventDefault()}var j=d("#"+f.weeks+" a"),s=d("."+f.focus),n=j.index(s);s.removeClass(f.focus);if(g==74||g==40)n+=7;else if(g==75||g==38)n-=7;else if(g==76||g==39)n+=1;else if(g==72||g==37)n-=1;if(n>41){h.addMonth();s=d("#"+
-f.weeks+" a:eq("+(n-42)+")")}else if(n<0){h.addMonth(-1);s=d("#"+f.weeks+" a:eq("+(n+42)+")")}else s=j.eq(n);s.addClass(f.focus);return e.preventDefault()}if(g==34)return h.addMonth();if(g==33)return h.addMonth(-1);if(g==36)return h.today();if(g==13)d(e.target).is("select")||d("."+f.focus).click();return d([16,17,18,9]).index(g)>=0});d(document).bind("click.d",function(e){var g=e.target;if(!d(g).parents("#"+f.root).length&&g!=a[0]&&(!L||g!=L[0]))h.hide(e)})}var h=this,q=new Date,f=c.css,r=B[c.lang],
-k=d("#"+f.root),M=k.find("#"+f.title),L,I,J,D,E,G,m=a.attr("data-value")||c.value||a.val(),o=a.attr("min")||c.min,t=a.attr("max")||c.max,v;if(o===0)o="0";m=C(m)||q;o=C(o||c.yearRange[0]*365);t=C(t||c.yearRange[1]*365);if(!r)throw"Dateinput: invalid language: "+c.lang;if(a.attr("type")=="date"){var N=d("<input/>");d.each("class,disabled,id,maxlength,name,readonly,required,size,style,tabindex,title,value".split(","),function(b,e){N.attr(e,a.attr(e))});a.replaceWith(N);a=N}a.addClass(f.input);var H=
-a.add(h);if(!k.length){k=d("<div><div><a/><div/><a/></div><div><div/><div/></div></div>").hide().css({position:"absolute"}).attr("id",f.root);k.children().eq(0).attr("id",f.head).end().eq(1).attr("id",f.body).children().eq(0).attr("id",f.days).end().eq(1).attr("id",f.weeks).end().end().end().find("a").eq(0).attr("id",f.prev).end().eq(1).attr("id",f.next);M=k.find("#"+f.head).find("div").attr("id",f.title);if(c.selectors){var z=d("<select/>").attr("id",f.month),A=d("<select/>").attr("id",f.year);M.html(z.add(A))}for(var $=
-k.find("#"+f.days),O=0;O<7;O++)$.append(d("<span/>").text(r.shortDays[(O+c.firstDay)%7]));d("body").append(k)}if(c.trigger)L=d("<a/>").attr("href","#").addClass(f.trigger).click(function(b){h.show();return b.preventDefault()}).insertAfter(a);var K=k.find("#"+f.weeks);A=k.find("#"+f.year);z=k.find("#"+f.month);d.extend(h,{show:function(b){if(!(a.attr("readonly")||a.attr("disabled")||v)){b=b||d.Event();b.type="onBeforeShow";H.trigger(b);if(!b.isDefaultPrevented()){d.each(W,function(){this.hide()});
-v=true;z.unbind("change").change(function(){h.setValue(A.val(),d(this).val())});A.unbind("change").change(function(){h.setValue(d(this).val(),z.val())});I=k.find("#"+f.prev).unbind("click").click(function(){I.hasClass(f.disabled)||h.addMonth(-1);return false});J=k.find("#"+f.next).unbind("click").click(function(){J.hasClass(f.disabled)||h.addMonth();return false});h.setValue(m);var e=a.offset();if(/iPad/i.test(navigator.userAgent))e.top-=d(window).scrollTop();k.css({top:e.top+a.outerHeight({margins:true})+
-c.offset[0],left:e.left+c.offset[1]});if(c.speed)k.show(c.speed,function(){p(b)});else{k.show();p(b)}return h}}},setValue:function(b,e,g){var j;if(parseInt(e,10)>=-1){b=y(b);e=y(e);g=y(g);j=new Date(b,e,g)}else{j=b||m;b=j.getFullYear();e=j.getMonth();g=j.getDate()}if(e==-1){e=11;b--}else if(e==12){e=0;b++}if(!v){i(j,c);return h}E=e;D=b;g=new Date(b,e,1-c.firstDay);g=g.getDay();var s=R(b,e),n=R(b,e-1),P;if(c.selectors){z.empty();d.each(r.months,function(w,F){o<new Date(b,w+1,-1)&&t>new Date(b,w,0)&&
-z.append(d("<option/>").html(F).attr("value",w))});A.empty();j=q.getFullYear();for(var l=j+c.yearRange[0];l<j+c.yearRange[1];l++)o<=new Date(l+1,-1,1)&&t>new Date(l,0,0)&&A.append(d("<option/>").text(l));z.val(e);A.val(b)}else M.html(r.months[e]+" "+b);K.empty();I.add(J).removeClass(f.disabled);l=!g?-7:0;for(var u,x;l<(!g?35:42);l++){u=d("<a/>");if(l%7===0){P=d("<div/>").addClass(f.week);K.append(P)}if(l<g){u.addClass(f.off);x=n-g+l+1;j=new Date(b,e-1,x)}else if(l>=g+s){u.addClass(f.off);x=l-s-g+
-1;j=new Date(b,e+1,x)}else{x=l-g+1;j=new Date(b,e,x);if(U(m,j))u.attr("id",f.current).addClass(f.focus);else U(q,j)&&u.attr("id",f.today)}o&&j<o&&u.add(I).addClass(f.disabled);t&&j>t&&u.add(J).addClass(f.disabled);u.attr("href","#"+x).text(x).data("date",j);P.append(u)}K.find("a").click(function(w){var F=d(this);if(!F.hasClass(f.disabled)){d("#"+f.current).removeAttr("id");F.attr("id",f.current);i(F.data("date"),c,w)}return false});f.sunday&&K.find(f.week).each(function(){var w=c.firstDay?7-c.firstDay:
-0;d(this).children().slice(w,w+1).addClass(f.sunday)});return h},setMin:function(b,e){o=C(b);e&&m<o&&h.setValue(o);return h},setMax:function(b,e){t=C(b);e&&m>t&&h.setValue(t);return h},today:function(){return h.setValue(q)},addDay:function(b){return this.setValue(D,E,G+(b||1))},addMonth:function(b){return this.setValue(D,E+(b||1),G)},addYear:function(b){return this.setValue(D+(b||1),E,G)},hide:function(b){if(v){b=d.Event();b.type="onHide";H.trigger(b);d(document).unbind("click.d").unbind("keydown.d");
-if(b.isDefaultPrevented())return;k.hide();v=false}return h},getConf:function(){return c},getInput:function(){return a},getCalendar:function(){return k},getValue:function(b){return b?T(m,b,c.lang):m},isOpen:function(){return v}});d.each(["onBeforeShow","onShow","change","onHide"],function(b,e){d.isFunction(c[e])&&d(h).bind(e,c[e]);h[e]=function(g){g&&d(h).bind(e,g);return h}});a.bind("focus click",h.show).keydown(function(b){var e=b.keyCode;if(!v&&d(V).index(e)>=0){h.show(b);return b.preventDefault()}return b.shiftKey||
-b.ctrlKey||b.altKey||e==9?true:b.preventDefault()});C(a.val())&&i(m,c)}d.tools=d.tools||{version:"1.2.5"};var W=[],Q,V=[75,76,38,39,74,72,40,37],B={};Q=d.tools.dateinput={conf:{format:"mm/dd/yy",selectors:false,yearRange:[-5,5],lang:"en",offset:[0,0],speed:0,firstDay:0,min:undefined,max:undefined,trigger:false,css:{prefix:"cal",input:"date",root:0,head:0,title:0,prev:0,next:0,month:0,year:0,days:0,body:0,weeks:0,today:0,current:0,week:0,off:0,sunday:0,focus:0,disabled:0,trigger:0}},localize:function(a,
-c){d.each(c,function(i,p){c[i]=p.split(",")});B[a]=c}};Q.localize("en",{months:"January,February,March,April,May,June,July,August,September,October,November,December",shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",days:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday",shortDays:"Sun,Mon,Tue,Wed,Thu,Fri,Sat"});var X=/d{1,4}|m{1,4}|yy(?:yy)?|"[^"]*"|'[^']*'/g,Y=d("<a/>");d.expr[":"].date=function(a){var c=a.getAttribute("type");return c&&c=="date"||!!d(a).data("dateinput")};
-d.fn.dateinput=function(a){if(this.data("dateinput"))return this;a=d.extend(true,{},Q.conf,a);d.each(a.css,function(i,p){if(!p&&i!="prefix")a.css[i]=(a.css.prefix||"")+(p||i)});var c;this.each(function(){var i=new Z(d(this),a);W.push(i);i=i.getInput().data("dateinput",i);c=c?c.add(i):i});return c?c:this}})(jQuery);
-(function(e){function F(d,a){a=Math.pow(10,a);return Math.round(d*a)/a}function q(d,a){if(a=parseInt(d.css(a),10))return a;return(d=d[0].currentStyle)&&d.width&&parseInt(d.width,10)}function C(d){return(d=d.data("events"))&&d.onSlide}function G(d,a){function h(c,b,f,j){if(f===undefined)f=b/k*z;else if(j)f-=a.min;if(s)f=Math.round(f/s)*s;if(b===undefined||s)b=f*k/z;if(isNaN(f))return g;b=Math.max(0,Math.min(b,k));f=b/k*z;if(j||!n)f+=a.min;if(n)if(j)b=k-b;else f=a.max-f;f=F(f,t);var r=c.type=="click";
-if(D&&l!==undefined&&!r){c.type="onSlide";A.trigger(c,[f,b]);if(c.isDefaultPrevented())return g}j=r?a.speed:0;r=r?function(){c.type="change";A.trigger(c,[f])}:null;if(n){m.animate({top:b},j,r);a.progress&&B.animate({height:k-b+m.width()/2},j)}else{m.animate({left:b},j,r);a.progress&&B.animate({width:b+m.width()/2},j)}l=f;H=b;d.val(f);return g}function o(){if(n=a.vertical||q(i,"height")>q(i,"width")){k=q(i,"height")-q(m,"height");u=i.offset().top+k}else{k=q(i,"width")-q(m,"width");u=i.offset().left}}
-function v(){o();g.setValue(a.value!==undefined?a.value:a.min)}var g=this,p=a.css,i=e("<div><div/><a href='#'/></div>").data("rangeinput",g),n,l,u,k,H;d.before(i);var m=i.addClass(p.slider).find("a").addClass(p.handle),B=i.find("div").addClass(p.progress);e.each("min,max,step,value".split(","),function(c,b){c=d.attr(b);if(parseFloat(c))a[b]=parseFloat(c,10)});var z=a.max-a.min,s=a.step=="any"?0:a.step,t=a.precision;if(t===undefined)try{t=s.toString().split(".")[1].length}catch(I){t=0}if(d.attr("type")==
-"range"){var w=e("<input/>");e.each("class,disabled,id,maxlength,name,readonly,required,size,style,tabindex,title,value".split(","),function(c,b){w.attr(b,d.attr(b))});w.val(a.value);d.replaceWith(w);d=w}d.addClass(p.input);var A=e(g).add(d),D=true;e.extend(g,{getValue:function(){return l},setValue:function(c,b){o();return h(b||e.Event("api"),undefined,c,true)},getConf:function(){return a},getProgress:function(){return B},getHandle:function(){return m},getInput:function(){return d},step:function(c,
-b){b=b||e.Event();var f=a.step=="any"?1:a.step;g.setValue(l+f*(c||1),b)},stepUp:function(c){return g.step(c||1)},stepDown:function(c){return g.step(-c||-1)}});e.each("onSlide,change".split(","),function(c,b){e.isFunction(a[b])&&e(g).bind(b,a[b]);g[b]=function(f){f&&e(g).bind(b,f);return g}});m.drag({drag:false}).bind("dragStart",function(){o();D=C(e(g))||C(d)}).bind("drag",function(c,b,f){if(d.is(":disabled"))return false;h(c,n?b:f)}).bind("dragEnd",function(c){if(!c.isDefaultPrevented()){c.type=
-"change";A.trigger(c,[l])}}).click(function(c){return c.preventDefault()});i.click(function(c){if(d.is(":disabled")||c.target==m[0])return c.preventDefault();o();var b=m.width()/2;h(c,n?k-u-b+c.pageY:c.pageX-u-b)});a.keyboard&&d.keydown(function(c){if(!d.attr("readonly")){var b=c.keyCode,f=e([75,76,38,33,39]).index(b)!=-1,j=e([74,72,40,34,37]).index(b)!=-1;if((f||j)&&!(c.shiftKey||c.altKey||c.ctrlKey)){if(f)g.step(b==33?10:1,c);else if(j)g.step(b==34?-10:-1,c);return c.preventDefault()}}});d.blur(function(c){var b=
-e(this).val();b!==l&&g.setValue(b,c)});e.extend(d[0],{stepUp:g.stepUp,stepDown:g.stepDown});v();k||e(window).load(v)}e.tools=e.tools||{version:"1.2.5"};var E;E=e.tools.rangeinput={conf:{min:0,max:100,step:"any",steps:0,value:0,precision:undefined,vertical:0,keyboard:true,progress:false,speed:100,css:{input:"range",slider:"slider",progress:"progress",handle:"handle"}}};var x,y;e.fn.drag=function(d){document.ondragstart=function(){return false};d=e.extend({x:true,y:true,drag:true},d);x=x||e(document).bind("mousedown mouseup",
-function(a){var h=e(a.target);if(a.type=="mousedown"&&h.data("drag")){var o=h.position(),v=a.pageX-o.left,g=a.pageY-o.top,p=true;x.bind("mousemove.drag",function(i){var n=i.pageX-v;i=i.pageY-g;var l={};if(d.x)l.left=n;if(d.y)l.top=i;if(p){h.trigger("dragStart");p=false}d.drag&&h.css(l);h.trigger("drag",[i,n]);y=h});a.preventDefault()}else try{y&&y.trigger("dragEnd")}finally{x.unbind("mousemove.drag");y=null}});return this.data("drag",true)};e.expr[":"].range=function(d){var a=d.getAttribute("type");
-return a&&a=="range"||!!e(d).filter("input").data("rangeinput")};e.fn.rangeinput=function(d){if(this.data("rangeinput"))return this;d=e.extend(true,{},E.conf,d);var a;this.each(function(){var h=new G(e(this),e.extend(true,{},d));h=h.getInput().data("rangeinput",h);a=a?a.add(h):h});return a?a:this}})(jQuery);
-(function(e){function t(a,b,c){var k=a.offset().top,f=a.offset().left,l=c.position.split(/,?\s+/),p=l[0];l=l[1];k-=b.outerHeight()-c.offset[0];f+=a.outerWidth()+c.offset[1];if(/iPad/i.test(navigator.userAgent))k-=e(window).scrollTop();c=b.outerHeight()+a.outerHeight();if(p=="center")k+=c/2;if(p=="bottom")k+=c;a=a.outerWidth();if(l=="center")f-=(a+b.outerWidth())/2;if(l=="left")f-=a;return{top:k,left:f}}function y(a){function b(){return this.getAttribute("type")==a}b.key="[type="+a+"]";return b}function u(a,
-b,c){function k(g,d,i){if(!(!c.grouped&&g.length)){var j;if(i===false||e.isArray(i)){j=h.messages[d.key||d]||h.messages["*"];j=j[c.lang]||h.messages["*"].en;(d=j.match(/\$\d/g))&&e.isArray(i)&&e.each(d,function(m){j=j.replace(this,i[m])})}else j=i[c.lang]||i;g.push(j)}}var f=this,l=b.add(f);a=a.not(":button, :image, :reset, :submit");e.extend(f,{getConf:function(){return c},getForm:function(){return b},getInputs:function(){return a},reflow:function(){a.each(function(){var g=e(this),d=g.data("msg.el");
-if(d){g=t(g,d,c);d.css({top:g.top,left:g.left})}});return f},invalidate:function(g,d){if(!d){var i=[];e.each(g,function(j,m){j=a.filter("[name='"+j+"']");if(j.length){j.trigger("OI",[m]);i.push({input:j,messages:[m]})}});g=i;d=e.Event()}d.type="onFail";l.trigger(d,[g]);d.isDefaultPrevented()||q[c.effect][0].call(f,g,d);return f},reset:function(g){g=g||a;g.removeClass(c.errorClass).each(function(){var d=e(this).data("msg.el");if(d){d.remove();e(this).data("msg.el",null)}}).unbind(c.errorInputEvent||
-"");return f},destroy:function(){b.unbind(c.formEvent+".V").unbind("reset.V");a.unbind(c.inputEvent+".V").unbind("change.V");return f.reset()},checkValidity:function(g,d){g=g||a;g=g.not(":disabled");if(!g.length)return true;d=d||e.Event();d.type="onBeforeValidate";l.trigger(d,[g]);if(d.isDefaultPrevented())return d.result;var i=[];g.not(":radio:not(:checked)").each(function(){var m=[],n=e(this).data("messages",m),v=r&&n.is(":date")?"onHide.v":c.errorInputEvent+".v";n.unbind(v);e.each(w,function(){var o=
-this,s=o[0];if(n.filter(s).length){o=o[1].call(f,n,n.val());if(o!==true){d.type="onBeforeFail";l.trigger(d,[n,s]);if(d.isDefaultPrevented())return false;var x=n.attr(c.messageAttr);if(x){m=[x];return false}else k(m,s,o)}}});if(m.length){i.push({input:n,messages:m});n.trigger("OI",[m]);c.errorInputEvent&&n.bind(v,function(o){f.checkValidity(n,o)})}if(c.singleError&&i.length)return false});var j=q[c.effect];if(!j)throw'Validator: cannot find effect "'+c.effect+'"';if(i.length){f.invalidate(i,d);return false}else{j[1].call(f,
-g,d);d.type="onSuccess";l.trigger(d,[g]);g.unbind(c.errorInputEvent+".v")}return true}});e.each("onBeforeValidate,onBeforeFail,onFail,onSuccess".split(","),function(g,d){e.isFunction(c[d])&&e(f).bind(d,c[d]);f[d]=function(i){i&&e(f).bind(d,i);return f}});c.formEvent&&b.bind(c.formEvent+".V",function(g){if(!f.checkValidity(null,g))return g.preventDefault()});b.bind("reset.V",function(){f.reset()});a[0]&&a[0].validity&&a.each(function(){this.oninvalid=function(){return false}});if(b[0])b[0].checkValidity=
-f.checkValidity;c.inputEvent&&a.bind(c.inputEvent+".V",function(g){f.checkValidity(e(this),g)});a.filter(":checkbox, select").filter("[required]").bind("change.V",function(g){var d=e(this);if(this.checked||d.is("select")&&e(this).val())q[c.effect][1].call(f,d,g)});var p=a.filter(":radio").change(function(g){f.checkValidity(p,g)});e(window).resize(function(){f.reflow()})}e.tools=e.tools||{version:"1.2.5"};var z=/\[type=([a-z]+)\]/,A=/^-?[0-9]*(\.[0-9]+)?$/,r=e.tools.dateinput,B=/^([a-z0-9_\.\-\+]+)@([\da-z\.\-]+)\.([a-z\.]{2,6})$/i,
-C=/^(https?:\/\/)?[\da-z\.\-]+\.[a-z\.]{2,6}[#&+_\?\/\w \.\-=]*$/i,h;h=e.tools.validator={conf:{grouped:false,effect:"default",errorClass:"invalid",inputEvent:null,errorInputEvent:"keyup",formEvent:"submit",lang:"en",message:"<div/>",messageAttr:"data-message",messageClass:"error",offset:[0,0],position:"center right",singleError:false,speed:"normal"},messages:{"*":{en:"Please correct this value"}},localize:function(a,b){e.each(b,function(c,k){h.messages[c]=h.messages[c]||{};h.messages[c][a]=k})},
-localizeFn:function(a,b){h.messages[a]=h.messages[a]||{};e.extend(h.messages[a],b)},fn:function(a,b,c){if(e.isFunction(b))c=b;else{if(typeof b=="string")b={en:b};this.messages[a.key||a]=b}if(b=z.exec(a))a=y(b[1]);w.push([a,c])},addEffect:function(a,b,c){q[a]=[b,c]}};var w=[],q={"default":[function(a){var b=this.getConf();e.each(a,function(c,k){c=k.input;c.addClass(b.errorClass);var f=c.data("msg.el");if(!f){f=e(b.message).addClass(b.messageClass).appendTo(document.body);c.data("msg.el",f)}f.css({visibility:"hidden"}).find("p").remove();
-e.each(k.messages,function(l,p){e("<p/>").html(p).appendTo(f)});f.outerWidth()==f.parent().width()&&f.add(f.find("p")).css({display:"inline"});k=t(c,f,b);f.css({visibility:"visible",position:"absolute",top:k.top,left:k.left}).fadeIn(b.speed)})},function(a){var b=this.getConf();a.removeClass(b.errorClass).each(function(){var c=e(this).data("msg.el");c&&c.css({visibility:"hidden"})})}]};e.each("email,url,number".split(","),function(a,b){e.expr[":"][b]=function(c){return c.getAttribute("type")===b}});
-e.fn.oninvalid=function(a){return this[a?"bind":"trigger"]("OI",a)};h.fn(":email","Please enter a valid email address",function(a,b){return!b||B.test(b)});h.fn(":url","Please enter a valid URL",function(a,b){return!b||C.test(b)});h.fn(":number","Please enter a numeric value.",function(a,b){return A.test(b)});h.fn("[max]","Please enter a value smaller than $1",function(a,b){if(b===""||r&&a.is(":date"))return true;a=a.attr("max");return parseFloat(b)<=parseFloat(a)?true:[a]});h.fn("[min]","Please enter a value larger than $1",
-function(a,b){if(b===""||r&&a.is(":date"))return true;a=a.attr("min");return parseFloat(b)>=parseFloat(a)?true:[a]});h.fn("[required]","Please complete this mandatory field.",function(a,b){if(a.is(":checkbox"))return a.is(":checked");return!!b});h.fn("[pattern]",function(a){var b=new RegExp("^"+a.attr("pattern")+"$");return b.test(a.val())});e.fn.validator=function(a){var b=this.data("validator");if(b){b.destroy();this.removeData("validator")}a=e.extend(true,{},h.conf,a);if(this.is("form"))return this.each(function(){var c=
-e(this);b=new u(c.find(":input"),c,a);c.data("validator",b)});else{b=new u(this,this.eq(0).closest("form"),a);return this.data("validator",b)}}})(jQuery);
--- a/test/integration/allocine_dossier_independant/js/libs/jwplayer.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-if(typeof jwplayer=="undefined"){var jwplayer=function(a){if(jwplayer.api){return jwplayer.api.selectPlayer(a)}};var $jw=jwplayer;jwplayer.version="5.7.1896";jwplayer.vid=document.createElement("video");jwplayer.audio=document.createElement("audio");jwplayer.source=document.createElement("source");(function(b){b.utils=function(){};b.utils.typeOf=function(d){var c=typeof d;if(c==="object"){if(d){if(d instanceof Array){c="array"}}else{c="null"}}return c};b.utils.extend=function(){var c=b.utils.extend["arguments"];if(c.length>1){for(var e=1;e<c.length;e++){for(var d in c[e]){c[0][d]=c[e][d]}}return c[0]}return null};b.utils.clone=function(f){var c;var d=b.utils.clone["arguments"];if(d.length==1){switch(b.utils.typeOf(d[0])){case"object":c={};for(var e in d[0]){c[e]=b.utils.clone(d[0][e])}break;case"array":c=[];for(var e in d[0]){c[e]=b.utils.clone(d[0][e])}break;default:return d[0];break}}return c};b.utils.extension=function(c){if(!c){return""}c=c.substring(c.lastIndexOf("/")+1,c.length);c=c.split("?")[0];if(c.lastIndexOf(".")>-1){return c.substr(c.lastIndexOf(".")+1,c.length).toLowerCase()}return};b.utils.html=function(c,d){c.innerHTML=d};b.utils.wrap=function(c,d){if(c.parentNode){c.parentNode.replaceChild(d,c)}d.appendChild(c)};b.utils.ajax=function(g,f,c){var e;if(window.XMLHttpRequest){e=new XMLHttpRequest()}else{e=new ActiveXObject("Microsoft.XMLHTTP")}e.onreadystatechange=function(){if(e.readyState===4){if(e.status===200){if(f){f(e)}}else{if(c){c(g)}}}};try{e.open("GET",g,true);e.send(null)}catch(d){if(c){c(g)}}return e};b.utils.load=function(d,e,c){d.onreadystatechange=function(){if(d.readyState===4){if(d.status===200){if(e){e()}}else{if(c){c()}}}}};b.utils.find=function(d,c){return d.getElementsByTagName(c)};b.utils.append=function(c,d){c.appendChild(d)};b.utils.isIE=function(){return((!+"\v1")||(typeof window.ActiveXObject!="undefined"))};b.utils.isLegacyAndroid=function(){var c=navigator.userAgent.toLowerCase();return(c.match(/android 2.[012]/i)!==null)};b.utils.isIOS=function(d){if(typeof d=="undefined"){d=/iP(hone|ad|od)/i}var c=navigator.userAgent.toLowerCase();return(c.match(d)!==null)};b.utils.isIPad=function(){return b.utils.isIOS(/iPad/i)};b.utils.isIPod=function(){return b.utils.isIOS(/iP(hone|od)/i)};b.utils.getFirstPlaylistItemFromConfig=function(c){var d={};var e;if(c.playlist&&c.playlist.length){e=c.playlist[0]}else{e=c}d.file=e.file;d.levels=e.levels;d.streamer=e.streamer;d.playlistfile=e.playlistfile;d.provider=e.provider;if(!d.provider){if(d.file&&(d.file.toLowerCase().indexOf("youtube.com")>-1||d.file.toLowerCase().indexOf("youtu.be")>-1)){d.provider="youtube"}if(d.streamer&&d.streamer.toLowerCase().indexOf("rtmp://")==0){d.provider="rtmp"}if(e.type){d.provider=e.type.toLowerCase()}}if(d.provider=="audio"){d.provider="sound"}return d};b.utils.getOuterHTML=function(c){if(c.outerHTML){return c.outerHTML}else{try{return new XMLSerializer().serializeToString(c)}catch(d){return""}}};b.utils.setOuterHTML=function(f,e){if(f.outerHTML){f.outerHTML=e}else{var g=document.createElement("div");g.innerHTML=e;var c=document.createRange();c.selectNodeContents(g);var d=c.extractContents();f.parentNode.insertBefore(d,f);f.parentNode.removeChild(f)}};b.utils.hasFlash=function(){if(typeof navigator.plugins!="undefined"&&typeof navigator.plugins["Shockwave Flash"]!="undefined"){return true}if(typeof window.ActiveXObject!="undefined"){try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash");return true}catch(c){}}return false};b.utils.getPluginName=function(c){if(c.lastIndexOf("/")>=0){c=c.substring(c.lastIndexOf("/")+1,c.length)}if(c.lastIndexOf("-")>=0){c=c.substring(0,c.lastIndexOf("-"))}if(c.lastIndexOf(".swf")>=0){c=c.substring(0,c.lastIndexOf(".swf"))}if(c.lastIndexOf(".js")>=0){c=c.substring(0,c.lastIndexOf(".js"))}return c};b.utils.getPluginVersion=function(c){if(c.lastIndexOf("-")>=0){if(c.lastIndexOf(".js")>=0){return c.substring(c.lastIndexOf("-")+1,c.lastIndexOf(".js"))}else{if(c.lastIndexOf(".swf")>=0){return c.substring(c.lastIndexOf("-")+1,c.lastIndexOf(".swf"))}else{return c.substring(c.lastIndexOf("-")+1)}}}return""};b.utils.getAbsolutePath=function(j,h){if(!b.utils.exists(h)){h=document.location.href}if(!b.utils.exists(j)){return undefined}if(a(j)){return j}var k=h.substring(0,h.indexOf("://")+3);var g=h.substring(k.length,h.indexOf("/",k.length+1));var d;if(j.indexOf("/")===0){d=j.split("/")}else{var e=h.split("?")[0];e=e.substring(k.length+g.length+1,e.lastIndexOf("/"));d=e.split("/").concat(j.split("/"))}var c=[];for(var f=0;f<d.length;f++){if(!d[f]||!b.utils.exists(d[f])||d[f]=="."){continue}else{if(d[f]==".."){c.pop()}else{c.push(d[f])}}}return k+g+"/"+c.join("/")};function a(d){if(!b.utils.exists(d)){return}var e=d.indexOf("://");var c=d.indexOf("?");return(e>0&&(c<0||(c>e)))}b.utils.pluginPathType={ABSOLUTE:"ABSOLUTE",RELATIVE:"RELATIVE",CDN:"CDN"};b.utils.getPluginPathType=function(d){if(typeof d!="string"){return}d=d.split("?")[0];var e=d.indexOf("://");if(e>0){return b.utils.pluginPathType.ABSOLUTE}var c=d.indexOf("/");var f=b.utils.extension(d);if(e<0&&c<0&&(!f||!isNaN(f))){return b.utils.pluginPathType.CDN}return b.utils.pluginPathType.RELATIVE};b.utils.mapEmpty=function(c){for(var d in c){return false}return true};b.utils.mapLength=function(d){var c=0;for(var e in d){c++}return c};b.utils.log=function(d,c){if(typeof console!="undefined"&&typeof console.log!="undefined"){if(c){console.log(d,c)}else{console.log(d)}}};b.utils.css=function(d,g,c){if(b.utils.exists(d)){for(var e in g){try{if(typeof g[e]==="undefined"){continue}else{if(typeof g[e]=="number"&&!(e=="zIndex"||e=="opacity")){if(isNaN(g[e])){continue}if(e.match(/color/i)){g[e]="#"+b.utils.strings.pad(g[e].toString(16),6)}else{g[e]=Math.ceil(g[e])+"px"}}}d.style[e]=g[e]}catch(f){}}}};b.utils.isYouTube=function(c){return(c.indexOf("youtube.com")>-1||c.indexOf("youtu.be")>-1)};b.utils.transform=function(c,d){c.style.webkitTransform=d;c.style.MozTransform=d;c.style.OTransform=d};b.utils.stretch=function(h,n,m,f,l,g){if(typeof m=="undefined"||typeof f=="undefined"||typeof l=="undefined"||typeof g=="undefined"){return}var d=m/l;var e=f/g;var k=0;var j=0;n.style.overflow="hidden";b.utils.transform(n,"");var c={};switch(h.toUpperCase()){case b.utils.stretching.NONE:c.width=l;c.height=g;break;case b.utils.stretching.UNIFORM:if(d>e){c.width=l*e;c.height=g*e}else{c.width=l*d;c.height=g*d}break;case b.utils.stretching.FILL:if(d>e){c.width=l*d;c.height=g*d}else{c.width=l*e;c.height=g*e}break;case b.utils.stretching.EXACTFIT:b.utils.transform(n,["scale(",d,",",e,")"," translate(0px,0px)"].join(""));c.width=l;c.height=g;break;default:break}c.top=(f-c.height)/2;c.left=(m-c.width)/2;b.utils.css(n,c)};b.utils.stretching={NONE:"NONE",FILL:"FILL",UNIFORM:"UNIFORM",EXACTFIT:"EXACTFIT"};b.utils.deepReplaceKeyName=function(h,e,c){switch(b.utils.typeOf(h)){case"array":for(var g=0;g<h.length;g++){h[g]=b.utils.deepReplaceKeyName(h[g],e,c)}break;case"object":for(var f in h){var d=f.replace(new RegExp(e,"g"),c);h[d]=b.utils.deepReplaceKeyName(h[f],e,c);if(f!=d){delete h[f]}}break}return h};b.utils.isInArray=function(e,d){if(!(e)||!(e instanceof Array)){return false}for(var c=0;c<e.length;c++){if(d===e[c]){return true}}return false};b.utils.exists=function(c){switch(typeof(c)){case"string":return(c.length>0);break;case"object":return(c!==null);case"undefined":return false}return true};b.utils.empty=function(c){if(typeof c.hasChildNodes=="function"){while(c.hasChildNodes()){c.removeChild(c.firstChild)}}};b.utils.parseDimension=function(c){if(typeof c=="string"){if(c===""){return 0}else{if(c.lastIndexOf("%")>-1){return c}else{return parseInt(c.replace("px",""),10)}}}return c};b.utils.getDimensions=function(c){if(c&&c.style){return{x:b.utils.parseDimension(c.style.left),y:b.utils.parseDimension(c.style.top),width:b.utils.parseDimension(c.style.width),height:b.utils.parseDimension(c.style.height)}}else{return{}}};b.utils.timeFormat=function(c){str="00:00";if(c>0){str=Math.floor(c/60)<10?"0"+Math.floor(c/60)+":":Math.floor(c/60)+":";str+=Math.floor(c%60)<10?"0"+Math.floor(c%60):Math.floor(c%60)}return str}})(jwplayer);(function(a){a.events=function(){};a.events.COMPLETE="COMPLETE";a.events.ERROR="ERROR"})(jwplayer);(function(jwplayer){jwplayer.events.eventdispatcher=function(debug){var _debug=debug;var _listeners;var _globallisteners;this.resetEventListeners=function(){_listeners={};_globallisteners=[]};this.resetEventListeners();this.addEventListener=function(type,listener,count){try{if(!jwplayer.utils.exists(_listeners[type])){_listeners[type]=[]}if(typeof(listener)=="string"){eval("listener = "+listener)}_listeners[type].push({listener:listener,count:count})}catch(err){jwplayer.utils.log("error",err)}return false};this.removeEventListener=function(type,listener){if(!_listeners[type]){return}try{for(var listenerIndex=0;listenerIndex<_listeners[type].length;listenerIndex++){if(_listeners[type][listenerIndex].listener.toString()==listener.toString()){_listeners[type].splice(listenerIndex,1);break}}}catch(err){jwplayer.utils.log("error",err)}return false};this.addGlobalListener=function(listener,count){try{if(typeof(listener)=="string"){eval("listener = "+listener)}_globallisteners.push({listener:listener,count:count})}catch(err){jwplayer.utils.log("error",err)}return false};this.removeGlobalListener=function(listener){if(!_globallisteners[type]){return}try{for(var globalListenerIndex=0;globalListenerIndex<_globallisteners.length;globalListenerIndex++){if(_globallisteners[globalListenerIndex].listener.toString()==listener.toString()){_globallisteners.splice(globalListenerIndex,1);break}}}catch(err){jwplayer.utils.log("error",err)}return false};this.sendEvent=function(type,data){if(!jwplayer.utils.exists(data)){data={}}if(_debug){jwplayer.utils.log(type,data)}if(typeof _listeners[type]!="undefined"){for(var listenerIndex=0;listenerIndex<_listeners[type].length;listenerIndex++){try{_listeners[type][listenerIndex].listener(data)}catch(err){jwplayer.utils.log("There was an error while handling a listener: "+err.toString(),_listeners[type][listenerIndex].listener)}if(_listeners[type][listenerIndex]){if(_listeners[type][listenerIndex].count===1){delete _listeners[type][listenerIndex]}else{if(_listeners[type][listenerIndex].count>0){_listeners[type][listenerIndex].count=_listeners[type][listenerIndex].count-1}}}}}for(var globalListenerIndex=0;globalListenerIndex<_globallisteners.length;globalListenerIndex++){try{_globallisteners[globalListenerIndex].listener(data)}catch(err){jwplayer.utils.log("There was an error while handling a listener: "+err.toString(),_globallisteners[globalListenerIndex].listener)}if(_globallisteners[globalListenerIndex]){if(_globallisteners[globalListenerIndex].count===1){delete _globallisteners[globalListenerIndex]}else{if(_globallisteners[globalListenerIndex].count>0){_globallisteners[globalListenerIndex].count=_globallisteners[globalListenerIndex].count-1}}}}}}})(jwplayer);(function(a){var b={};a.utils.animations=function(){};a.utils.animations.transform=function(c,d){c.style.webkitTransform=d;c.style.MozTransform=d;c.style.OTransform=d;c.style.msTransform=d};a.utils.animations.transformOrigin=function(c,d){c.style.webkitTransformOrigin=d;c.style.MozTransformOrigin=d;c.style.OTransformOrigin=d;c.style.msTransformOrigin=d};a.utils.animations.rotate=function(c,d){a.utils.animations.transform(c,["rotate(",d,"deg)"].join(""))};a.utils.cancelAnimation=function(c){delete b[c.id]};a.utils.fadeTo=function(m,f,e,j,h,d){if(b[m.id]!=d&&a.utils.exists(d)){return}if(m.style.opacity==f){return}var c=new Date().getTime();if(d>c){setTimeout(function(){a.utils.fadeTo(m,f,e,j,0,d)},d-c)}if(m.style.display=="none"){m.style.display="block"}if(!a.utils.exists(j)){j=m.style.opacity===""?1:m.style.opacity}if(m.style.opacity==f&&m.style.opacity!==""&&a.utils.exists(d)){if(f===0){m.style.display="none"}return}if(!a.utils.exists(d)){d=c;b[m.id]=d}if(!a.utils.exists(h)){h=0}var k=(e>0)?((c-d)/(e*1000)):0;k=k>1?1:k;var l=f-j;var g=j+(k*l);if(g>1){g=1}else{if(g<0){g=0}}m.style.opacity=g;if(h>0){b[m.id]=d+h*1000;a.utils.fadeTo(m,f,e,j,0,b[m.id]);return}setTimeout(function(){a.utils.fadeTo(m,f,e,j,0,d)},10)}})(jwplayer);(function(a){a.utils.arrays=function(){};a.utils.arrays.indexOf=function(c,d){for(var b=0;b<c.length;b++){if(c[b]==d){return b}}return -1};a.utils.arrays.remove=function(c,d){var b=a.utils.arrays.indexOf(c,d);if(b>-1){c.splice(b,1)}}})(jwplayer);(function(a){a.utils.extensionmap={"3gp":{html5:"video/3gpp",flash:"video"},"3gpp":{html5:"video/3gpp"},"3g2":{html5:"video/3gpp2",flash:"video"},"3gpp2":{html5:"video/3gpp2"},flv:{flash:"video"},f4a:{html5:"audio/mp4"},f4b:{html5:"audio/mp4",flash:"video"},f4v:{html5:"video/mp4",flash:"video"},mov:{html5:"video/quicktime",flash:"video"},m4a:{html5:"audio/mp4",flash:"video"},m4b:{html5:"audio/mp4"},m4p:{html5:"audio/mp4"},m4v:{html5:"video/mp4",flash:"video"},mp4:{html5:"video/mp4",flash:"video"},rbs:{flash:"sound"},aac:{html5:"audio/aac",flash:"video"},mp3:{html5:"audio/mp3",flash:"sound"},ogg:{html5:"audio/ogg"},oga:{html5:"audio/ogg"},ogv:{html5:"video/ogg"},webm:{html5:"video/webm"},m3u8:{html5:"audio/x-mpegurl"},gif:{flash:"image"},jpeg:{flash:"image"},jpg:{flash:"image"},swf:{flash:"image"},png:{flash:"image"},wav:{html5:"audio/x-wav"}}})(jwplayer);(function(e){e.utils.mediaparser=function(){};var g={element:{width:"width",height:"height",id:"id","class":"className",name:"name"},media:{src:"file",preload:"preload",autoplay:"autostart",loop:"repeat",controls:"controls"},source:{src:"file",type:"type",media:"media","data-jw-width":"width","data-jw-bitrate":"bitrate"},video:{poster:"image"}};var f={};e.utils.mediaparser.parseMedia=function(j){return d(j)};function c(k,j){if(!e.utils.exists(j)){j=g[k]}else{e.utils.extend(j,g[k])}return j}function d(n,j){if(f[n.tagName.toLowerCase()]&&!e.utils.exists(j)){return f[n.tagName.toLowerCase()](n)}else{j=c("element",j);var o={};for(var k in j){if(k!="length"){var m=n.getAttribute(k);if(e.utils.exists(m)){o[j[k]]=m}}}var l=n.style["#background-color"];if(l&&!(l=="transparent"||l=="rgba(0, 0, 0, 0)")){o.screencolor=l}return o}}function h(n,k){k=c("media",k);var l=[];var j=e.utils.selectors("source",n);for(var m in j){if(!isNaN(m)){l.push(a(j[m]))}}var o=d(n,k);if(e.utils.exists(o.file)){l[0]={file:o.file}}o.levels=l;return o}function a(l,k){k=c("source",k);var j=d(l,k);j.width=j.width?j.width:0;j.bitrate=j.bitrate?j.bitrate:0;return j}function b(l,k){k=c("video",k);var j=h(l,k);return j}f.media=h;f.audio=h;f.source=a;f.video=b})(jwplayer);(function(a){a.utils.loaderstatus={NEW:"NEW",LOADING:"LOADING",ERROR:"ERROR",COMPLETE:"COMPLETE"};a.utils.scriptloader=function(c){var d=a.utils.loaderstatus.NEW;var b=new a.events.eventdispatcher();a.utils.extend(this,b);this.load=function(){if(d==a.utils.loaderstatus.NEW){d=a.utils.loaderstatus.LOADING;var e=document.createElement("script");e.onload=function(f){d=a.utils.loaderstatus.COMPLETE;b.sendEvent(a.events.COMPLETE)};e.onerror=function(f){d=a.utils.loaderstatus.ERROR;b.sendEvent(a.events.ERROR)};e.onreadystatechange=function(){if(e.readyState=="loaded"||e.readyState=="complete"){d=a.utils.loaderstatus.COMPLETE;b.sendEvent(a.events.COMPLETE)}};document.getElementsByTagName("head")[0].appendChild(e);e.src=c}};this.getStatus=function(){return d}}})(jwplayer);(function(a){a.utils.selectors=function(b,e){if(!a.utils.exists(e)){e=document}b=a.utils.strings.trim(b);var c=b.charAt(0);if(c=="#"){return e.getElementById(b.substr(1))}else{if(c=="."){if(e.getElementsByClassName){return e.getElementsByClassName(b.substr(1))}else{return a.utils.selectors.getElementsByTagAndClass("*",b.substr(1))}}else{if(b.indexOf(".")>0){var d=b.split(".");return a.utils.selectors.getElementsByTagAndClass(d[0],d[1])}else{return e.getElementsByTagName(b)}}}return null};a.utils.selectors.getElementsByTagAndClass=function(e,h,g){var j=[];if(!a.utils.exists(g)){g=document}var f=g.getElementsByTagName(e);for(var d=0;d<f.length;d++){if(a.utils.exists(f[d].className)){var c=f[d].className.split(" ");for(var b=0;b<c.length;b++){if(c[b]==h){j.push(f[d])}}}}return j}})(jwplayer);(function(a){a.utils.strings=function(){};a.utils.strings.trim=function(b){return b.replace(/^\s*/,"").replace(/\s*$/,"")};a.utils.strings.pad=function(c,d,b){if(!b){b="0"}while(c.length<d){c=b+c}return c};a.utils.strings.serialize=function(b){if(b==null){return null}else{if(b=="true"){return true}else{if(b=="false"){return false}else{if(isNaN(Number(b))||b.length>5||b.length==0){return b}else{return Number(b)}}}}};a.utils.strings.seconds=function(d){d=d.replace(",",".");var b=d.split(":");var c=0;if(d.substr(-1)=="s"){c=Number(d.substr(0,d.length-1))}else{if(d.substr(-1)=="m"){c=Number(d.substr(0,d.length-1))*60}else{if(d.substr(-1)=="h"){c=Number(d.substr(0,d.length-1))*3600}else{if(b.length>1){c=Number(b[b.length-1]);c+=Number(b[b.length-2])*60;if(b.length==3){c+=Number(b[b.length-3])*3600}}else{c=Number(d)}}}}return c};a.utils.strings.xmlAttribute=function(b,c){for(var d=0;d<b.attributes.length;d++){if(b.attributes[d].name&&b.attributes[d].name.toLowerCase()==c.toLowerCase()){return b.attributes[d].value.toString()}}return""};a.utils.strings.jsonToString=function(f){var h=h||{};if(h&&h.stringify){return h.stringify(f)}var c=typeof(f);if(c!="object"||f===null){if(c=="string"){f='"'+f+'"'}else{return String(f)}}else{var g=[],b=(f&&f.constructor==Array);for(var d in f){var e=f[d];switch(typeof(e)){case"string":e='"'+e+'"';break;case"object":if(a.utils.exists(e)){e=a.utils.strings.jsonToString(e)}break}if(b){if(typeof(e)!="function"){g.push(String(e))}}else{if(typeof(e)!="function"){g.push('"'+d+'":'+String(e))}}}if(b){return"["+String(g)+"]"}else{return"{"+String(g)+"}"}}}})(jwplayer);(function(c){var d=new RegExp(/^(#|0x)[0-9a-fA-F]{3,6}/);c.utils.typechecker=function(g,f){f=!c.utils.exists(f)?b(g):f;return e(g,f)};function b(f){var g=["true","false","t","f"];if(g.toString().indexOf(f.toLowerCase().replace(" ",""))>=0){return"boolean"}else{if(d.test(f)){return"color"}else{if(!isNaN(parseInt(f,10))&&parseInt(f,10).toString().length==f.length){return"integer"}else{if(!isNaN(parseFloat(f))&&parseFloat(f).toString().length==f.length){return"float"}}}}return"string"}function e(g,f){if(!c.utils.exists(f)){return g}switch(f){case"color":if(g.length>0){return a(g)}return null;case"integer":return parseInt(g,10);case"float":return parseFloat(g);case"boolean":if(g.toLowerCase()=="true"){return true}else{if(g=="1"){return true}}return false}return g}function a(f){switch(f.toLowerCase()){case"blue":return parseInt("0000FF",16);case"green":return parseInt("00FF00",16);case"red":return parseInt("FF0000",16);case"cyan":return parseInt("00FFFF",16);case"magenta":return parseInt("FF00FF",16);case"yellow":return parseInt("FFFF00",16);case"black":return parseInt("000000",16);case"white":return parseInt("FFFFFF",16);default:f=f.replace(/(#|0x)?([0-9A-F]{3,6})$/gi,"$2");if(f.length==3){f=f.charAt(0)+f.charAt(0)+f.charAt(1)+f.charAt(1)+f.charAt(2)+f.charAt(2)}return parseInt(f,16)}return parseInt("000000",16)}})(jwplayer);(function(a){a.utils.parsers=function(){};a.utils.parsers.localName=function(b){if(!b){return""}else{if(b.localName){return b.localName}else{if(b.baseName){return b.baseName}else{return""}}}};a.utils.parsers.textContent=function(b){if(!b){return""}else{if(b.textContent){return b.textContent}else{if(b.text){return b.text}else{return""}}}}})(jwplayer);(function(a){a.utils.parsers.jwparser=function(){};a.utils.parsers.jwparser.PREFIX="jwplayer";a.utils.parsers.jwparser.parseEntry=function(c,d){for(var b=0;b<c.childNodes.length;b++){if(c.childNodes[b].prefix==a.utils.parsers.jwparser.PREFIX){d[a.utils.parsers.localName(c.childNodes[b])]=a.utils.strings.serialize(a.utils.parsers.textContent(c.childNodes[b]))}if(!d.file&&String(d.link).toLowerCase().indexOf("youtube")>-1){d.file=d.link}}return d};a.utils.parsers.jwparser.getProvider=function(c){if(c.type){return c.type}else{if(c.file.indexOf("youtube.com/w")>-1||c.file.indexOf("youtube.com/v")>-1||c.file.indexOf("youtu.be/")>-1){return"youtube"}else{if(c.streamer&&c.streamer.indexOf("rtmp")==0){return"rtmp"}else{if(c.streamer&&c.streamer.indexOf("http")==0){return"http"}else{var b=a.utils.strings.extension(c.file);if(extensions.hasOwnProperty(b)){return extensions[b]}}}}}return""}})(jwplayer);(function(a){a.utils.parsers.mediaparser=function(){};a.utils.parsers.mediaparser.PREFIX="media";a.utils.parsers.mediaparser.parseGroup=function(d,f){var e=false;for(var c=0;c<d.childNodes.length;c++){if(d.childNodes[c].prefix==a.utils.parsers.mediaparser.PREFIX){if(!a.utils.parsers.localName(d.childNodes[c])){continue}switch(a.utils.parsers.localName(d.childNodes[c]).toLowerCase()){case"content":if(!e){f.file=a.utils.strings.xmlAttribute(d.childNodes[c],"url")}if(a.utils.strings.xmlAttribute(d.childNodes[c],"duration")){f.duration=a.utils.strings.seconds(a.utils.strings.xmlAttribute(d.childNodes[c],"duration"))}if(a.utils.strings.xmlAttribute(d.childNodes[c],"start")){f.start=a.utils.strings.seconds(a.utils.strings.xmlAttribute(d.childNodes[c],"start"))}if(d.childNodes[c].childNodes&&d.childNodes[c].childNodes.length>0){f=a.utils.parsers.mediaparser.parseGroup(d.childNodes[c],f)}if(a.utils.strings.xmlAttribute(d.childNodes[c],"width")||a.utils.strings.xmlAttribute(d.childNodes[c],"bitrate")||a.utils.strings.xmlAttribute(d.childNodes[c],"url")){if(!f.levels){f.levels=[]}f.levels.push({width:a.utils.strings.xmlAttribute(d.childNodes[c],"width"),bitrate:a.utils.strings.xmlAttribute(d.childNodes[c],"bitrate"),file:a.utils.strings.xmlAttribute(d.childNodes[c],"url")})}break;case"title":f.title=a.utils.parsers.textContent(d.childNodes[c]);break;case"description":f.description=a.utils.parsers.textContent(d.childNodes[c]);break;case"keywords":f.tags=a.utils.parsers.textContent(d.childNodes[c]);break;case"thumbnail":f.image=a.utils.strings.xmlAttribute(d.childNodes[c],"url");break;case"credit":f.author=a.utils.parsers.textContent(d.childNodes[c]);break;case"player":var b=d.childNodes[c].url;if(b.indexOf("youtube.com")>=0||b.indexOf("youtu.be")>=0){e=true;f.file=a.utils.strings.xmlAttribute(d.childNodes[c],"url")}break;case"group":a.utils.parsers.mediaparser.parseGroup(d.childNodes[c],f);break}}}return f}})(jwplayer);(function(b){b.utils.parsers.rssparser=function(){};b.utils.parsers.rssparser.parse=function(f){var c=[];for(var e=0;e<f.childNodes.length;e++){if(b.utils.parsers.localName(f.childNodes[e]).toLowerCase()=="channel"){for(var d=0;d<f.childNodes[e].childNodes.length;d++){if(b.utils.parsers.localName(f.childNodes[e].childNodes[d]).toLowerCase()=="item"){c.push(a(f.childNodes[e].childNodes[d]))}}}}return c};function a(d){var e={};for(var c=0;c<d.childNodes.length;c++){if(!b.utils.parsers.localName(d.childNodes[c])){continue}switch(b.utils.parsers.localName(d.childNodes[c]).toLowerCase()){case"enclosure":e.file=b.utils.strings.xmlAttribute(d.childNodes[c],"url");break;case"title":e.title=b.utils.parsers.textContent(d.childNodes[c]);break;case"pubdate":e.date=b.utils.parsers.textContent(d.childNodes[c]);break;case"description":e.description=b.utils.parsers.textContent(d.childNodes[c]);break;case"link":e.link=b.utils.parsers.textContent(d.childNodes[c]);break;case"category":if(e.tags){e.tags+=b.utils.parsers.textContent(d.childNodes[c])}else{e.tags=b.utils.parsers.textContent(d.childNodes[c])}break}}e=b.utils.parsers.mediaparser.parseGroup(d,e);e=b.utils.parsers.jwparser.parseEntry(d,e);return new b.html5.playlistitem(e)}})(jwplayer);(function(a){var c={};var b={};a.plugins=function(){};a.plugins.loadPlugins=function(e,d){b[e]=new a.plugins.pluginloader(new a.plugins.model(c),d);return b[e]};a.plugins.registerPlugin=function(h,f,e){var d=a.utils.getPluginName(h);if(c[d]){c[d].registerPlugin(h,f,e)}else{a.utils.log("A plugin ("+h+") was registered with the player that was not loaded. Please check your configuration.");for(var g in b){b[g].pluginFailed()}}}})(jwplayer);(function(a){a.plugins.model=function(b){this.addPlugin=function(c){var d=a.utils.getPluginName(c);if(!b[d]){b[d]=new a.plugins.plugin(c)}return b[d]}}})(jwplayer);(function(a){a.plugins.pluginmodes={FLASH:"FLASH",JAVASCRIPT:"JAVASCRIPT",HYBRID:"HYBRID"};a.plugins.plugin=function(b){var d="http://plugins.longtailvideo.com";var j=a.utils.loaderstatus.NEW;var k;var h;var l;var c=new a.events.eventdispatcher();a.utils.extend(this,c);function e(){switch(a.utils.getPluginPathType(b)){case a.utils.pluginPathType.ABSOLUTE:return b;case a.utils.pluginPathType.RELATIVE:return a.utils.getAbsolutePath(b,window.location.href);case a.utils.pluginPathType.CDN:var n=a.utils.getPluginName(b);var m=a.utils.getPluginVersion(b);return d+"/"+a.version.split(".")[0]+"/"+n+"/"+n+(m!==""?("-"+m):"")+".js"}}function g(m){l=setTimeout(function(){j=a.utils.loaderstatus.COMPLETE;c.sendEvent(a.events.COMPLETE)},1000)}function f(m){j=a.utils.loaderstatus.ERROR;c.sendEvent(a.events.ERROR)}this.load=function(){if(j==a.utils.loaderstatus.NEW){if(b.lastIndexOf(".swf")>0){k=b;j=a.utils.loaderstatus.COMPLETE;c.sendEvent(a.events.COMPLETE);return}j=a.utils.loaderstatus.LOADING;var m=new a.utils.scriptloader(e());m.addEventListener(a.events.COMPLETE,g);m.addEventListener(a.events.ERROR,f);m.load()}};this.registerPlugin=function(o,n,m){if(l){clearTimeout(l);l=undefined}if(n&&m){k=m;h=n}else{if(typeof n=="string"){k=n}else{if(typeof n=="function"){h=n}else{if(!n&&!m){k=o}}}}j=a.utils.loaderstatus.COMPLETE;c.sendEvent(a.events.COMPLETE)};this.getStatus=function(){return j};this.getPluginName=function(){return a.utils.getPluginName(b)};this.getFlashPath=function(){if(k){switch(a.utils.getPluginPathType(k)){case a.utils.pluginPathType.ABSOLUTE:return k;case a.utils.pluginPathType.RELATIVE:if(b.lastIndexOf(".swf")>0){return a.utils.getAbsolutePath(k,window.location.href)}return a.utils.getAbsolutePath(k,e());case a.utils.pluginPathType.CDN:if(k.indexOf("-")>-1){return k+"h"}return k+"-h"}}return null};this.getJS=function(){return h};this.getPluginmode=function(){if(typeof k!="undefined"&&typeof h!="undefined"){return a.plugins.pluginmodes.HYBRID}else{if(typeof k!="undefined"){return a.plugins.pluginmodes.FLASH}else{if(typeof h!="undefined"){return a.plugins.pluginmodes.JAVASCRIPT}}}};this.getNewInstance=function(n,m,o){return new h(n,m,o)};this.getURL=function(){return b}}})(jwplayer);(function(a){a.plugins.pluginloader=function(h,e){var g={};var k=a.utils.loaderstatus.NEW;var d=false;var b=false;var c=new a.events.eventdispatcher();a.utils.extend(this,c);function f(){if(!b){b=true;k=a.utils.loaderstatus.COMPLETE;c.sendEvent(a.events.COMPLETE)}}function j(){if(!b){var m=0;for(plugin in g){var l=g[plugin].getStatus();if(l==a.utils.loaderstatus.LOADING||l==a.utils.loaderstatus.NEW){m++}}if(m==0){f()}}}this.setupPlugins=function(n,l,s){var m={length:0,plugins:{}};var p={length:0,plugins:{}};for(var o in g){var q=g[o].getPluginName();if(g[o].getFlashPath()){m.plugins[g[o].getFlashPath()]=l.plugins[o];m.plugins[g[o].getFlashPath()].pluginmode=g[o].getPluginmode();m.length++}if(g[o].getJS()){var r=document.createElement("div");r.id=n.id+"_"+q;r.style.position="absolute";r.style.zIndex=p.length+10;p.plugins[q]=g[o].getNewInstance(n,l.plugins[o],r);p.length++;if(typeof p.plugins[q].resize!="undefined"){n.onReady(s(p.plugins[q],r,true));n.onResize(s(p.plugins[q],r))}}}n.plugins=p.plugins;return m};this.load=function(){k=a.utils.loaderstatus.LOADING;d=true;for(var l in e){if(a.utils.exists(l)){g[l]=h.addPlugin(l);g[l].addEventListener(a.events.COMPLETE,j);g[l].addEventListener(a.events.ERROR,j)}}for(l in g){g[l].load()}d=false;j()};this.pluginFailed=function(){f()};this.getStatus=function(){return k}}})(jwplayer);(function(b){var a=[];b.api=function(d){this.container=d;this.id=d.id;var n={};var s={};var q={};var c=[];var h=undefined;var l=false;var j=[];var p=b.utils.getOuterHTML(d);var r={};var k={};this.getBuffer=function(){return this.callInternal("jwGetBuffer")};this.getContainer=function(){return this.container};function e(u,t){return function(z,v,w,x){if(u.renderingMode=="flash"||u.renderingMode=="html5"){var y;if(v){k[z]=v;y="jwplayer('"+u.id+"').callback('"+z+"')"}else{if(!v&&k[z]){delete k[z]}}h.jwDockSetButton(z,y,w,x)}return t}}this.getPlugin=function(t){var v=this;var u={};if(t=="dock"){return b.utils.extend(u,{setButton:e(v,u),show:function(){v.callInternal("jwDockShow");return u},hide:function(){v.callInternal("jwDockHide");return u},onShow:function(w){v.componentListener("dock",b.api.events.JWPLAYER_COMPONENT_SHOW,w);return u},onHide:function(w){v.componentListener("dock",b.api.events.JWPLAYER_COMPONENT_HIDE,w);return u}})}else{if(t=="controlbar"){return b.utils.extend(u,{show:function(){v.callInternal("jwControlbarShow");return u},hide:function(){v.callInternal("jwControlbarHide");return u},onShow:function(w){v.componentListener("controlbar",b.api.events.JWPLAYER_COMPONENT_SHOW,w);return u},onHide:function(w){v.componentListener("controlbar",b.api.events.JWPLAYER_COMPONENT_HIDE,w);return u}})}else{if(t=="display"){return b.utils.extend(u,{show:function(){v.callInternal("jwDisplayShow");return u},hide:function(){v.callInternal("jwDisplayHide");return u},onShow:function(w){v.componentListener("display",b.api.events.JWPLAYER_COMPONENT_SHOW,w);return u},onHide:function(w){v.componentListener("display",b.api.events.JWPLAYER_COMPONENT_HIDE,w);return u}})}else{return this.plugins[t]}}}};this.callback=function(t){if(k[t]){return k[t]()}};this.getDuration=function(){return this.callInternal("jwGetDuration")};this.getFullscreen=function(){return this.callInternal("jwGetFullscreen")};this.getHeight=function(){return this.callInternal("jwGetHeight")};this.getLockState=function(){return this.callInternal("jwGetLockState")};this.getMeta=function(){return this.getItemMeta()};this.getMute=function(){return this.callInternal("jwGetMute")};this.getPlaylist=function(){var u=this.callInternal("jwGetPlaylist");if(this.renderingMode=="flash"){b.utils.deepReplaceKeyName(u,"__dot__",".")}for(var t=0;t<u.length;t++){if(!b.utils.exists(u[t].index)){u[t].index=t}}return u};this.getPlaylistItem=function(t){if(!b.utils.exists(t)){t=this.getCurrentItem()}return this.getPlaylist()[t]};this.getPosition=function(){return this.callInternal("jwGetPosition")};this.getRenderingMode=function(){return this.renderingMode};this.getState=function(){return this.callInternal("jwGetState")};this.getVolume=function(){return this.callInternal("jwGetVolume")};this.getWidth=function(){return this.callInternal("jwGetWidth")};this.setFullscreen=function(t){if(!b.utils.exists(t)){this.callInternal("jwSetFullscreen",!this.callInternal("jwGetFullscreen"))}else{this.callInternal("jwSetFullscreen",t)}return this};this.setMute=function(t){if(!b.utils.exists(t)){this.callInternal("jwSetMute",!this.callInternal("jwGetMute"))}else{this.callInternal("jwSetMute",t)}return this};this.lock=function(){return this};this.unlock=function(){return this};this.load=function(t){this.callInternal("jwLoad",t);return this};this.playlistItem=function(t){this.callInternal("jwPlaylistItem",t);return this};this.playlistPrev=function(){this.callInternal("jwPlaylistPrev");return this};this.playlistNext=function(){this.callInternal("jwPlaylistNext");return this};this.resize=function(u,t){if(this.renderingMode=="html5"){h.jwResize(u,t)}else{this.container.width=u;this.container.height=t}return this};this.play=function(t){if(typeof t=="undefined"){t=this.getState();if(t==b.api.events.state.PLAYING||t==b.api.events.state.BUFFERING){this.callInternal("jwPause")}else{this.callInternal("jwPlay")}}else{this.callInternal("jwPlay",t)}return this};this.pause=function(t){if(typeof t=="undefined"){t=this.getState();if(t==b.api.events.state.PLAYING||t==b.api.events.state.BUFFERING){this.callInternal("jwPause")}else{this.callInternal("jwPlay")}}else{this.callInternal("jwPause",t)}return this};this.stop=function(){this.callInternal("jwStop");return this};this.seek=function(t){this.callInternal("jwSeek",t);return this};this.setVolume=function(t){this.callInternal("jwSetVolume",t);return this};this.onBufferChange=function(t){return this.eventListener(b.api.events.JWPLAYER_MEDIA_BUFFER,t)};this.onBufferFull=function(t){return this.eventListener(b.api.events.JWPLAYER_MEDIA_BUFFER_FULL,t)};this.onError=function(t){return this.eventListener(b.api.events.JWPLAYER_ERROR,t)};this.onFullscreen=function(t){return this.eventListener(b.api.events.JWPLAYER_FULLSCREEN,t)};this.onMeta=function(t){return this.eventListener(b.api.events.JWPLAYER_MEDIA_META,t)};this.onMute=function(t){return this.eventListener(b.api.events.JWPLAYER_MEDIA_MUTE,t)};this.onPlaylist=function(t){return this.eventListener(b.api.events.JWPLAYER_PLAYLIST_LOADED,t)};this.onPlaylistItem=function(t){return this.eventListener(b.api.events.JWPLAYER_PLAYLIST_ITEM,t)};this.onReady=function(t){return this.eventListener(b.api.events.API_READY,t)};this.onResize=function(t){return this.eventListener(b.api.events.JWPLAYER_RESIZE,t)};this.onComplete=function(t){return this.eventListener(b.api.events.JWPLAYER_MEDIA_COMPLETE,t)};this.onSeek=function(t){return this.eventListener(b.api.events.JWPLAYER_MEDIA_SEEK,t)};this.onTime=function(t){return this.eventListener(b.api.events.JWPLAYER_MEDIA_TIME,t)};this.onVolume=function(t){return this.eventListener(b.api.events.JWPLAYER_MEDIA_VOLUME,t)};this.onBuffer=function(t){return this.stateListener(b.api.events.state.BUFFERING,t)};this.onPause=function(t){return this.stateListener(b.api.events.state.PAUSED,t)};this.onPlay=function(t){return this.stateListener(b.api.events.state.PLAYING,t)};this.onIdle=function(t){return this.stateListener(b.api.events.state.IDLE,t)};this.remove=function(){n={};j=[];if(b.utils.getOuterHTML(this.container)!=p){b.api.destroyPlayer(this.id,p)}};this.setup=function(u){if(b.embed){var t=this.id;this.remove();var v=b(t);v.config=u;return new b.embed(v)}return this};this.registerPlugin=function(v,u,t){b.plugins.registerPlugin(v,u,t)};this.setPlayer=function(t,u){h=t;this.renderingMode=u};this.stateListener=function(t,u){if(!s[t]){s[t]=[];this.eventListener(b.api.events.JWPLAYER_PLAYER_STATE,g(t))}s[t].push(u);return this};function g(t){return function(v){var u=v.newstate,x=v.oldstate;if(u==t){var w=s[u];if(w){for(var y=0;y<w.length;y++){if(typeof w[y]=="function"){w[y].call(this,{oldstate:x,newstate:u})}}}}}}this.componentListener=function(t,u,v){if(!q[t]){q[t]={}}if(!q[t][u]){q[t][u]=[];this.eventListener(u,m(t,u))}q[t][u].push(v);return this};function m(t,u){return function(w){if(t==w.component){var v=q[t][u];if(v){for(var x=0;x<v.length;x++){if(typeof v[x]=="function"){v[x].call(this,w)}}}}}}this.addInternalListener=function(t,u){t.jwAddEventListener(u,'function(dat) { jwplayer("'+this.id+'").dispatchEvent("'+u+'", dat); }')};this.eventListener=function(t,u){if(!n[t]){n[t]=[];if(h&&l){this.addInternalListener(h,t)}}n[t].push(u);return this};this.dispatchEvent=function(v){if(n[v]){var u=f(v,arguments[1]);for(var t=0;t<n[v].length;t++){if(typeof n[v][t]=="function"){n[v][t].call(this,u)}}}};function f(v,t){var x=b.utils.extend({},t);if(v==b.api.events.JWPLAYER_FULLSCREEN&&!x.fullscreen){x.fullscreen=x.message=="true"?true:false;delete x.message}else{if(typeof x.data=="object"){x=b.utils.extend(x,x.data);delete x.data}}var u=["position","duration","offset"];for(var w in u){if(x[u[w]]){x[u[w]]=Math.round(x[u[w]]*1000)/1000}}return x}this.callInternal=function(u,t){if(l){if(typeof h!="undefined"&&typeof h[u]=="function"){if(b.utils.exists(t)){return(h[u])(t)}else{return(h[u])()}}return null}else{j.push({method:u,parameters:t})}};this.playerReady=function(v){l=true;if(!h){this.setPlayer(document.getElementById(v.id))}this.container=document.getElementById(this.id);for(var t in n){this.addInternalListener(h,t)}this.eventListener(b.api.events.JWPLAYER_PLAYLIST_ITEM,function(w){r={}});this.eventListener(b.api.events.JWPLAYER_MEDIA_META,function(w){b.utils.extend(r,w.metadata)});this.dispatchEvent(b.api.events.API_READY);while(j.length>0){var u=j.shift();this.callInternal(u.method,u.parameters)}};this.getItemMeta=function(){return r};this.getCurrentItem=function(){return this.callInternal("jwGetPlaylistIndex")};function o(v,x,w){var t=[];if(!x){x=0}if(!w){w=v.length-1}for(var u=x;u<=w;u++){t.push(v[u])}return t}return this};b.api.selectPlayer=function(d){var c;if(!b.utils.exists(d)){d=0}if(d.nodeType){c=d}else{if(typeof d=="string"){c=document.getElementById(d)}}if(c){var e=b.api.playerById(c.id);if(e){return e}else{return b.api.addPlayer(new b.api(c))}}else{if(typeof d=="number"){return b.getPlayers()[d]}}return null};b.api.events={API_READY:"jwplayerAPIReady",JWPLAYER_READY:"jwplayerReady",JWPLAYER_FULLSCREEN:"jwplayerFullscreen",JWPLAYER_RESIZE:"jwplayerResize",JWPLAYER_ERROR:"jwplayerError",JWPLAYER_COMPONENT_SHOW:"jwplayerComponentShow",JWPLAYER_COMPONENT_HIDE:"jwplayerComponentHide",JWPLAYER_MEDIA_BUFFER:"jwplayerMediaBuffer",JWPLAYER_MEDIA_BUFFER_FULL:"jwplayerMediaBufferFull",JWPLAYER_MEDIA_ERROR:"jwplayerMediaError",JWPLAYER_MEDIA_LOADED:"jwplayerMediaLoaded",JWPLAYER_MEDIA_COMPLETE:"jwplayerMediaComplete",JWPLAYER_MEDIA_SEEK:"jwplayerMediaSeek",JWPLAYER_MEDIA_TIME:"jwplayerMediaTime",JWPLAYER_MEDIA_VOLUME:"jwplayerMediaVolume",JWPLAYER_MEDIA_META:"jwplayerMediaMeta",JWPLAYER_MEDIA_MUTE:"jwplayerMediaMute",JWPLAYER_PLAYER_STATE:"jwplayerPlayerState",JWPLAYER_PLAYLIST_LOADED:"jwplayerPlaylistLoaded",JWPLAYER_PLAYLIST_ITEM:"jwplayerPlaylistItem"};b.api.events.state={BUFFERING:"BUFFERING",IDLE:"IDLE",PAUSED:"PAUSED",PLAYING:"PLAYING"};b.api.playerById=function(d){for(var c=0;c<a.length;c++){if(a[c].id==d){return a[c]}}return null};b.api.addPlayer=function(c){for(var d=0;d<a.length;d++){if(a[d]==c){return c}}a.push(c);return c};b.api.destroyPlayer=function(g,d){var f=-1;for(var j=0;j<a.length;j++){if(a[j].id==g){f=j;continue}}if(f>=0){var c=document.getElementById(a[f].id);if(document.getElementById(a[f].id+"_wrapper")){c=document.getElementById(a[f].id+"_wrapper")}if(c){if(d){b.utils.setOuterHTML(c,d)}else{var h=document.createElement("div");var e=c.id;if(c.id.indexOf("_wrapper")==c.id.length-8){newID=c.id.substring(0,c.id.length-8)}h.setAttribute("id",e);c.parentNode.replaceChild(h,c)}}a.splice(f,1)}return null};b.getPlayers=function(){return a.slice(0)}})(jwplayer);var _userPlayerReady=(typeof playerReady=="function")?playerReady:undefined;playerReady=function(b){var a=jwplayer.api.playerById(b.id);if(a){a.playerReady(b)}else{jwplayer.api.selectPlayer(b.id).playerReady(b)}if(_userPlayerReady){_userPlayerReady.call(this,b)}};(function(a){a.embed=function(g){var j={width:400,height:300,components:{controlbar:{position:"over"}}};var f=a.utils.mediaparser.parseMedia(g.container);var e=new a.embed.config(a.utils.extend(j,f,g.config),this);var h=a.plugins.loadPlugins(g.id,e.plugins);function c(m,l){for(var k in l){if(typeof m[k]=="function"){(m[k]).call(m,l[k])}}}function d(){if(h.getStatus()==a.utils.loaderstatus.COMPLETE){for(var m=0;m<e.modes.length;m++){if(e.modes[m].type&&a.embed[e.modes[m].type]){var k=e;if(e.modes[m].config){k=a.utils.extend(a.utils.clone(e),e.modes[m].config)}var l=new a.embed[e.modes[m].type](document.getElementById(g.id),e.modes[m],k,h,g);if(l.supportsConfig()){l.embed();c(g,e.events);return g}}}a.utils.log("No suitable players found");new a.embed.logo(a.utils.extend({hide:true},e.components.logo),"none",g.id)}}h.addEventListener(a.events.COMPLETE,d);h.addEventListener(a.events.ERROR,d);h.load();return g};function b(){if(!document.body){return setTimeout(b,15)}var c=a.utils.selectors.getElementsByTagAndClass("video","jwplayer");for(var d=0;d<c.length;d++){var e=c[d];a(e.id).setup({})}}b()})(jwplayer);(function(e){function h(){return[{type:"flash",src:"/jwplayer/player.swf"},{type:"html5"},{type:"download"}]}var a={players:"modes",autoplay:"autostart"};function b(n){var m=n.toLowerCase();var l=["left","right","top","bottom"];for(var k=0;k<l.length;k++){if(m==l[k]){return true}}return false}function c(l){var k=false;k=(l instanceof Array)||(typeof l=="object"&&!l.position&&!l.size);return k}function j(k){if(typeof k=="string"){if(parseInt(k).toString()==k||k.toLowerCase().indexOf("px")>-1){return parseInt(k)}}return k}var g=["playlist","dock","controlbar","logo","display"];function f(k){var n={};switch(e.utils.typeOf(k.plugins)){case"object":for(var m in k.plugins){n[e.utils.getPluginName(m)]=m}break;case"string":var o=k.plugins.split(",");for(var l=0;l<o.length;l++){n[e.utils.getPluginName(o[l])]=o[l]}break}return n}function d(o,n,m,k){if(e.utils.typeOf(o[n])!="object"){o[n]={}}var l=o[n][m];if(e.utils.typeOf(l)!="object"){o[n][m]=l={}}if(k){if(n=="plugins"){var p=e.utils.getPluginName(m);l[k]=o[p+"."+k];delete o[p+"."+k]}else{l[k]=o[m+"."+k];delete o[m+"."+k]}}}e.embed.deserialize=function(l){var m=f(l);for(var k in m){d(l,"plugins",m[k])}for(var p in l){if(p.indexOf(".")>-1){var o=p.split(".");var n=o[0];var p=o[1];if(e.utils.isInArray(g,n)){d(l,"components",n,p)}else{if(m[n]){d(l,"plugins",m[n],p)}}}}return l};e.embed.config=function(k,u){var t=e.utils.extend({},k);var r;if(c(t.playlist)){r=t.playlist;delete t.playlist}t=e.embed.deserialize(t);t.height=j(t.height);t.width=j(t.width);if(typeof t.plugins=="string"){var l=t.plugins.split(",");if(typeof t.plugins!="object"){t.plugins={}}for(var p=0;p<l.length;p++){var q=e.utils.getPluginName(l[p]);if(typeof t[q]=="object"){t.plugins[l[p]]=t[q];delete t[q]}else{t.plugins[l[p]]={}}}}for(var s=0;s<g.length;s++){var o=g[s];if(e.utils.exists(t[o])){if(typeof t[o]!="object"){if(!t.components[o]){t.components[o]={}}if(o=="logo"){t.components[o].file=t[o]}else{t.components[o].position=t[o]}delete t[o]}else{if(!t.components[o]){t.components[o]={}}e.utils.extend(t.components[o],t[o]);delete t[o]}}if(typeof t[o+"size"]!="undefined"){if(!t.components[o]){t.components[o]={}}t.components[o].size=t[o+"size"];delete t[o+"size"]}}if(typeof t.icons!="undefined"){if(!t.components.display){t.components.display={}}t.components.display.icons=t.icons;delete t.icons}for(var n in a){if(t[n]){if(!t[a[n]]){t[a[n]]=t[n]}delete t[n]}}var m;if(t.flashplayer&&!t.modes){m=h();m[0].src=t.flashplayer;delete t.flashplayer}else{if(t.modes){if(typeof t.modes=="string"){m=h();m[0].src=t.modes}else{if(t.modes instanceof Array){m=t.modes}else{if(typeof t.modes=="object"&&t.modes.type){m=[t.modes]}}}delete t.modes}else{m=h()}}t.modes=m;if(r){t.playlist=r}return t}})(jwplayer);(function(a){a.embed.download=function(c,g,b,d,f){this.embed=function(){var k=a.utils.extend({},b);var q={};var j=b.width?b.width:480;if(typeof j!="number"){j=parseInt(j,10)}var m=b.height?b.height:320;if(typeof m!="number"){m=parseInt(m,10)}var u,o,n;var s={};if(b.playlist&&b.playlist.length){s.file=b.playlist[0].file;o=b.playlist[0].image;s.levels=b.playlist[0].levels}else{s.file=b.file;o=b.image;s.levels=b.levels}if(s.file){u=s.file}else{if(s.levels&&s.levels.length){u=s.levels[0].file}}n=u?"pointer":"auto";var l={display:{style:{cursor:n,width:j,height:m,backgroundColor:"#000",position:"relative",textDecoration:"none",border:"none",display:"block"}},display_icon:{style:{cursor:n,position:"absolute",display:u?"block":"none",top:0,left:0,border:0,margin:0,padding:0,zIndex:3,width:50,height:50,backgroundImage:"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs18ENgjAYhmFouDOCcQJGcARHgE10BDcgTOIosAGwQOuPwaQeuFRi2p/3Sb6EC5L3QCxZBgAAAOCorLW1zMn65TrlkH4NcV7QNcUQt7Gn7KIhxA+qNIR81spOGkL8oFJDyLJRdosqKDDkK+iX5+d7huzwM40xptMQMkjIOeRGo+VkEVvIPfTGIpKASfYIfT9iCHkHrBEzf4gcUQ56aEzuGK/mw0rHpy4AAACAf3kJMACBxjAQNRckhwAAAABJRU5ErkJggg==)"}},display_iconBackground:{style:{cursor:n,position:"absolute",display:u?"block":"none",top:((m-50)/2),left:((j-50)/2),border:0,width:50,height:50,margin:0,padding:0,zIndex:2,backgroundImage:"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrszwENADAIA7DhX8ENoBMZ5KR10EryckCJiIiIiIiIiIiIiIiIiIiIiIh8GmkRERERERERERERERERERERERGRHSPAAPlXH1phYpYaAAAAAElFTkSuQmCC)"}},display_image:{style:{width:j,height:m,display:o?"block":"none",position:"absolute",cursor:n,left:0,top:0,margin:0,padding:0,textDecoration:"none",zIndex:1,border:"none"}}};var h=function(v,x,y){var w=document.createElement(v);if(y){w.id=y}else{w.id=c.id+"_jwplayer_"+x}a.utils.css(w,l[x].style);return w};q.display=h("a","display",c.id);if(u){q.display.setAttribute("href",a.utils.getAbsolutePath(u))}q.display_image=h("img","display_image");q.display_image.setAttribute("alt","Click to download...");if(o){q.display_image.setAttribute("src",a.utils.getAbsolutePath(o))}if(true){q.display_icon=h("div","display_icon");q.display_iconBackground=h("div","display_iconBackground");q.display.appendChild(q.display_image);q.display_iconBackground.appendChild(q.display_icon);q.display.appendChild(q.display_iconBackground)}_css=a.utils.css;_hide=function(v){_css(v,{display:"none"})};function r(v){_imageWidth=q.display_image.naturalWidth;_imageHeight=q.display_image.naturalHeight;t()}function t(){a.utils.stretch(a.utils.stretching.UNIFORM,q.display_image,j,m,_imageWidth,_imageHeight)}q.display_image.onerror=function(v){_hide(q.display_image)};q.display_image.onload=r;c.parentNode.replaceChild(q.display,c);var p=(b.plugins&&b.plugins.logo)?b.plugins.logo:{};q.display.appendChild(new a.embed.logo(b.components.logo,"download",c.id));f.container=document.getElementById(f.id);f.setPlayer(q.display,"download")};this.supportsConfig=function(){if(b){var j=a.utils.getFirstPlaylistItemFromConfig(b);if(typeof j.file=="undefined"&&typeof j.levels=="undefined"){return true}else{if(j.file){return e(j.file,j.provider,j.playlistfile)}else{if(j.levels&&j.levels.length){for(var h=0;h<j.levels.length;h++){if(j.levels[h].file&&e(j.levels[h].file,j.provider,j.playlistfile)){return true}}}}}}else{return true}};function e(j,l,h){if(h){return false}var k=["image","sound","youtube","http"];if(l&&(k.toString().indexOf(l)>-1)){return true}if(!l||(l&&l=="video")){var m=a.utils.extension(j);if(m&&a.utils.extensionmap[m]){return true}}return false}}})(jwplayer);(function(a){a.embed.flash=function(f,g,l,e,j){function m(o,n,p){var q=document.createElement("param");q.setAttribute("name",n);q.setAttribute("value",p);o.appendChild(q)}function k(o,p,n){return function(q){if(n){document.getElementById(j.id+"_wrapper").appendChild(p)}var s=document.getElementById(j.id).getPluginConfig("display");o.resize(s.width,s.height);var r={left:s.x,top:s.y};a.utils.css(p,r)}}function d(p){if(!p){return{}}var r={};for(var o in p){var n=p[o];for(var q in n){r[o+"."+q]=n[q]}}return r}function h(q,p){if(q[p]){var s=q[p];for(var o in s){var n=s[o];if(typeof n=="string"){if(!q[o]){q[o]=n}}else{for(var r in n){if(!q[o+"."+r]){q[o+"."+r]=n[r]}}}}delete q[p]}}function b(q){if(!q){return{}}var t={},s=[];for(var n in q){var p=a.utils.getPluginName(n);var o=q[n];s.push(n);for(var r in o){t[p+"."+r]=o[r]}}t.plugins=s.join(",");return t}function c(p){var n=p.netstreambasepath?"":"netstreambasepath="+encodeURIComponent(window.location.href.split("#")[0])+"&";for(var o in p){if(typeof(p[o])=="object"){n+=o+"="+encodeURIComponent("[[JSON]]"+a.utils.strings.jsonToString(p[o]))+"&"}else{n+=o+"="+encodeURIComponent(p[o])+"&"}}return n.substring(0,n.length-1)}this.embed=function(){l.id=j.id;var y;var q=a.utils.extend({},l);var n=q.width;var w=q.height;if(f.id+"_wrapper"==f.parentNode.id){y=document.getElementById(f.id+"_wrapper")}else{y=document.createElement("div");y.id=f.id+"_wrapper";a.utils.wrap(f,y);a.utils.css(y,{position:"relative",width:n,height:w})}var o=e.setupPlugins(j,q,k);if(o.length>0){a.utils.extend(q,b(o.plugins))}else{delete q.plugins}var r=["height","width","modes","events"];for(var u=0;u<r.length;u++){delete q[r[u]]}var p="opaque";if(q.wmode){p=q.wmode}h(q,"components");h(q,"providers");if(typeof q["dock.position"]!="undefined"){if(q["dock.position"].toString().toLowerCase()=="false"){q.dock=q["dock.position"];delete q["dock.position"]}}var x="#000000";var t;if(a.utils.isIE()){var v='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" bgcolor="'+x+'" width="100%" height="100%" id="'+f.id+'" name="'+f.id+'" tabindex=0"">';v+='<param name="movie" value="'+g.src+'">';v+='<param name="allowfullscreen" value="true">';v+='<param name="allowscriptaccess" value="always">';v+='<param name="seamlesstabbing" value="true">';v+='<param name="wmode" value="'+p+'">';v+='<param name="flashvars" value="'+c(q)+'">';v+="</object>";a.utils.setOuterHTML(f,v);t=document.getElementById(f.id)}else{var s=document.createElement("object");s.setAttribute("type","application/x-shockwave-flash");s.setAttribute("data",g.src);s.setAttribute("width","100%");s.setAttribute("height","100%");s.setAttribute("bgcolor","#000000");s.setAttribute("id",f.id);s.setAttribute("name",f.id);s.setAttribute("tabindex",0);m(s,"allowfullscreen","true");m(s,"allowscriptaccess","always");m(s,"seamlesstabbing","true");m(s,"wmode",p);m(s,"flashvars",c(q));f.parentNode.replaceChild(s,f);t=s}j.container=t;j.setPlayer(t,"flash")};this.supportsConfig=function(){if(a.utils.hasFlash()){if(l){var o=a.utils.getFirstPlaylistItemFromConfig(l);if(typeof o.file=="undefined"&&typeof o.levels=="undefined"){return true}else{if(o.file){return flashCanPlay(o.file,o.provider)}else{if(o.levels&&o.levels.length){for(var n=0;n<o.levels.length;n++){if(o.levels[n].file&&flashCanPlay(o.levels[n].file,o.provider)){return true}}}}}}else{return true}}return false};flashCanPlay=function(n,p){var o=["video","http","sound","image"];if(p&&(o.toString().indexOf(p<0))){return true}var q=a.utils.extension(n);if(!q){return true}if(a.utils.exists(a.utils.extensionmap[q])&&!a.utils.exists(a.utils.extensionmap[q].flash)){return false}return true}}})(jwplayer);(function(a){a.embed.html5=function(c,g,b,d,f){function e(j,k,h){return function(l){var m=document.getElementById(c.id+"_displayarea");if(h){m.appendChild(k)}var n=m.style;j.resize(parseInt(n.width.replace("px","")),parseInt(n.height.replace("px","")));k.left=n.left;k.top=n.top}}this.embed=function(){if(a.html5){d.setupPlugins(f,b,e);c.innerHTML="";var j=a.utils.extend({screencolor:"0x000000"},b);var h=["plugins","modes","events"];for(var k=0;k<h.length;k++){delete j[h[k]]}if(j.levels&&!j.sources){j.sources=b.levels}if(j.skin&&j.skin.toLowerCase().indexOf(".zip")>0){j.skin=j.skin.replace(/\.zip/i,".xml")}var l=new (a.html5(c)).setup(j);f.container=document.getElementById(f.id);f.setPlayer(l,"html5")}else{return null}};this.supportsConfig=function(){if(!!a.vid.canPlayType){if(b){var j=a.utils.getFirstPlaylistItemFromConfig(b);if(typeof j.file=="undefined"&&typeof j.levels=="undefined"){return true}else{if(j.file){return html5CanPlay(a.vid,j.file,j.provider,j.playlistfile)}else{if(j.levels&&j.levels.length){for(var h=0;h<j.levels.length;h++){if(j.levels[h].file&&html5CanPlay(a.vid,j.levels[h].file,j.provider,j.playlistfile)){return true}}}}}}else{return true}}return false};html5CanPlay=function(k,j,l,h){if(h){return false}if(l&&l=="youtube"){return true}if(l&&l!="video"&&l!="http"&&l!="sound"){return false}var m=a.utils.extension(j);if(!a.utils.exists(m)||!a.utils.exists(a.utils.extensionmap[m])){return true}if(!a.utils.exists(a.utils.extensionmap[m].html5)){return false}if(a.utils.isLegacyAndroid()&&m.match(/m4v|mp4/)){return true}return browserCanPlay(k,a.utils.extensionmap[m].html5)};browserCanPlay=function(j,h){if(!h){return true}if(j.canPlayType(h)){return true}else{if(h=="audio/mp3"&&navigator.userAgent.match(/safari/i)){return j.canPlayType("audio/mpeg")}else{return false}}}}})(jwplayer);(function(a){a.embed.logo=function(m,l,d){var j={prefix:"http://l.longtailvideo.com/"+l+"/",file:"logo.png",link:"http://www.longtailvideo.com/players/jw-flv-player/",margin:8,out:0.5,over:1,timeout:5,hide:false,position:"bottom-left"};_css=a.utils.css;var b;var h;k();function k(){o();c();f()}function o(){if(j.prefix){var q=a.version.split(/\W/).splice(0,2).join("/");if(j.prefix.indexOf(q)<0){j.prefix+=q+"/"}}h=a.utils.extend({},j)}function p(){var s={border:"none",textDecoration:"none",position:"absolute",cursor:"pointer",zIndex:10};s.display=h.hide?"none":"block";var r=h.position.toLowerCase().split("-");for(var q in r){s[r[q]]=h.margin}return s}function c(){b=document.createElement("img");b.id=d+"_jwplayer_logo";b.style.display="none";b.onload=function(q){_css(b,p());e()};if(!h.file){return}if(h.file.indexOf("http://")===0){b.src=h.file}else{b.src=h.prefix+h.file}}if(!h.file){return}function f(){if(h.link){b.onmouseover=g;b.onmouseout=e;b.onclick=n}else{this.mouseEnabled=false}}function n(q){if(typeof q!="undefined"){q.preventDefault();q.stopPropagation()}if(h.link){window.open(h.link,"_blank")}return}function e(q){if(h.link){b.style.opacity=h.out}return}function g(q){if(h.hide){b.style.opacity=h.over}return}return b}})(jwplayer);(function(a){a.html5=function(b){var c=b;this.setup=function(d){a.utils.extend(this,new a.html5.api(c,d));return this};return this}})(jwplayer);(function(b){var d=b.utils;var c=d.css;b.html5.view=function(r,q,f){var u=r;var n=q;var x=f;var w;var g;var C;var s;var D;var p;var A;function z(){w=document.createElement("div");w.id=n.id;w.className=n.className;_videowrapper=document.createElement("div");_videowrapper.id=w.id+"_video_wrapper";n.id=w.id+"_video";c(w,{position:"relative",height:x.height,width:x.width,padding:0,backgroundColor:E(),zIndex:0});function E(){if(u.skin.getComponentSettings("display")&&u.skin.getComponentSettings("display").backgroundcolor){return u.skin.getComponentSettings("display").backgroundcolor}return parseInt("000000",16)}c(n,{width:x.width,height:x.height,top:0,left:0,zIndex:1,margin:"auto",display:"block"});c(_videowrapper,{overflow:"hidden",position:"absolute",top:0,left:0,bottom:0,right:0});d.wrap(n,w);d.wrap(n,_videowrapper);s=document.createElement("div");s.id=w.id+"_displayarea";w.appendChild(s)}function k(){for(var E=0;E<x.plugins.order.length;E++){var F=x.plugins.order[E];if(d.exists(x.plugins.object[F].getDisplayElement)){x.plugins.object[F].height=d.parseDimension(x.plugins.object[F].getDisplayElement().style.height);x.plugins.object[F].width=d.parseDimension(x.plugins.object[F].getDisplayElement().style.width);x.plugins.config[F].currentPosition=x.plugins.config[F].position}}v()}function m(E){c(s,{display:x.getMedia().hasChrome()?"none":"block"})}function v(F){var H=x.getMedia()?x.getMedia().getDisplayElement():null;if(d.exists(H)){if(A!=H){if(A&&A.parentNode){A.parentNode.replaceChild(H,A)}A=H}for(var E=0;E<x.plugins.order.length;E++){var G=x.plugins.order[E];if(d.exists(x.plugins.object[G].getDisplayElement)){x.plugins.config[G].currentPosition=x.plugins.config[G].position}}}j(x.width,x.height)}this.setup=function(){if(x&&x.getMedia()){n=x.getMedia().getDisplayElement()}z();k();u.jwAddEventListener(b.api.events.JWPLAYER_PLAYER_STATE,m);u.jwAddEventListener(b.api.events.JWPLAYER_MEDIA_LOADED,v);u.jwAddEventListener(b.api.events.JWPLAYER_MEDIA_META,function(){y()});var E;if(d.exists(window.onresize)){E=window.onresize}window.onresize=function(F){if(d.exists(E)){try{E(F)}catch(H){}}if(u.jwGetFullscreen()){var G=document.body.getBoundingClientRect();x.width=Math.abs(G.left)+Math.abs(G.right);x.height=window.innerHeight}j(x.width,x.height)}};function h(E){switch(E.keyCode){case 27:if(u.jwGetFullscreen()){u.jwSetFullscreen(false)}break;case 32:if(u.jwGetState()!=b.api.events.state.IDLE&&u.jwGetState()!=b.api.events.state.PAUSED){u.jwPause()}else{u.jwPlay()}break}}function j(H,E){if(w.style.display=="none"){return}var G=[].concat(x.plugins.order);G.reverse();D=G.length+2;if(!x.fullscreen){x.width=H;x.height=E;g=H;C=E;c(s,{top:0,bottom:0,left:0,right:0,width:H,height:E,position:"relative"});c(w,{height:C,width:g});var F=o(t,G);if(F.length>0){D+=F.length;var J=F.indexOf("playlist"),I=F.indexOf("controlbar");if(J>=0&&I>=0){F[J]=F.splice(I,1,F[J])[0]}o(l,F,true)}}else{if(!(navigator&&navigator.vendor&&navigator.vendor.indexOf("Apple")==0)){o(B,G,true)}}y()}function o(J,G,H){var F=[];for(var E=0;E<G.length;E++){var K=G[E];if(d.exists(x.plugins.object[K].getDisplayElement)){if(x.plugins.config[K].currentPosition!=b.html5.view.positions.NONE){var I=J(K,D--);if(!I){F.push(K)}else{x.plugins.object[K].resize(I.width,I.height);if(H){delete I.width;delete I.height}c(x.plugins.object[K].getDisplayElement(),I)}}else{c(x.plugins.object[K].getDisplayElement(),{display:"none"})}}}return F}function t(F,G){if(d.exists(x.plugins.object[F].getDisplayElement)){if(x.plugins.config[F].position&&a(x.plugins.config[F].position)){if(!d.exists(x.plugins.object[F].getDisplayElement().parentNode)){w.appendChild(x.plugins.object[F].getDisplayElement())}var E=e(F);E.zIndex=G;return E}}return false}function l(G,H){if(!d.exists(x.plugins.object[G].getDisplayElement().parentNode)){s.appendChild(x.plugins.object[G].getDisplayElement())}var E=x.width,F=x.height;if(typeof x.width=="string"&&x.width.lastIndexOf("%")>-1){percentage=parseFloat(x.width.substring(0,x.width.lastIndexOf("%")))/100;E=Math.round(window.innerWidth*percentage)}if(typeof x.height=="string"&&x.height.lastIndexOf("%")>-1){percentage=parseFloat(x.height.substring(0,x.height.lastIndexOf("%")))/100;F=Math.round(window.innerHeight*percentage)}return{position:"absolute",width:(E-d.parseDimension(s.style.left)-d.parseDimension(s.style.right)),height:(F-d.parseDimension(s.style.top)-d.parseDimension(s.style.bottom)),zIndex:H}}function B(E,F){return{position:"fixed",width:x.width,height:x.height,zIndex:F}}function y(){if(!d.exists(x.getMedia())){return}s.style.position="absolute";var H=x.getMedia().getDisplayElement();if(H&&H.tagName.toLowerCase()=="video"){H.style.position="absolute";var E,I;if(s.style.width.toString().lastIndexOf("%")>-1||s.style.width.toString().lastIndexOf("%")>-1){var F=s.getBoundingClientRect();E=Math.abs(F.left)+Math.abs(F.right);I=Math.abs(F.top)+Math.abs(F.bottom)}else{E=d.parseDimension(s.style.width);I=d.parseDimension(s.style.height)}if(H.parentNode){H.parentNode.style.left=s.style.left;H.parentNode.style.top=s.style.top}d.stretch(u.jwGetStretching(),H,E,I,H.videoWidth?H.videoWidth:400,H.videoHeight?H.videoHeight:300)}else{var G=x.plugins.object.display.getDisplayElement();if(G){x.getMedia().resize(d.parseDimension(G.style.width),d.parseDimension(G.style.height))}else{x.getMedia().resize(d.parseDimension(s.style.width),d.parseDimension(s.style.height))}}}function e(F){var G={position:"absolute",margin:0,padding:0,top:null};var E=x.plugins.config[F].currentPosition.toLowerCase();switch(E.toUpperCase()){case b.html5.view.positions.TOP:G.top=d.parseDimension(s.style.top);G.left=d.parseDimension(s.style.left);G.width=g-d.parseDimension(s.style.left)-d.parseDimension(s.style.right);G.height=x.plugins.object[F].height;s.style[E]=d.parseDimension(s.style[E])+x.plugins.object[F].height+"px";s.style.height=d.parseDimension(s.style.height)-G.height+"px";break;case b.html5.view.positions.RIGHT:G.top=d.parseDimension(s.style.top);G.right=d.parseDimension(s.style.right);G.width=x.plugins.object[F].width;G.height=C-d.parseDimension(s.style.top)-d.parseDimension(s.style.bottom);s.style[E]=d.parseDimension(s.style[E])+x.plugins.object[F].width+"px";s.style.width=d.parseDimension(s.style.width)-G.width+"px";break;case b.html5.view.positions.BOTTOM:G.bottom=d.parseDimension(s.style.bottom);G.left=d.parseDimension(s.style.left);G.width=g-d.parseDimension(s.style.left)-d.parseDimension(s.style.right);G.height=x.plugins.object[F].height;s.style[E]=d.parseDimension(s.style[E])+x.plugins.object[F].height+"px";s.style.height=d.parseDimension(s.style.height)-G.height+"px";break;case b.html5.view.positions.LEFT:G.top=d.parseDimension(s.style.top);G.left=d.parseDimension(s.style.left);G.width=x.plugins.object[F].width;G.height=C-d.parseDimension(s.style.top)-d.parseDimension(s.style.bottom);s.style[E]=d.parseDimension(s.style[E])+x.plugins.object[F].width+"px";s.style.width=d.parseDimension(s.style.width)-G.width+"px";break;default:break}return G}this.resize=j;this.fullscreen=function(H){if(navigator&&navigator.vendor&&navigator.vendor.indexOf("Apple")===0){if(x.getMedia().getDisplayElement().webkitSupportsFullscreen){if(H){try{x.getMedia().getDisplayElement().webkitEnterFullscreen()}catch(G){}}else{try{x.getMedia().getDisplayElement().webkitExitFullscreen()}catch(G){}}}}else{if(H){document.onkeydown=h;clearInterval(p);var F=document.body.getBoundingClientRect();x.width=Math.abs(F.left)+Math.abs(F.right);x.height=window.innerHeight;var E={position:"fixed",width:"100%",height:"100%",top:0,left:0,zIndex:2147483000};c(w,E);E.zIndex=1;if(x.getMedia()&&x.getMedia().getDisplayElement()){c(x.getMedia().getDisplayElement(),E)}E.zIndex=2;c(s,E)}else{document.onkeydown="";x.width=g;x.height=C;c(w,{position:"relative",height:x.height,width:x.width,zIndex:0})}j(x.width,x.height)}}};function a(e){return([b.html5.view.positions.TOP,b.html5.view.positions.RIGHT,b.html5.view.positions.BOTTOM,b.html5.view.positions.LEFT].toString().indexOf(e.toUpperCase())>-1)}b.html5.view.positions={TOP:"TOP",RIGHT:"RIGHT",BOTTOM:"BOTTOM",LEFT:"LEFT",OVER:"OVER",NONE:"NONE"}})(jwplayer);(function(a){var b={backgroundcolor:"",margin:10,font:"Arial,sans-serif",fontsize:10,fontcolor:parseInt("000000",16),fontstyle:"normal",fontweight:"bold",buttoncolor:parseInt("ffffff",16),position:a.html5.view.positions.BOTTOM,idlehide:false,layout:{left:{position:"left",elements:[{name:"play",type:"button"},{name:"divider",type:"divider"},{name:"prev",type:"button"},{name:"divider",type:"divider"},{name:"next",type:"button"},{name:"divider",type:"divider"},{name:"elapsed",type:"text"}]},center:{position:"center",elements:[{name:"time",type:"slider"}]},right:{position:"right",elements:[{name:"duration",type:"text"},{name:"blank",type:"button"},{name:"divider",type:"divider"},{name:"mute",type:"button"},{name:"volume",type:"slider"},{name:"divider",type:"divider"},{name:"fullscreen",type:"button"}]}}};_utils=a.utils;_css=_utils.css;_hide=function(c){_css(c,{display:"none"})};_show=function(c){_css(c,{display:"block"})};a.html5.controlbar=function(l,V){var k=l;var D=_utils.extend({},b,k.skin.getComponentSettings("controlbar"),V);if(D.position==a.html5.view.positions.NONE||typeof a.html5.view.positions[D.position]=="undefined"){return}if(_utils.mapLength(k.skin.getComponentLayout("controlbar"))>0){D.layout=k.skin.getComponentLayout("controlbar")}var ac;var P;var ab;var E;var v="none";var g;var j;var ad;var f;var e;var y;var Q={};var p=false;var c={};var Y;var h=false;var o;var d;var S=false;var G=false;var W=new a.html5.eventdispatcher();_utils.extend(this,W);function J(){if(!Y){Y=k.skin.getSkinElement("controlbar","background");if(!Y){Y={width:0,height:0,src:null}}}return Y}function N(){ab=0;E=0;P=0;if(!p){var ak={height:J().height,backgroundColor:D.backgroundcolor};ac=document.createElement("div");ac.id=k.id+"_jwplayer_controlbar";_css(ac,ak)}var aj=(k.skin.getSkinElement("controlbar","capLeft"));var ai=(k.skin.getSkinElement("controlbar","capRight"));if(aj){x("capLeft","left",false,ac)}var al={position:"absolute",height:J().height,left:(aj?aj.width:0),zIndex:0};Z("background",ac,al,"img");if(J().src){Q.background.src=J().src}al.zIndex=1;Z("elements",ac,al);if(ai){x("capRight","right",false,ac)}}this.getDisplayElement=function(){return ac};this.resize=function(ak,ai){_utils.cancelAnimation(ac);document.getElementById(k.id).onmousemove=A;e=ak;y=ai;if(G!=k.jwGetFullscreen()){G=k.jwGetFullscreen();d=undefined}var aj=w();A();I({id:k.id,duration:ad,position:j});u({id:k.id,bufferPercent:f});return aj};this.show=function(){if(h){h=false;_show(ac);T()}};this.hide=function(){if(!h){h=true;_hide(ac);aa()}};function q(){var aj=["timeSlider","volumeSlider","timeSliderRail","volumeSliderRail"];for(var ak in aj){var ai=aj[ak];if(typeof Q[ai]!="undefined"){c[ai]=Q[ai].getBoundingClientRect()}}}function A(ai){if(h){return}if(D.position==a.html5.view.positions.OVER||k.jwGetFullscreen()){clearTimeout(o);switch(k.jwGetState()){case a.api.events.state.PAUSED:case a.api.events.state.IDLE:if(!D.idlehide||_utils.exists(ai)){U()}if(D.idlehide){o=setTimeout(function(){z()},2000)}break;default:if(ai){U()}o=setTimeout(function(){z()},2000);break}}}function z(ai){aa();_utils.cancelAnimation(ac);_utils.fadeTo(ac,0,0.1,1,0)}function U(){T();_utils.cancelAnimation(ac);_utils.fadeTo(ac,1,0,1,0)}function H(ai){return function(){if(S&&d!=ai){d=ai;W.sendEvent(ai,{component:"controlbar",boundingRect:O()})}}}var T=H(a.api.events.JWPLAYER_COMPONENT_SHOW);var aa=H(a.api.events.JWPLAYER_COMPONENT_HIDE);function O(){if(D.position==a.html5.view.positions.OVER||k.jwGetFullscreen()){return _utils.getDimensions(ac)}else{return{x:0,y:0,width:0,height:0}}}function Z(am,al,ak,ai){var aj;if(!p){if(!ai){ai="div"}aj=document.createElement(ai);Q[am]=aj;aj.id=ac.id+"_"+am;al.appendChild(aj)}else{aj=document.getElementById(ac.id+"_"+am)}if(_utils.exists(ak)){_css(aj,ak)}return aj}function M(){ah(D.layout.left);ah(D.layout.right,-1);ah(D.layout.center)}function ah(al,ai){var am=al.position=="right"?"right":"left";var ak=_utils.extend([],al.elements);if(_utils.exists(ai)){ak.reverse()}for(var aj=0;aj<ak.length;aj++){C(ak[aj],am)}}function K(){return P++}function C(am,ao){var al,aj,ak,ai,aq;if(am.type=="divider"){x("divider"+K(),ao,true,undefined,undefined,am.width,am.element);return}switch(am.name){case"play":x("playButton",ao,false);x("pauseButton",ao,true);R("playButton","jwPlay");R("pauseButton","jwPause");break;case"prev":x("prevButton",ao,true);R("prevButton","jwPlaylistPrev");break;case"stop":x("stopButton",ao,true);R("stopButton","jwStop");break;case"next":x("nextButton",ao,true);R("nextButton","jwPlaylistNext");break;case"elapsed":x("elapsedText",ao,true);break;case"time":aj=!_utils.exists(k.skin.getSkinElement("controlbar","timeSliderCapLeft"))?0:k.skin.getSkinElement("controlbar","timeSliderCapLeft").width;ak=!_utils.exists(k.skin.getSkinElement("controlbar","timeSliderCapRight"))?0:k.skin.getSkinElement("controlbar","timeSliderCapRight").width;al=ao=="left"?aj:ak;ai=k.skin.getSkinElement("controlbar","timeSliderRail").width+aj+ak;aq={height:J().height,position:"absolute",top:0,width:ai};aq[ao]=ao=="left"?ab:E;var an=Z("timeSlider",Q.elements,aq);x("timeSliderCapLeft",ao,true,an,ao=="left"?0:al);x("timeSliderRail",ao,false,an,al);x("timeSliderBuffer",ao,false,an,al);x("timeSliderProgress",ao,false,an,al);x("timeSliderThumb",ao,false,an,al);x("timeSliderCapRight",ao,true,an,ao=="right"?0:al);X("time");break;case"fullscreen":x("fullscreenButton",ao,false);x("normalscreenButton",ao,true);R("fullscreenButton","jwSetFullscreen",true);R("normalscreenButton","jwSetFullscreen",false);break;case"volume":aj=!_utils.exists(k.skin.getSkinElement("controlbar","volumeSliderCapLeft"))?0:k.skin.getSkinElement("controlbar","volumeSliderCapLeft").width;ak=!_utils.exists(k.skin.getSkinElement("controlbar","volumeSliderCapRight"))?0:k.skin.getSkinElement("controlbar","volumeSliderCapRight").width;al=ao=="left"?aj:ak;ai=k.skin.getSkinElement("controlbar","volumeSliderRail").width+aj+ak;aq={height:J().height,position:"absolute",top:0,width:ai};aq[ao]=ao=="left"?ab:E;var ap=Z("volumeSlider",Q.elements,aq);x("volumeSliderCapLeft",ao,true,ap,ao=="left"?0:al);x("volumeSliderRail",ao,true,ap,al);x("volumeSliderProgress",ao,false,ap,al);x("volumeSliderCapRight",ao,true,ap,ao=="right"?0:al);X("volume");break;case"mute":x("muteButton",ao,false);x("unmuteButton",ao,true);R("muteButton","jwSetMute",true);R("unmuteButton","jwSetMute",false);break;case"duration":x("durationText",ao,true);break}}function x(al,ao,aj,ar,am,ai,ak){if(_utils.exists(k.skin.getSkinElement("controlbar",al))||al.indexOf("Text")>0||al.indexOf("divider")===0){var an={height:J().height,position:"absolute",display:"block",top:0};if((al.indexOf("next")===0||al.indexOf("prev")===0)&&k.jwGetPlaylist().length<2){aj=false;an.display="none"}var at;if(al.indexOf("Text")>0){al.innerhtml="00:00";an.font=D.fontsize+"px/"+(J().height+1)+"px "+D.font;an.color=D.fontcolor;an.textAlign="center";an.fontWeight=D.fontweight;an.fontStyle=D.fontstyle;an.cursor="default";at=14+3*D.fontsize}else{if(al.indexOf("divider")===0){if(ai){if(!isNaN(parseInt(ai))){at=parseInt(ai)}}else{if(ak){var ap=k.skin.getSkinElement("controlbar",ak);if(ap){an.background="url("+ap.src+") repeat-x center left";at=ap.width}}else{an.background="url("+k.skin.getSkinElement("controlbar","divider").src+") repeat-x center left";at=k.skin.getSkinElement("controlbar","divider").width}}}else{an.background="url("+k.skin.getSkinElement("controlbar",al).src+") repeat-x center left";at=k.skin.getSkinElement("controlbar",al).width}}if(ao=="left"){an.left=isNaN(am)?ab:am;if(aj){ab+=at}}else{if(ao=="right"){an.right=isNaN(am)?E:am;if(aj){E+=at}}}if(_utils.typeOf(ar)=="undefined"){ar=Q.elements}an.width=at;if(p){_css(Q[al],an)}else{var aq=Z(al,ar,an);if(_utils.exists(k.skin.getSkinElement("controlbar",al+"Over"))){aq.onmouseover=function(au){aq.style.backgroundImage=["url(",k.skin.getSkinElement("controlbar",al+"Over").src,")"].join("")};aq.onmouseout=function(au){aq.style.backgroundImage=["url(",k.skin.getSkinElement("controlbar",al).src,")"].join("")}}}}}function F(){k.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED,B);k.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_ITEM,s);k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_BUFFER,u);k.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE,r);k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_TIME,I);k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_MUTE,ag);k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_VOLUME,m);k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_COMPLETE,L)}function B(){N();M();w();ae()}function s(ai){ad=k.jwGetPlaylist()[ai.index].duration;I({id:k.id,duration:ad,position:0});u({id:k.id,bufferProgress:0})}function ae(){I({id:k.id,duration:k.jwGetDuration(),position:0});u({id:k.id,bufferProgress:0});ag({id:k.id,mute:k.jwGetMute()});r({id:k.id,newstate:a.api.events.state.IDLE});m({id:k.id,volume:k.jwGetVolume()})}function R(ak,al,aj){if(p){return}if(_utils.exists(k.skin.getSkinElement("controlbar",ak))){var ai=Q[ak];if(_utils.exists(ai)){_css(ai,{cursor:"pointer"});if(al=="fullscreen"){ai.onmouseup=function(am){am.stopPropagation();k.jwSetFullscreen(!k.jwGetFullscreen())}}else{ai.onmouseup=function(am){am.stopPropagation();if(_utils.exists(aj)){k[al](aj)}else{k[al]()}}}}}}function X(ai){if(p){return}var aj=Q[ai+"Slider"];_css(Q.elements,{cursor:"pointer"});_css(aj,{cursor:"pointer"});aj.onmousedown=function(ak){v=ai};aj.onmouseup=function(ak){ak.stopPropagation();af(ak.pageX)};aj.onmousemove=function(ak){if(v=="time"){g=true;var al=ak.pageX-c[ai+"Slider"].left-window.pageXOffset;_css(Q.timeSliderThumb,{left:al})}}}function af(aj){g=false;var ai;if(v=="time"){ai=aj-c.timeSliderRail.left+window.pageXOffset;var al=ai/c.timeSliderRail.width*ad;if(al<0){al=0}else{if(al>ad){al=ad-3}}if(k.jwGetState()==a.api.events.state.PAUSED||k.jwGetState()==a.api.events.state.IDLE){k.jwPlay()}k.jwSeek(al)}else{if(v=="volume"){ai=aj-c.volumeSliderRail.left-window.pageXOffset;var ak=Math.round(ai/c.volumeSliderRail.width*100);if(ak<0){ak=0}else{if(ak>100){ak=100}}if(k.jwGetMute()){k.jwSetMute(false)}k.jwSetVolume(ak)}}v="none"}function u(aj){if(_utils.exists(aj.bufferPercent)){f=aj.bufferPercent}if(c.timeSliderRail){var ak=c.timeSliderRail.width;var ai=isNaN(Math.round(ak*f/100))?0:Math.round(ak*f/100);_css(Q.timeSliderBuffer,{width:ai})}}function ag(ai){if(ai.mute){_hide(Q.muteButton);_show(Q.unmuteButton);_hide(Q.volumeSliderProgress)}else{_show(Q.muteButton);_hide(Q.unmuteButton);_show(Q.volumeSliderProgress)}}function r(ai){if(ai.newstate==a.api.events.state.BUFFERING||ai.newstate==a.api.events.state.PLAYING){_show(Q.pauseButton);_hide(Q.playButton)}else{_hide(Q.pauseButton);_show(Q.playButton)}A();if(ai.newstate==a.api.events.state.IDLE){_hide(Q.timeSliderBuffer);_hide(Q.timeSliderProgress);_hide(Q.timeSliderThumb);I({id:k.id,duration:k.jwGetDuration(),position:0})}else{_show(Q.timeSliderBuffer);if(ai.newstate!=a.api.events.state.BUFFERING){_show(Q.timeSliderProgress);_show(Q.timeSliderThumb)}}}function L(ai){u({bufferPercent:0});I(_utils.extend(ai,{position:0,duration:ad}))}function I(al){if(_utils.exists(al.position)){j=al.position}if(_utils.exists(al.duration)){ad=al.duration}var aj=(j===ad===0)?0:j/ad;var am=c.timeSliderRail;if(am){var ai=isNaN(Math.round(am.width*aj))?0:Math.round(am.width*aj);var ak=ai;if(Q.timeSliderProgress){Q.timeSliderProgress.style.width=ai+"px";if(!g){if(Q.timeSliderThumb){Q.timeSliderThumb.style.left=ak+"px"}}}}if(Q.durationText){Q.durationText.innerHTML=_utils.timeFormat(ad)}if(Q.elapsedText){Q.elapsedText.innerHTML=_utils.timeFormat(j)}}function n(){var am,aj;var ak=document.getElementById(ac.id+"_elements");if(!ak){return}var al=ak.childNodes;for(var ai in ak.childNodes){if(isNaN(parseInt(ai,10))){continue}if(al[ai].id.indexOf(ac.id+"_divider")===0&&aj&&aj.id.indexOf(ac.id+"_divider")===0&&al[ai].style.backgroundImage==aj.style.backgroundImage){al[ai].style.display="none"}else{if(al[ai].id.indexOf(ac.id+"_divider")===0&&am&&am.style.display!="none"){al[ai].style.display="block"}}if(al[ai].style.display!="none"){aj=al[ai]}am=al[ai]}}function w(){n();if(k.jwGetFullscreen()){_show(Q.normalscreenButton);_hide(Q.fullscreenButton)}else{_hide(Q.normalscreenButton);_show(Q.fullscreenButton)}var aj={width:e};var ai={};if(D.position==a.html5.view.positions.OVER||k.jwGetFullscreen()){aj.left=D.margin;aj.width-=2*D.margin;aj.top=y-J().height-D.margin;aj.height=J().height}var al=k.skin.getSkinElement("controlbar","capLeft");var ak=k.skin.getSkinElement("controlbar","capRight");ai.left=al?al.width:0;ai.width=aj.width-ai.left-(ak?ak.width:0);var am=!_utils.exists(k.skin.getSkinElement("controlbar","timeSliderCapLeft"))?0:k.skin.getSkinElement("controlbar","timeSliderCapLeft").width;_css(Q.timeSliderRail,{width:(ai.width-ab-E),left:am});if(_utils.exists(Q.timeSliderCapRight)){_css(Q.timeSliderCapRight,{left:am+(ai.width-ab-E)})}_css(ac,aj);_css(Q.elements,ai);_css(Q.background,ai);q();return aj}function m(am){if(_utils.exists(Q.volumeSliderRail)){var ak=isNaN(am.volume/100)?1:am.volume/100;var al=_utils.parseDimension(Q.volumeSliderRail.style.width);var ai=isNaN(Math.round(al*ak))?0:Math.round(al*ak);var an=_utils.parseDimension(Q.volumeSliderRail.style.right);var aj=(!_utils.exists(k.skin.getSkinElement("controlbar","volumeSliderCapLeft")))?0:k.skin.getSkinElement("controlbar","volumeSliderCapLeft").width;_css(Q.volumeSliderProgress,{width:ai,left:aj});if(_utils.exists(Q.volumeSliderCapLeft)){_css(Q.volumeSliderCapLeft,{left:0})}}}function t(){N();M();q();p=true;F();D.idlehide=(D.idlehide.toString().toLowerCase()=="true");if(D.position==a.html5.view.positions.OVER&&D.idlehide){ac.style.opacity=0;S=true}else{setTimeout((function(){S=true;T()}),1)}ae()}t();return this}})(jwplayer);(function(b){var a=["width","height","state","playlist","item","position","buffer","duration","volume","mute","fullscreen"];var c=b.utils;b.html5.controller=function(z,w,h,v){var C=z;var G=h;var g=v;var o=w;var J=true;var e=-1;var A=c.exists(G.config.debug)&&(G.config.debug.toString().toLowerCase()=="console");var m=new b.html5.eventdispatcher(o.id,A);c.extend(this,m);var E=[];var d=false;function r(M){if(d){m.sendEvent(M.type,M)}else{E.push(M)}}function K(M){if(!d){m.sendEvent(b.api.events.JWPLAYER_READY,M);if(b.utils.exists(window.playerReady)){playerReady(M)}if(b.utils.exists(window[h.config.playerReady])){window[h.config.playerReady](M)}while(E.length>0){var O=E.shift();m.sendEvent(O.type,O)}if(h.config.autostart&&!b.utils.isIOS()){t(G.item)}while(p.length>0){var N=p.shift();x(N.method,N.arguments)}d=true}}G.addGlobalListener(r);G.addEventListener(b.api.events.JWPLAYER_MEDIA_BUFFER_FULL,function(){G.getMedia().play()});G.addEventListener(b.api.events.JWPLAYER_MEDIA_TIME,function(M){if(M.position>=G.playlist[G.item].start&&e>=0){G.playlist[G.item].start=e;e=-1}});G.addEventListener(b.api.events.JWPLAYER_MEDIA_COMPLETE,function(M){setTimeout(s,25)});function u(){try{f(G.item);if(G.playlist[G.item].levels[0].file.length>0){if(J||G.state==b.api.events.state.IDLE){G.getMedia().load(G.playlist[G.item]);J=false}else{if(G.state==b.api.events.state.PAUSED){G.getMedia().play()}}}return true}catch(M){m.sendEvent(b.api.events.JWPLAYER_ERROR,M)}return false}function I(){try{if(G.playlist[G.item].levels[0].file.length>0){switch(G.state){case b.api.events.state.PLAYING:case b.api.events.state.BUFFERING:G.getMedia().pause();break}}return true}catch(M){m.sendEvent(b.api.events.JWPLAYER_ERROR,M)}return false}function D(M){try{if(G.playlist[G.item].levels[0].file.length>0){if(typeof M!="number"){M=parseFloat(M)}switch(G.state){case b.api.events.state.IDLE:if(e<0){e=G.playlist[G.item].start;G.playlist[G.item].start=M}u();break;case b.api.events.state.PLAYING:case b.api.events.state.PAUSED:case b.api.events.state.BUFFERING:G.seek(M);break}}return true}catch(N){m.sendEvent(b.api.events.JWPLAYER_ERROR,N)}return false}function n(M){if(!c.exists(M)){M=true}try{G.getMedia().stop(M);return true}catch(N){m.sendEvent(b.api.events.JWPLAYER_ERROR,N)}return false}function k(){try{if(G.playlist[G.item].levels[0].file.length>0){if(G.config.shuffle){f(y())}else{if(G.item+1==G.playlist.length){f(0)}else{f(G.item+1)}}}if(G.state!=b.api.events.state.IDLE){var N=G.state;G.state=b.api.events.state.IDLE;m.sendEvent(b.api.events.JWPLAYER_PLAYER_STATE,{oldstate:N,newstate:b.api.events.state.IDLE})}u();return true}catch(M){m.sendEvent(b.api.events.JWPLAYER_ERROR,M)}return false}function j(){try{if(G.playlist[G.item].levels[0].file.length>0){if(G.config.shuffle){f(y())}else{if(G.item===0){f(G.playlist.length-1)}else{f(G.item-1)}}}if(G.state!=b.api.events.state.IDLE){var N=G.state;G.state=b.api.events.state.IDLE;m.sendEvent(b.api.events.JWPLAYER_PLAYER_STATE,{oldstate:N,newstate:b.api.events.state.IDLE})}u();return true}catch(M){m.sendEvent(b.api.events.JWPLAYER_ERROR,M)}return false}function y(){var M=null;if(G.playlist.length>1){while(!c.exists(M)){M=Math.floor(Math.random()*G.playlist.length);if(M==G.item){M=null}}}else{M=0}return M}function t(N){if(!G.playlist||!G.playlist[N]){return false}try{if(G.playlist[N].levels[0].file.length>0){var O=G.state;if(O!==b.api.events.state.IDLE){if(G.playlist[G.item].provider==G.playlist[N].provider){n(false)}else{n()}}f(N);u()}return true}catch(M){m.sendEvent(b.api.events.JWPLAYER_ERROR,M)}return false}function f(M){if(!G.playlist[M]){return}G.setActiveMediaProvider(G.playlist[M]);if(G.item!=M){G.item=M;J=true;m.sendEvent(b.api.events.JWPLAYER_PLAYLIST_ITEM,{index:M})}}function H(N){try{f(G.item);var O=G.getMedia();switch(typeof(N)){case"number":O.volume(N);break;case"string":O.volume(parseInt(N,10));break}return true}catch(M){m.sendEvent(b.api.events.JWPLAYER_ERROR,M)}return false}function q(N){try{f(G.item);var O=G.getMedia();if(typeof N=="undefined"){O.mute(!G.mute)}else{if(N.toString().toLowerCase()=="true"){O.mute(true)}else{O.mute(false)}}return true}catch(M){m.sendEvent(b.api.events.JWPLAYER_ERROR,M)}return false}function l(N,M){try{G.width=N;G.height=M;g.resize(N,M);m.sendEvent(b.api.events.JWPLAYER_RESIZE,{width:G.width,height:G.height});return true}catch(O){m.sendEvent(b.api.events.JWPLAYER_ERROR,O)}return false}function B(N){try{if(typeof N=="undefined"){G.fullscreen=!G.fullscreen;g.fullscreen(!G.fullscreen)}else{if(N.toString().toLowerCase()=="true"){G.fullscreen=true;g.fullscreen(true)}else{G.fullscreen=false;g.fullscreen(false)}}m.sendEvent(b.api.events.JWPLAYER_RESIZE,{width:G.width,height:G.height});m.sendEvent(b.api.events.JWPLAYER_FULLSCREEN,{fullscreen:N});return true}catch(M){m.sendEvent(b.api.events.JWPLAYER_ERROR,M)}return false}function L(M){try{n();G.loadPlaylist(M);f(G.item);return true}catch(N){m.sendEvent(b.api.events.JWPLAYER_ERROR,N)}return false}b.html5.controller.repeatoptions={LIST:"LIST",ALWAYS:"ALWAYS",SINGLE:"SINGLE",NONE:"NONE"};function s(){switch(G.config.repeat.toUpperCase()){case b.html5.controller.repeatoptions.SINGLE:u();break;case b.html5.controller.repeatoptions.ALWAYS:if(G.item==G.playlist.length-1&&!G.config.shuffle){t(0)}else{k()}break;case b.html5.controller.repeatoptions.LIST:if(G.item==G.playlist.length-1&&!G.config.shuffle){n();f(0)}else{k()}break;default:n();break}}var p=[];function F(M){return function(){if(d){x(M,arguments)}else{p.push({method:M,arguments:arguments})}}}function x(O,N){var M=[];for(i=0;i<N.length;i++){M.push(N[i])}O.apply(this,M)}this.play=F(u);this.pause=F(I);this.seek=F(D);this.stop=F(n);this.next=F(k);this.prev=F(j);this.item=F(t);this.setVolume=F(H);this.setMute=F(q);this.resize=F(l);this.setFullscreen=F(B);this.load=F(L);this.playerReady=K}})(jwplayer);(function(a){a.html5.defaultSkin=function(){this.text='<?xml version="1.0" ?><skin author="LongTail Video" name="Five" version="1.0"><settings><setting name="backcolor" value="0xFFFFFF"/><setting name="frontcolor" value="0x000000"/><setting name="lightcolor" value="0x000000"/><setting name="screencolor" value="0x000000"/></settings><components><component name="controlbar"><settings><setting name="margin" value="20"/><setting name="fontsize" value="11"/></settings><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFJJREFUeNrslLENwAAIwxLU/09j5AiOgD5hVQzNAVY8JK4qEfHMIKBnd2+BQlBINaiRtL/aV2rdzYBsM6CIONbI1NZENTr3RwdB2PlnJgJ6BRgA4hwu5Qg5iswAAAAASUVORK5CYII="/><element name="capLeft" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="capRight" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="divider" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="playButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEhJREFUeNpiYqABYBo1dNRQ+hr6H4jvA3E8NS39j4SpZvh/LJig4YxEGEqy3kET+w+AOGFQRhTJhrEQkGcczfujhg4CQwECDADpTRWU/B3wHQAAAABJRU5ErkJggg=="/><element name="pauseButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpiYBgFo2DwA0YC8v/R1P4nRu+ooaOGUtnQUTAKhgIACDAAFCwQCfAJ4gwAAAAASUVORK5CYII="/><element name="prevButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtJREFUeNpiYBgFo2Dog/9QDAPyQHweTYwiQ/2B+D0Wi8g2tB+JTdBQRiIMJVkvEy0iglhDF9Aq9uOpHVEwoE+NJDUKRsFgAAABBgDe2hqZcNNL0AAAAABJRU5ErkJggg=="/><element name="nextButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAElJREFUeNpiYBgFo2Dog/9AfB6I5dHE/lNqKAi/B2J/ahsKw/3EGMpIhKEk66WJoaR6fz61IyqemhEFSlL61ExSo2AUDAYAEGAAiG4hj+5t7M8AAAAASUVORK5CYII="/><element name="timeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpiYBgFo2AU0Bwwzluw+D8tLWARFhKiqQ9YuLg4aWsBGxs7bS1gZ6e5BWyjSX0UjIKhDgACDABlYQOGh5pYywAAAABJRU5ErkJggg=="/><element name="timeSliderBuffer" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFo2AU0Bww1jc0/aelBSz8/Pw09QELOzs7bS1gY2OjrQWsrKy09gHraFIfBaNgqAOAAAMAvy0DChXHsZMAAAAASUVORK5CYII="/><element name="timeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpiYBgFo2AU0BwwAvF/WlrARGsfjFow8BaMglEwCugAAAIMAOHfAQunR+XzAAAAAElFTkSuQmCC"/><element name="timeSliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAICAYAAAA870V8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUeNpiZICA/yCCiQEJUJcDEGAAY0gBD1/m7Q0AAAAASUVORK5CYII="/><element name="muteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiYBgFIw3MB+L/5Gj8j6yRiRTFyICJXHfTXyMLAXlGati4YDRFDj8AEGAABk8GSqqS4CoAAAAASUVORK5CYII="/><element name="unmuteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFgxz8p7bm+cQa+h8LHy7GhEcjIz4bmAjYykiun/8j0fakGPIfTfPgiSr6aB4FVAcAAQYAWdwR1G1Wd2gAAAAASUVORK5CYII="/><element name="volumeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGpJREFUeNpi/P//PwM9ABMDncCoRYPfIqqDZcuW1UPp/6AUDcNM1DQYKtRAlaAj1mCSLSLXYIIWUctgDItoZfDA5aOoqKhGEANIM9LVR7SymGDQUctikuOIXkFNdhHEOFrDjlpEd4sAAgwAriRMub95fu8AAAAASUVORK5CYII="/><element name="volumeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUeNpi/P//PwM9ABMDncCoRYPfIlqAeij9H5SiYZiqBqPTlFqE02BKLSLaYFItIttgQhZRzWB8FjENiuRJ7aAbsMQwYMl7wDIsWUUQ42gNO2oR3S0CCDAAKhKq6MLLn8oAAAAASUVORK5CYII="/><element name="fullscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE5JREFUeNpiYBgFo2DQA0YC8v/xqP1PjDlMRDrEgUgxkgHIlfZoriVGjmzLsLFHAW2D6D8eA/9Tw7L/BAwgJE90PvhPpNgoGAVDEQAEGAAMdhTyXcPKcAAAAABJRU5ErkJggg=="/><element name="normalscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNpiYBgFo2DIg/9UUkOUAf8JiFFsyX88fJyAkcQgYMQjNkzBoAgiezyRbE+tFGSPxQJ7auYBmma0UTAKBhgABBgAJAEY6zON61sAAAAASUVORK5CYII="/></elements></component><component name="display"><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrszwENADAIA7DhX8ENoBMZ5KR10EryckCJiIiIiIiIiIiIiIiIiIiIiIh8GmkRERERERERERERERERERERERGRHSPAAPlXH1phYpYaAAAAAElFTkSuQmCC"/><element name="playIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs18ENgjAYhmFouDOCcQJGcARHgE10BDcgTOIosAGwQOuPwaQeuFRi2p/3Sb6EC5L3QCxZBgAAAOCorLW1zMn65TrlkH4NcV7QNcUQt7Gn7KIhxA+qNIR81spOGkL8oFJDyLJRdosqKDDkK+iX5+d7huzwM40xptMQMkjIOeRGo+VkEVvIPfTGIpKASfYIfT9iCHkHrBEzf4gcUQ56aEzuGK/mw0rHpy4AAACAf3kJMACBxjAQNRckhwAAAABJRU5ErkJggg=="/><element name="muteIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUeNrs1jEOgCAMBVAg7t5/8qaoIy4uoobyXsLCxA+0NCUAAADGUWvdQoQ41x4ixNBB2hBvBskdD3w5ZCkl3+33VqI0kjBBlh9rp+uTcyOP33TnolfsU85XX3yIRpQph8ZQY3wTZtU5AACASA4BBgDHoVuY1/fvOQAAAABJRU5ErkJggg=="/><element name="errorIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWlJREFUeNrsl+1twjAQhsHq/7BBYQLYIBmBDcoGMAIjtBPQTcII2SDtBDBBwrU6pGsUO7YbO470PtKJkz9iH++d4ywWAAAAAABgljRNsyWr2bZzDuJG1rLdZhcMbTjrBCGDyUKsqQLFciJb9bSvuG/WagRVRUVUI6gqy5HVeKWfSgRyJruKIU//TrZTSn2nmlaXThrloi/v9F2STC1W4+Aw5cBzkquRc09bofFNc6YLxEON0VUZS5FPTftO49vMjRsIF3RhOGr7/D/pJw+FKU+q0vDyq8W42jCunDqI3LC5XxNj2wHLU1XjaRnb0Lhykhqhhd8MtSF5J9tbjCv4mXGvKJz/65FF/qJryyaaIvzP2QRxZTX2nTuXjvV/VPFSwyLnW7mpH99yTh1FEVro6JBSd40/pMrRdV8vPtcKl28T2pT8TnFZ4yNosct3Q0io6JfBiz1FlGdqVQH3VHnepAEAAAAAADDzEGAAcTwB10jWgxcAAAAASUVORK5CYII="/><element name="bufferIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAuhJREFUeNrsWr9rU1EUznuNGqvFQh1ULOhiBx0KDtIuioO4pJuik3FxFfUPaAV1FTdx0Q5d2g4FFxehTnEpZHFoBy20tCIWtGq0TZP4HfkeHB5N8m6Sl/sa74XDybvv3vvOd8/Pe4lXrVZT3dD8VJc0B8QBcUAcEAfESktHGeR5XtMfqFQq/f92zPe/NbtGlKTdCY30kuxrpMGO94BlQCXs+rbh3ONgA6BlzP1p20d80gEI5hmA2A92Qua1Q2PtAFISM+bvjMG8U+Q7oA3rQGASwrYCU6WpNdLGYbA+Pq5jjXIiwi8EEa2UDbQSaKOIuV+SlkcCrfjY8XTI9EpKGwP0C2kru2hLtHqa4zoXtZRWyvi4CLwv9Opr6Hkn6A9HKgEANsQ1iqC3Ub/vRUk2JgmRkatK36kVrnt0qObunwUdUUMXMWYpakJsO5Am8tAw2GBIgwWA+G2S2dMpiw0gDioQRQJoKhRb1QiDwlHZUABYbaXWsm5ae6loTE4ZDxN4CZar8foVzOJ2iyZ2kWF3t7YIevffaMT5yJ70kQb2fQ1sE5SHr2wazs2wgMxgbsEKEAgxAvZUJbQLBGTSBMgNrncJbA6AljtS/eKDJ0Ez+DmrQEzXS2h1Ck25kAg0IZcUOaydCy4sYnN2fOA+2AP16gNoHALlQ+fwH7XO4CxLenUpgj4xr6ugY2roPMbMx+Xs18m/E8CVEIhxsNeg83XWOAN6grG3lGbk8uE5fr4B/WH3cJw+co/l9nTYsSGYCJ/lY5/qv0thn6nrIWmjeJcPSnWOeY++AkF8tpJHIMAUs/MaBBpj3znZfQo5psY+ZrG4gv5HickjEOymKjEeRpgyST6IuZcTcWbnjcgdPi5ghxciRKsl1lDSsgwA1i8fssonJgzmTSqfGUkCENndNdAL7PS6QQ7ZYISTo+1qq0LEWjTWcvY4isa4z+yfQB+7ooyHVg5RI7/i1Ijn/vnggDggDogD4oC00P4KMACd/juEHOrS4AAAAABJRU5ErkJggg=="/></elements></component><component name="dock"><elements><element name="button" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFBJREFUeNrs0cEJACAQA8Eofu0fu/W6EM5ZSAFDRpKTBs00CQQEBAQEBAQEBAQEBAQEBATkK8iqbY+AgICAgICAgICAgICAgICAgIC86QowAG5PAQzEJ0lKAAAAAElFTkSuQmCC"/></elements></component><component name="playlist"><elements><element name="item" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAIAAAC1nk4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNrs2NEJwCAMBcBYuv/CFuIE9VN47WWCR7iocXR3pdWdGPqqwIoMjYfQeAiNh9B4JHc6MHQVHnjggQceeOCBBx77TifyeOY0iHi8DqIdEY8dD5cL094eePzINB5CO/LwcOTptNB4CP25L4TIbZzpU7UEGAA5wz1uF5rF9AAAAABJRU5ErkJggg=="/><element name="sliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNrsy6ENACAMAMHClp2wYxZLAg5Fcu9e3OjuOKqqfTMzbs14CIZhGIZhGIZhGP4VLwEGAK/BBnVFpB0oAAAAAElFTkSuQmCC"/><element name="sliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrsy7ENACAMBLE8++8caFFKKiRffU53112SGs3ttOohGIZhGIZhGIZh+Fe8BRgAiaUGde6NOSEAAAAASUVORK5CYII="/></elements></component></components></skin>';this.xml=null;if(window.DOMParser){parser=new DOMParser();this.xml=parser.parseFromString(this.text,"text/xml")}else{this.xml=new ActiveXObject("Microsoft.XMLDOM");this.xml.async="false";this.xml.loadXML(this.text)}return this}})(jwplayer);(function(a){_utils=a.utils;_css=_utils.css;_hide=function(b){_css(b,{display:"none"})};_show=function(b){_css(b,{display:"block"})};a.html5.display=function(k,G){var j={icons:true,showmute:false};var Q=_utils.extend({},j,G);var h=k;var P={};var e;var u;var w;var N;var s;var I;var A;var J=!_utils.exists(h.skin.getComponentSettings("display").bufferrotation)?15:parseInt(h.skin.getComponentSettings("display").bufferrotation,10);var q=!_utils.exists(h.skin.getComponentSettings("display").bufferinterval)?100:parseInt(h.skin.getComponentSettings("display").bufferinterval,10);var z=-1;var t="";var K=true;var d;var g=false;var n=false;var H=new a.html5.eventdispatcher();_utils.extend(this,H);var D={display:{style:{cursor:"pointer",top:0,left:0,overflow:"hidden"},click:m},display_icon:{style:{cursor:"pointer",position:"absolute",top:((h.skin.getSkinElement("display","background").height-h.skin.getSkinElement("display","playIcon").height)/2),left:((h.skin.getSkinElement("display","background").width-h.skin.getSkinElement("display","playIcon").width)/2),border:0,margin:0,padding:0,zIndex:3,display:"none"}},display_iconBackground:{style:{cursor:"pointer",position:"absolute",top:((u-h.skin.getSkinElement("display","background").height)/2),left:((e-h.skin.getSkinElement("display","background").width)/2),border:0,backgroundImage:(["url(",h.skin.getSkinElement("display","background").src,")"]).join(""),width:h.skin.getSkinElement("display","background").width,height:h.skin.getSkinElement("display","background").height,margin:0,padding:0,zIndex:2,display:"none"}},display_image:{style:{display:"none",width:e,height:u,position:"absolute",cursor:"pointer",left:0,top:0,margin:0,padding:0,textDecoration:"none",zIndex:1}},display_text:{style:{zIndex:4,position:"relative",opacity:0.8,backgroundColor:parseInt("000000",16),color:parseInt("ffffff",16),textAlign:"center",fontFamily:"Arial,sans-serif",padding:"0 5px",fontSize:14}}};h.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE,p);h.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_MUTE,p);h.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_ITEM,p);h.jwAddEventListener(a.api.events.JWPLAYER_ERROR,o);L();function L(){P.display=C("div","display");P.display_text=C("div","display_text");P.display.appendChild(P.display_text);P.display_image=C("img","display_image");P.display_image.onerror=function(R){_hide(P.display_image)};P.display_image.onload=y;P.display_icon=C("div","display_icon");P.display_iconBackground=C("div","display_iconBackground");P.display.appendChild(P.display_image);P.display_iconBackground.appendChild(P.display_icon);P.display.appendChild(P.display_iconBackground);f();setTimeout((function(){n=true;if(Q.icons.toString()=="true"){F()}}),1)}this.getDisplayElement=function(){return P.display};this.resize=function(S,R){_css(P.display,{width:S,height:R});_css(P.display_text,{width:(S-10),top:((R-P.display_text.getBoundingClientRect().height)/2)});_css(P.display_iconBackground,{top:((R-h.skin.getSkinElement("display","background").height)/2),left:((S-h.skin.getSkinElement("display","background").width)/2)});if(e!=S||u!=R){e=S;u=R;d=undefined;F()}c();p({})};this.show=function(){if(g){g=false;r(h.jwGetState())}};this.hide=function(){if(!g){B();g=true}};function y(R){w=P.display_image.naturalWidth;N=P.display_image.naturalHeight;c()}function c(){_utils.stretch(h.jwGetStretching(),P.display_image,e,u,w,N)}function C(R,T){var S=document.createElement(R);S.id=h.id+"_jwplayer_"+T;_css(S,D[T].style);return S}function f(){for(var R in P){if(_utils.exists(D[R].click)){P[R].onclick=D[R].click}}}function m(R){if(typeof R.preventDefault!="undefined"){R.preventDefault()}else{R.returnValue=false}if(h.jwGetState()!=a.api.events.state.PLAYING){h.jwPlay()}else{h.jwPause()}}function O(R){if(A){B();return}P.display_icon.style.backgroundImage=(["url(",h.skin.getSkinElement("display",R).src,")"]).join("");_css(P.display_icon,{width:h.skin.getSkinElement("display",R).width,height:h.skin.getSkinElement("display",R).height,top:(h.skin.getSkinElement("display","background").height-h.skin.getSkinElement("display",R).height)/2,left:(h.skin.getSkinElement("display","background").width-h.skin.getSkinElement("display",R).width)/2});b();if(_utils.exists(h.skin.getSkinElement("display",R+"Over"))){P.display_icon.onmouseover=function(S){P.display_icon.style.backgroundImage=["url(",h.skin.getSkinElement("display",R+"Over").src,")"].join("")};P.display_icon.onmouseout=function(S){P.display_icon.style.backgroundImage=["url(",h.skin.getSkinElement("display",R).src,")"].join("")}}else{P.display_icon.onmouseover=null;P.display_icon.onmouseout=null}}function B(){if(Q.icons.toString()=="true"){_hide(P.display_icon);_hide(P.display_iconBackground);M()}}function b(){if(!g&&Q.icons.toString()=="true"){_show(P.display_icon);_show(P.display_iconBackground);F()}}function o(R){A=true;B();P.display_text.innerHTML=R.error;_show(P.display_text);P.display_text.style.top=((u-P.display_text.getBoundingClientRect().height)/2)+"px"}function E(){P.display_image.style.display="none"}function p(R){if((R.type==a.api.events.JWPLAYER_PLAYER_STATE||R.type==a.api.events.JWPLAYER_PLAYLIST_ITEM)&&A){A=false;_hide(P.display_text)}var S=h.jwGetState();if(S==t){return}t=S;if(z>=0){clearTimeout(z)}if(K||h.jwGetState()==a.api.events.state.PLAYING||h.jwGetState()==a.api.events.state.PAUSED){r(h.jwGetState())}else{z=setTimeout(l(h.jwGetState()),500)}}function l(R){return(function(){r(R)})}function r(R){if(_utils.exists(I)){clearInterval(I);I=null;_utils.animations.rotate(P.display_icon,0)}switch(R){case a.api.events.state.BUFFERING:if(_utils.isIOS()){E();B()}else{if(h.jwGetPlaylist()[h.jwGetItem()].provider=="sound"){v()}s=0;I=setInterval(function(){s+=J;_utils.animations.rotate(P.display_icon,s%360)},q);O("bufferIcon");K=true}break;case a.api.events.state.PAUSED:if(!_utils.isIOS()){if(h.jwGetPlaylist()[h.jwGetItem()].provider!="sound"){_css(P.display_image,{background:"transparent no-repeat center center"})}O("playIcon");K=true}break;case a.api.events.state.IDLE:if(h.jwGetPlaylist()[h.jwGetItem()]&&h.jwGetPlaylist()[h.jwGetItem()].image){v()}else{E()}O("playIcon");K=true;break;default:if(h.jwGetPlaylist()[h.jwGetItem()]&&h.jwGetPlaylist()[h.jwGetItem()].provider=="sound"){if(_utils.isIOS()){E();K=false}else{v()}}else{E();K=false}if(h.jwGetMute()&&Q.showmute){O("muteIcon")}else{B()}break}z=-1}function v(){if(h.jwGetPlaylist()[h.jwGetItem()]&&h.jwGetPlaylist()[h.jwGetItem()].image){_css(P.display_image,{display:"block"});P.display_image.src=_utils.getAbsolutePath(h.jwGetPlaylist()[h.jwGetItem()].image)}}function x(R){return function(){if(!n){return}if(!g&&d!=R){d=R;H.sendEvent(R,{component:"display",boundingRect:_utils.getDimensions(P.display_iconBackground)})}}}var F=x(a.api.events.JWPLAYER_COMPONENT_SHOW);var M=x(a.api.events.JWPLAYER_COMPONENT_HIDE);return this}})(jwplayer);(function(a){_css=a.utils.css;a.html5.dock=function(p,u){function q(){return{align:a.html5.view.positions.RIGHT}}var k=a.utils.extend({},q(),u);if(k.align=="FALSE"){return}var f={};var s=[];var g;var v;var d=false;var t=false;var e={x:0,y:0,width:0,height:0};var r;var j=new a.html5.eventdispatcher();_utils.extend(this,j);var m=document.createElement("div");m.id=p.id+"_jwplayer_dock";p.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE,l);this.getDisplayElement=function(){return m};this.setButton=function(A,x,y,z){if(!x&&f[A]){a.utils.arrays.remove(s,A);m.removeChild(f[A].div);delete f[A]}else{if(x){if(!f[A]){f[A]={}}f[A].handler=x;f[A].outGraphic=y;f[A].overGraphic=z;if(!f[A].div){s.push(A);f[A].div=document.createElement("div");f[A].div.style.position="relative";m.appendChild(f[A].div);f[A].div.appendChild(document.createElement("img"));f[A].div.childNodes[0].style.position="absolute";f[A].div.childNodes[0].style.left=0;f[A].div.childNodes[0].style.top=0;f[A].div.childNodes[0].style.zIndex=10;f[A].div.childNodes[0].style.cursor="pointer";f[A].div.appendChild(document.createElement("img"));f[A].div.childNodes[1].style.position="absolute";f[A].div.childNodes[1].style.left=0;f[A].div.childNodes[1].style.top=0;if(p.skin.getSkinElement("dock","button")){f[A].div.childNodes[1].src=p.skin.getSkinElement("dock","button").src}f[A].div.childNodes[1].style.zIndex=9;f[A].div.childNodes[1].style.cursor="pointer";f[A].div.onmouseover=function(){if(f[A].overGraphic){f[A].div.childNodes[0].src=f[A].overGraphic}if(p.skin.getSkinElement("dock","buttonOver")){f[A].div.childNodes[1].src=p.skin.getSkinElement("dock","buttonOver").src}};f[A].div.onmouseout=function(){if(f[A].outGraphic){f[A].div.childNodes[0].src=f[A].outGraphic}if(p.skin.getSkinElement("dock","button")){f[A].div.childNodes[1].src=p.skin.getSkinElement("dock","button").src}};if(f[A].overGraphic){f[A].div.childNodes[0].src=f[A].overGraphic}if(f[A].outGraphic){f[A].div.childNodes[0].src=f[A].outGraphic}if(p.skin.getSkinElement("dock","button")){f[A].div.childNodes[1].src=p.skin.getSkinElement("dock","button").src}}if(x){f[A].div.onclick=function(B){B.preventDefault();a(p.id).callback(A);if(f[A].overGraphic){f[A].div.childNodes[0].src=f[A].overGraphic}if(p.skin.getSkinElement("dock","button")){f[A].div.childNodes[1].src=p.skin.getSkinElement("dock","button").src}}}}}h(g,v)};function h(x,J){if(s.length>0){var y=10;var I=y;var F=-1;var G=p.skin.getSkinElement("dock","button").height;var E=p.skin.getSkinElement("dock","button").width;var C=x-E-y;var H,B;if(k.align==a.html5.view.positions.LEFT){F=1;C=y}for(var z=0;z<s.length;z++){var K=Math.floor(I/J);if((I+G+y)>((K+1)*J)){I=((K+1)*J)+y;K=Math.floor(I/J)}var A=f[s[z]].div;A.style.top=(I%J)+"px";A.style.left=(C+(p.skin.getSkinElement("dock","button").width+y)*K*F)+"px";var D={x:a.utils.parseDimension(A.style.left),y:a.utils.parseDimension(A.style.top),width:E,height:G};if(!H||(D.x<=H.x&&D.y<=H.y)){H=D}if(!B||(D.x>=B.x&&D.y>=B.y)){B=D}I+=p.skin.getSkinElement("dock","button").height+y}e={x:H.x,y:H.y,width:B.x-H.x+B.width,height:H.y-B.y+B.height}}if(t!=p.jwGetFullscreen()||g!=x||v!=J){g=x;v=J;t=p.jwGetFullscreen();r=undefined;setTimeout(n,1)}}function b(x){return function(){if(!d&&r!=x&&s.length>0){r=x;j.sendEvent(x,{component:"dock",boundingRect:e})}}}function l(x){if(a.utils.isIOS()){switch(x.newstate){case a.api.events.state.IDLE:o();break;default:c();break}}}var n=b(a.api.events.JWPLAYER_COMPONENT_SHOW);var w=b(a.api.events.JWPLAYER_COMPONENT_HIDE);this.resize=h;var o=function(){_css(m,{display:"block"});if(d){d=false;n()}};var c=function(){_css(m,{display:"none"});if(!d){w();d=true}};this.hide=c;this.show=o;return this}})(jwplayer);(function(a){a.html5.eventdispatcher=function(d,b){var c=new a.events.eventdispatcher(b);a.utils.extend(this,c);this.sendEvent=function(e,f){if(!a.utils.exists(f)){f={}}a.utils.extend(f,{id:d,version:a.version,type:e});c.sendEvent(e,f)}}})(jwplayer);(function(a){var b={prefix:"http://l.longtailvideo.com/html5/",file:"logo.png",link:"http://www.longtailvideo.com/players/jw-flv-player/",margin:8,out:0.5,over:1,timeout:5,hide:true,position:"bottom-left"};_css=a.utils.css;a.html5.logo=function(n,r){var q=n;var u;var d;var t;var h=false;g();function g(){o();c();l()}function o(){if(b.prefix){var v=n.version.split(/\W/).splice(0,2).join("/");if(b.prefix.indexOf(v)<0){b.prefix+=v+"/"}}if(r.position==a.html5.view.positions.OVER){r.position=b.position}d=a.utils.extend({},b)}function c(){t=document.createElement("img");t.id=q.id+"_jwplayer_logo";t.style.display="none";t.onload=function(v){_css(t,k());q.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE,j);p()};if(!d.file){return}if(d.file.indexOf("http://")===0){t.src=d.file}else{t.src=d.prefix+d.file}}if(!d.file){return}this.resize=function(w,v){};this.getDisplayElement=function(){return t};function l(){if(d.link){t.onmouseover=f;t.onmouseout=p;t.onclick=s}else{this.mouseEnabled=false}}function s(v){if(typeof v!="undefined"){v.stopPropagation()}if(!h){return}q.jwPause();q.jwSetFullscreen(false);if(d.link){window.open(d.link,"_top")}return}function p(v){if(d.link&&h){t.style.opacity=d.out}return}function f(v){if(d.hide.toString()=="true"&&h){t.style.opacity=d.over}return}function k(){var x={textDecoration:"none",position:"absolute",cursor:"pointer"};x.display=(d.hide.toString()=="true")?"none":"block";var w=d.position.toLowerCase().split("-");for(var v in w){x[w[v]]=d.margin}return x}function m(){if(d.hide.toString()=="true"){t.style.display="block";t.style.opacity=0;a.utils.fadeTo(t,d.out,0.1,parseFloat(t.style.opacity));u=setTimeout(function(){e()},d.timeout*1000)}h=true}function e(){h=false;if(d.hide.toString()=="true"){a.utils.fadeTo(t,0,0.1,parseFloat(t.style.opacity))}}function j(v){if(v.newstate==a.api.events.state.BUFFERING){clearTimeout(u);m()}}return this}})(jwplayer);(function(a){var c={ended:a.api.events.state.IDLE,playing:a.api.events.state.PLAYING,pause:a.api.events.state.PAUSED,buffering:a.api.events.state.BUFFERING};var e=a.utils;var b=e.css;var d=e.isIOS();a.html5.mediavideo=function(h,s){var r={abort:n,canplay:k,canplaythrough:k,durationchange:G,emptied:n,ended:k,error:u,loadeddata:G,loadedmetadata:G,loadstart:k,pause:k,play:n,playing:k,progress:v,ratechange:n,seeked:k,seeking:k,stalled:k,suspend:k,timeupdate:D,volumechange:n,waiting:k,canshowcurrentframe:n,dataunavailable:n,empty:n,load:z,loadedfirstframe:n};var j=new a.html5.eventdispatcher();e.extend(this,j);var y=h,l=s,m,B,A,x,f,H=false,C,p,q;o();this.load=function(J,K){if(typeof K=="undefined"){K=true}x=J;e.empty(m);q=0;if(J.levels&&J.levels.length>0){if(J.levels.length==1){m.src=J.levels[0].file}else{if(m.src){m.removeAttribute("src")}for(var I=0;I<J.levels.length;I++){var L=m.ownerDocument.createElement("source");L.src=J.levels[I].file;m.appendChild(L);q++}}}else{m.src=J.file}if(d){if(J.image){m.poster=J.image}m.controls="controls";m.style.display="block"}C=p=A=false;y.buffer=0;if(!e.exists(J.start)){J.start=0}y.duration=J.duration;j.sendEvent(a.api.events.JWPLAYER_MEDIA_LOADED);if((!d&&J.levels.length==1)||!H){m.load()}H=false;if(K){E(a.api.events.state.BUFFERING);j.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER,{bufferPercent:0});this.play()}};this.play=function(){if(B!=a.api.events.state.PLAYING){t();if(p){E(a.api.events.state.PLAYING)}else{E(a.api.events.state.BUFFERING)}m.play()}};this.pause=function(){m.pause();E(a.api.events.state.PAUSED)};this.seek=function(I){if(!(y.duration<=0||isNaN(y.duration))&&!(y.position<=0||isNaN(y.position))){m.currentTime=I;m.play()}};_stop=this.stop=function(I){if(!e.exists(I)){I=true}g();if(I){m.style.display="none";p=false;var J=navigator.userAgent;if(J.match(/chrome/i)){m.src=undefined}else{if(J.match(/safari/i)){m.removeAttribute("src")}else{m.src=""}}m.removeAttribute("controls");m.removeAttribute("poster");e.empty(m);m.load();H=true;if(m.webkitSupportsFullscreen){try{m.webkitExitFullscreen()}catch(K){}}}E(a.api.events.state.IDLE)};this.fullscreen=function(I){if(I===true){this.resize("100%","100%")}else{this.resize(y.config.width,y.config.height)}};this.resize=function(J,I){if(false){b(l,{width:J,height:I})}j.sendEvent(a.api.events.JWPLAYER_MEDIA_RESIZE,{fullscreen:y.fullscreen,width:J,hieght:I})};this.volume=function(I){if(!d){m.volume=I/100;y.volume=I;j.sendEvent(a.api.events.JWPLAYER_MEDIA_VOLUME,{volume:Math.round(I)})}};this.mute=function(I){if(!d){m.muted=I;y.mute=I;j.sendEvent(a.api.events.JWPLAYER_MEDIA_MUTE,{mute:I})}};this.getDisplayElement=function(){return m};this.hasChrome=function(){return false};function o(){m=document.createElement("video");B=a.api.events.state.IDLE;for(var I in r){m.addEventListener(I,function(J){if(e.exists(J.target.parentNode)){r[J.type](J)}},true)}m.setAttribute("x-webkit-airplay","allow");if(l.parentNode){l.parentNode.replaceChild(m,l)}if(!m.id){m.id=l.id}}function E(I){if(I==a.api.events.state.PAUSED&&B==a.api.events.state.IDLE){return}if(B!=I){var J=B;y.state=B=I;j.sendEvent(a.api.events.JWPLAYER_PLAYER_STATE,{oldstate:J,newstate:I})}}function n(I){}function v(K){var J;if(e.exists(K)&&K.lengthComputable&&K.total){J=K.loaded/K.total*100}else{if(e.exists(m.buffered)&&(m.buffered.length>0)){var I=m.buffered.length-1;if(I>=0){J=m.buffered.end(I)/m.duration*100}}}if(p===false&&B==a.api.events.state.BUFFERING){j.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER_FULL);p=true}if(!C){if(J==100){C=true}if(e.exists(J)&&(J>y.buffer)){y.buffer=Math.round(J);j.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER,{bufferPercent:Math.round(J)})}}}function D(J){if(e.exists(J)&&e.exists(J.target)){if(!isNaN(J.target.duration)&&(isNaN(y.duration)||y.duration<1)){if(J.target.duration==Infinity){y.duration=0}else{y.duration=Math.round(J.target.duration*10)/10}}if(!A&&m.readyState>0){m.style.display="block";E(a.api.events.state.PLAYING)}if(B==a.api.events.state.PLAYING){if(!A&&m.readyState>0){A=true;try{if(m.currentTime<x.start){m.currentTime=x.start}}catch(I){}m.volume=y.volume/100;m.muted=y.mute}y.position=y.duration>0?(Math.round(J.target.currentTime*10)/10):0;j.sendEvent(a.api.events.JWPLAYER_MEDIA_TIME,{position:y.position,duration:y.duration});if(y.position>=y.duration&&(y.position>0||y.duration>0)){w()}}}v(J)}function z(I){}function k(I){if(c[I.type]){if(I.type=="ended"){w()}else{E(c[I.type])}}}function G(I){var J={height:I.target.videoHeight,width:I.target.videoWidth,duration:Math.round(I.target.duration*10)/10};if((y.duration===0||isNaN(y.duration))&&I.target.duration!=Infinity){y.duration=Math.round(I.target.duration*10)/10}j.sendEvent(a.api.events.JWPLAYER_MEDIA_META,{metadata:J})}function u(K){if(B==a.api.events.state.IDLE){return}var J="There was an error: ";if((K.target.error&&K.target.tagName.toLowerCase()=="video")||K.target.parentNode.error&&K.target.parentNode.tagName.toLowerCase()=="video"){var I=!e.exists(K.target.error)?K.target.parentNode.error:K.target.error;switch(I.code){case I.MEDIA_ERR_ABORTED:J="You aborted the video playback: ";break;case I.MEDIA_ERR_NETWORK:J="A network error caused the video download to fail part-way: ";break;case I.MEDIA_ERR_DECODE:J="The video playback was aborted due to a corruption problem or because the video used features your browser did not support: ";break;case I.MEDIA_ERR_SRC_NOT_SUPPORTED:J="The video could not be loaded, either because the server or network failed or because the format is not supported: ";break;default:J="An unknown error occurred: ";break}}else{if(K.target.tagName.toLowerCase()=="source"){q--;if(q>0){return}J="The video could not be loaded, either because the server or network failed or because the format is not supported: "}else{e.log("An unknown error occurred.  Continuing...");return}}_stop(false);J+=F();_error=true;j.sendEvent(a.api.events.JWPLAYER_ERROR,{error:J});return}function F(){var K="";for(var J in x.levels){var I=x.levels[J];var L=l.ownerDocument.createElement("source");K+=a.utils.getAbsolutePath(I.file);if(J<(x.levels.length-1)){K+=", "}}return K}function t(){if(!e.exists(f)){f=setInterval(function(){v()},100)}}function g(){clearInterval(f);f=null}function w(){if(B!=a.api.events.state.IDLE){_stop(false);j.sendEvent(a.api.events.JWPLAYER_MEDIA_COMPLETE)}}}})(jwplayer);(function(a){var c={ended:a.api.events.state.IDLE,playing:a.api.events.state.PLAYING,pause:a.api.events.state.PAUSED,buffering:a.api.events.state.BUFFERING};var b=a.utils.css;a.html5.mediayoutube=function(j,e){var f=new a.html5.eventdispatcher();a.utils.extend(this,f);var l=j;var h=document.getElementById(e.id);var g=a.api.events.state.IDLE;var n,m;function k(p){if(g!=p){var q=g;l.state=p;g=p;f.sendEvent(a.api.events.JWPLAYER_PLAYER_STATE,{oldstate:q,newstate:p})}}this.getDisplayElement=function(){return h};this.play=function(){if(g==a.api.events.state.IDLE){f.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER,{bufferPercent:100});f.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER_FULL);k(a.api.events.state.PLAYING)}else{if(g==a.api.events.state.PAUSED){k(a.api.events.state.PLAYING)}}};this.pause=function(){k(a.api.events.state.PAUSED)};this.seek=function(p){};this.stop=function(p){if(!_utils.exists(p)){p=true}l.position=0;k(a.api.events.state.IDLE);if(p){b(h,{display:"none"})}};this.volume=function(p){l.volume=p;f.sendEvent(a.api.events.JWPLAYER_MEDIA_VOLUME,{volume:Math.round(p)})};this.mute=function(p){h.muted=p;l.mute=p;f.sendEvent(a.api.events.JWPLAYER_MEDIA_MUTE,{mute:p})};this.resize=function(q,p){if(q*p>0&&n){n.width=m.width=q;n.height=m.height=p}f.sendEvent(a.api.events.JWPLAYER_MEDIA_RESIZE,{fullscreen:l.fullscreen,width:q,height:p})};this.fullscreen=function(p){if(p===true){this.resize("100%","100%")}else{this.resize(l.config.width,l.config.height)}};this.load=function(p){o(p);b(n,{display:"block"});k(a.api.events.state.BUFFERING);f.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER,{bufferPercent:0});f.sendEvent(a.api.events.JWPLAYER_MEDIA_LOADED);this.play()};this.hasChrome=function(){return(g!=a.api.events.state.IDLE)};function o(v){var s=v.levels[0].file;s=["http://www.youtube.com/v/",d(s),"&amp;hl=en_US&amp;fs=1&autoplay=1"].join("");n=document.createElement("object");n.id=h.id;n.style.position="absolute";var u={movie:s,allowfullscreen:"true",allowscriptaccess:"always"};for(var p in u){var t=document.createElement("param");t.name=p;t.value=u[p];n.appendChild(t)}m=document.createElement("embed");n.appendChild(m);var q={src:s,type:"application/x-shockwave-flash",allowfullscreen:"true",allowscriptaccess:"always",width:n.width,height:n.height};for(var r in q){m.setAttribute(r,q[r])}n.appendChild(m);n.style.zIndex=2147483000;if(h!=n&&h.parentNode){h.parentNode.replaceChild(n,h)}h=n}function d(q){var p=q.split(/\?|\#\!/);var s="";for(var r=0;r<p.length;r++){if(p[r].substr(0,2)=="v="){s=p[r].substr(2)}}if(s==""){if(q.indexOf("/v/")>=0){s=q.substr(q.indexOf("/v/")+3)}else{if(q.indexOf("youtu.be")>=0){s=q.substr(q.indexOf("youtu.be/")+9)}else{s=q}}}if(s.indexOf("?")>-1){s=s.substr(0,s.indexOf("?"))}if(s.indexOf("&")>-1){s=s.substr(0,s.indexOf("&"))}return s}this.embed=m;return this}})(jwplayer);(function(jwplayer){var _configurableStateVariables=["width","height","start","duration","volume","mute","fullscreen","item","plugins","stretching"];jwplayer.html5.model=function(api,container,options){var _api=api;var _container=container;var _model={id:_container.id,playlist:[],state:jwplayer.api.events.state.IDLE,position:0,buffer:0,config:{width:480,height:320,item:-1,skin:undefined,file:undefined,image:undefined,start:0,duration:0,bufferlength:5,volume:90,mute:false,fullscreen:false,repeat:"",stretching:jwplayer.utils.stretching.UNIFORM,autostart:false,debug:undefined,screencolor:undefined}};var _media;var _eventDispatcher=new jwplayer.html5.eventdispatcher();var _components=["display","logo","controlbar","playlist","dock"];jwplayer.utils.extend(_model,_eventDispatcher);for(var option in options){if(typeof options[option]=="string"){var type=/color$/.test(option)?"color":null;options[option]=jwplayer.utils.typechecker(options[option],type)}var config=_model.config;var path=option.split(".");for(var edge in path){if(edge==path.length-1){config[path[edge]]=options[option]}else{if(!jwplayer.utils.exists(config[path[edge]])){config[path[edge]]={}}config=config[path[edge]]}}}for(var index in _configurableStateVariables){var configurableStateVariable=_configurableStateVariables[index];_model[configurableStateVariable]=_model.config[configurableStateVariable]}var pluginorder=_components.concat([]);if(jwplayer.utils.exists(_model.plugins)){if(typeof _model.plugins=="string"){var userplugins=_model.plugins.split(",");for(var userplugin in userplugins){if(typeof userplugins[userplugin]=="string"){pluginorder.push(userplugins[userplugin].replace(/^\s+|\s+$/g,""))}}}}if(jwplayer.utils.isIOS()){pluginorder=["display","logo","dock","playlist"];if(!jwplayer.utils.exists(_model.config.repeat)){_model.config.repeat="list"}}else{if(_model.config.chromeless){pluginorder=["logo","dock","playlist"];if(!jwplayer.utils.exists(_model.config.repeat)){_model.config.repeat="list"}}}_model.plugins={order:pluginorder,config:{},object:{}};if(typeof _model.config.components!="undefined"){for(var component in _model.config.components){_model.plugins.config[component]=_model.config.components[component]}}for(var pluginIndex in _model.plugins.order){var pluginName=_model.plugins.order[pluginIndex];var pluginConfig=!jwplayer.utils.exists(_model.plugins.config[pluginName])?{}:_model.plugins.config[pluginName];_model.plugins.config[pluginName]=!jwplayer.utils.exists(_model.plugins.config[pluginName])?pluginConfig:jwplayer.utils.extend(_model.plugins.config[pluginName],pluginConfig);if(!jwplayer.utils.exists(_model.plugins.config[pluginName].position)){if(pluginName=="playlist"){_model.plugins.config[pluginName].position=jwplayer.html5.view.positions.NONE}else{_model.plugins.config[pluginName].position=jwplayer.html5.view.positions.OVER}}else{_model.plugins.config[pluginName].position=_model.plugins.config[pluginName].position.toString().toUpperCase()}}if(typeof _model.plugins.config.dock!="undefined"){if(typeof _model.plugins.config.dock!="object"){var position=_model.plugins.config.dock.toString().toUpperCase();_model.plugins.config.dock={position:position}}if(typeof _model.plugins.config.dock.position!="undefined"){_model.plugins.config.dock.align=_model.plugins.config.dock.position;_model.plugins.config.dock.position=jwplayer.html5.view.positions.OVER}}function _loadExternal(playlistfile){var loader=new jwplayer.html5.playlistloader();loader.addEventListener(jwplayer.api.events.JWPLAYER_PLAYLIST_LOADED,function(evt){_model.playlist=new jwplayer.html5.playlist(evt);_loadComplete(true)});loader.addEventListener(jwplayer.api.events.JWPLAYER_ERROR,function(evt){_model.playlist=new jwplayer.html5.playlist({playlist:[]});_loadComplete(false)});loader.load(playlistfile)}function _loadComplete(){if(_model.config.shuffle){_model.item=_getShuffleItem()}else{if(_model.config.item>=_model.playlist.length){_model.config.item=_model.playlist.length-1}else{if(_model.config.item<0){_model.config.item=0}}_model.item=_model.config.item}_eventDispatcher.sendEvent(jwplayer.api.events.JWPLAYER_PLAYLIST_LOADED,{playlist:_model.playlist});_eventDispatcher.sendEvent(jwplayer.api.events.JWPLAYER_PLAYLIST_ITEM,{index:_model.item})}_model.loadPlaylist=function(arg){var input;if(typeof arg=="string"){if(arg.indexOf("[")==0||arg.indexOf("{")=="0"){try{input=eval(arg)}catch(err){input=arg}}else{input=arg}}else{input=arg}var config;switch(jwplayer.utils.typeOf(input)){case"object":config=input;break;case"array":config={playlist:input};break;default:_loadExternal(input);return;break}_model.playlist=new jwplayer.html5.playlist(config);if(jwplayer.utils.extension(_model.playlist[0].file)=="xml"){_loadExternal(_model.playlist[0].file)}else{_loadComplete()}};function _getShuffleItem(){var result=null;if(_model.playlist.length>1){while(!jwplayer.utils.exists(result)){result=Math.floor(Math.random()*_model.playlist.length);if(result==_model.item){result=null}}}else{result=0}return result}function forward(evt){if(evt.type==jwplayer.api.events.JWPLAYER_MEDIA_LOADED){_container=_media.getDisplayElement()}_eventDispatcher.sendEvent(evt.type,evt)}var _mediaProviders={};_model.setActiveMediaProvider=function(playlistItem){if(playlistItem.provider=="audio"){playlistItem.provider="sound"}var provider=playlistItem.provider;var current=_media?_media.getDisplayElement():null;if(provider=="sound"||provider=="http"||provider==""){provider="video"}if(!jwplayer.utils.exists(_mediaProviders[provider])){switch(provider){case"video":_media=new jwplayer.html5.mediavideo(_model,current?current:_container);break;case"youtube":_media=new jwplayer.html5.mediayoutube(_model,current?current:_container);break}if(!jwplayer.utils.exists(_media)){return false}_media.addGlobalListener(forward);_mediaProviders[provider]=_media}else{if(_media!=_mediaProviders[provider]){if(_media){_media.stop()}_media=_mediaProviders[provider]}}return true};_model.getMedia=function(){return _media};_model.seek=function(pos){_eventDispatcher.sendEvent(jwplayer.api.events.JWPLAYER_MEDIA_SEEK,{position:_model.position,offset:pos});return _media.seek(pos)};_model.setupPlugins=function(){if(!jwplayer.utils.exists(_model.plugins)||!jwplayer.utils.exists(_model.plugins.order)||_model.plugins.order.length==0){jwplayer.utils.log("No plugins to set up");return _model}for(var i=0;i<_model.plugins.order.length;i++){try{var pluginName=_model.plugins.order[i];if(jwplayer.utils.exists(jwplayer.html5[pluginName])){if(pluginName=="playlist"){_model.plugins.object[pluginName]=new jwplayer.html5.playlistcomponent(_api,_model.plugins.config[pluginName])}else{_model.plugins.object[pluginName]=new jwplayer.html5[pluginName](_api,_model.plugins.config[pluginName])}}else{_model.plugins.order.splice(plugin,plugin+1)}if(typeof _model.plugins.object[pluginName].addGlobalListener=="function"){_model.plugins.object[pluginName].addGlobalListener(forward)}}catch(err){jwplayer.utils.log("Could not setup "+pluginName)}}};return _model}})(jwplayer);(function(a){a.html5.playlist=function(b){var d=[];if(b.playlist&&b.playlist instanceof Array&&b.playlist.length>0){for(var c in b.playlist){if(!isNaN(parseInt(c))){d.push(new a.html5.playlistitem(b.playlist[c]))}}}else{d.push(new a.html5.playlistitem(b))}return d}})(jwplayer);(function(a){var c={size:180,position:a.html5.view.positions.NONE,itemheight:60,thumbs:true,fontcolor:"#000000",overcolor:"",activecolor:"",backgroundcolor:"#f8f8f8",font:"_sans",fontsize:"",fontstyle:"",fontweight:""};var b={_sans:"Arial, Helvetica, sans-serif",_serif:"Times, Times New Roman, serif",_typewriter:"Courier New, Courier, monospace"};_utils=a.utils;_css=_utils.css;_hide=function(d){_css(d,{display:"none"})};_show=function(d){_css(d,{display:"block"})};a.html5.playlistcomponent=function(r,B){var w=r;var e=a.utils.extend({},c,w.skin.getComponentSettings("playlist"),B);if(e.position==a.html5.view.positions.NONE||typeof a.html5.view.positions[e.position]=="undefined"){return}var x;var l;var C;var d;var g;var f;var k=-1;var h={background:undefined,item:undefined,itemOver:undefined,itemImage:undefined,itemActive:undefined};this.getDisplayElement=function(){return x};this.resize=function(F,D){l=F;C=D;if(w.jwGetFullscreen()){_hide(x)}else{var E={display:"block",width:l,height:C};_css(x,E)}};this.show=function(){_show(x)};this.hide=function(){_hide(x)};function j(){x=document.createElement("div");x.id=w.id+"_jwplayer_playlistcomponent";switch(e.position){case a.html5.view.positions.RIGHT:case a.html5.view.positions.LEFT:x.style.width=e.size+"px";break;case a.html5.view.positions.TOP:case a.html5.view.positions.BOTTOM:x.style.height=e.size+"px";break}A();if(h.item){e.itemheight=h.item.height}x.style.backgroundColor="#C6C6C6";w.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED,s);w.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_ITEM,u);w.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE,m)}function p(){var D=document.createElement("ul");_css(D,{width:x.style.width,minWidth:x.style.width,height:x.style.height,backgroundColor:e.backgroundcolor,backgroundImage:h.background?"url("+h.background.src+")":"",color:e.fontcolor,listStyle:"none",margin:0,padding:0,fontFamily:b[e.font]?b[e.font]:b._sans,fontSize:(e.fontsize?e.fontsize:11)+"px",fontStyle:e.fontstyle,fontWeight:e.fontweight,overflowY:"auto"});return D}function y(D){return function(){var E=f.getElementsByClassName("item")[D];var F=e.fontcolor;var G=h.item?"url("+h.item.src+")":"";if(D==w.jwGetPlaylistIndex()){if(e.activecolor!==""){F=e.activecolor}if(h.itemActive){G="url("+h.itemActive.src+")"}}_css(E,{color:e.overcolor!==""?e.overcolor:F,backgroundImage:h.itemOver?"url("+h.itemOver.src+")":G})}}function o(D){return function(){var E=f.getElementsByClassName("item")[D];var F=e.fontcolor;var G=h.item?"url("+h.item.src+")":"";if(D==w.jwGetPlaylistIndex()){if(e.activecolor!==""){F=e.activecolor}if(h.itemActive){G="url("+h.itemActive.src+")"}}_css(E,{color:F,backgroundImage:G})}}function q(I){var P=d[I];var O=document.createElement("li");O.className="item";_css(O,{height:e.itemheight,display:"block",cursor:"pointer",backgroundImage:h.item?"url("+h.item.src+")":"",backgroundSize:"100% "+e.itemheight+"px"});O.onmouseover=y(I);O.onmouseout=o(I);var J=document.createElement("div");var F=new Image();var K=0;var L=0;var M=0;if(v()&&(P.image||P["playlist.image"]||h.itemImage)){F.className="image";if(h.itemImage){K=(e.itemheight-h.itemImage.height)/2;L=h.itemImage.width;M=h.itemImage.height}else{L=e.itemheight*4/3;M=e.itemheight}_css(J,{height:M,width:L,"float":"left",styleFloat:"left",cssFloat:"left",margin:"0 5px 0 0",background:"black",overflow:"hidden",margin:K+"px",position:"relative"});_css(F,{position:"relative"});J.appendChild(F);F.onload=function(){a.utils.stretch(a.utils.stretching.FILL,F,L,M,this.naturalWidth,this.naturalHeight)};if(P["playlist.image"]){F.src=P["playlist.image"]}else{if(P.image){F.src=P.image}else{if(h.itemImage){F.src=h.itemImage.src}}}O.appendChild(J)}var E=l-L-K*2;if(C<e.itemheight*d.length){E-=15}var D=document.createElement("div");_css(D,{position:"relative",height:"100%",overflow:"hidden"});var G=document.createElement("span");if(P.duration>0){G.className="duration";_css(G,{fontSize:(e.fontsize?e.fontsize:11)+"px",fontWeight:(e.fontweight?e.fontweight:"bold"),width:"40px",height:e.fontsize?e.fontsize+10:20,lineHeight:24,"float":"right",styleFloat:"right",cssFloat:"right"});G.innerHTML=_utils.timeFormat(P.duration);D.appendChild(G)}var N=document.createElement("span");N.className="title";_css(N,{padding:"5px 5px 0 "+(K?0:"5px"),height:e.fontsize?e.fontsize+10:20,lineHeight:e.fontsize?e.fontsize+10:20,overflow:"hidden","float":"left",styleFloat:"left",cssFloat:"left",width:((P.duration>0)?E-50:E)-10+"px",fontSize:(e.fontsize?e.fontsize:13)+"px",fontWeight:(e.fontweight?e.fontweight:"bold")});N.innerHTML=P?P.title:"";D.appendChild(N);if(P.description){var H=document.createElement("span");H.className="description";_css(H,{display:"block","float":"left",styleFloat:"left",cssFloat:"left",margin:0,paddingLeft:N.style.paddingLeft,paddingRight:N.style.paddingRight,lineHeight:(e.fontsize?e.fontsize+4:16)+"px",overflow:"hidden",position:"relative"});H.innerHTML=P.description;D.appendChild(H)}O.appendChild(D);return O}function s(E){x.innerHTML="";d=w.jwGetPlaylist();if(!d){return}items=[];f=p();for(var F=0;F<d.length;F++){var D=q(F);D.onclick=z(F);f.appendChild(D);items.push(D)}k=w.jwGetPlaylistIndex();o(k)();x.appendChild(f);if(_utils.isIOS()&&window.iScroll){f.style.height=e.itemheight*d.length+"px";var G=new iScroll(x.id)}}function z(D){return function(){w.jwPlaylistItem(D);w.jwPlay(true)}}function n(){f.scrollTop=w.jwGetPlaylistIndex()*e.itemheight}function v(){return e.thumbs.toString().toLowerCase()=="true"}function u(D){if(k>=0){o(k)();k=D.index}o(D.index)();n()}function m(){if(e.position==a.html5.view.positions.OVER){switch(w.jwGetState()){case a.api.events.state.IDLE:_show(x);break;default:_hide(x);break}}}function A(){for(var D in h){h[D]=t(D)}}function t(D){return w.skin.getSkinElement("playlist",D)}j();return this}})(jwplayer);(function(b){b.html5.playlistitem=function(d){var e={author:"",date:"",description:"",image:"",link:"",mediaid:"",tags:"",title:"",provider:"",file:"",streamer:"",duration:-1,start:0,currentLevel:-1,levels:[]};var c=b.utils.extend({},e,d);if(c.type){c.provider=c.type;delete c.type}if(c.levels.length===0){c.levels[0]=new b.html5.playlistitemlevel(c)}if(!c.provider){c.provider=a(c.levels[0])}else{c.provider=c.provider.toLowerCase()}return c};function a(e){if(b.utils.isYouTube(e.file)){return"youtube"}else{var f=b.utils.extension(e.file);var c;if(f&&b.utils.extensionmap[f]){if(f=="m3u8"){return"video"}c=b.utils.extensionmap[f].html5}else{if(e.type){c=e.type}}if(c){var d=c.split("/")[0];if(d=="audio"){return"sound"}else{if(d=="video"){return d}}}}return""}})(jwplayer);(function(a){a.html5.playlistitemlevel=function(b){var d={file:"",streamer:"",bitrate:0,width:0};for(var c in d){if(a.utils.exists(b[c])){d[c]=b[c]}}return d}})(jwplayer);(function(a){a.html5.playlistloader=function(){var c=new a.html5.eventdispatcher();a.utils.extend(this,c);this.load=function(e){a.utils.ajax(e,d,b)};function d(g){var f=[];try{var f=a.utils.parsers.rssparser.parse(g.responseXML.firstChild);c.sendEvent(a.api.events.JWPLAYER_PLAYLIST_LOADED,{playlist:new a.html5.playlist({playlist:f})})}catch(h){b("Could not parse the playlist")}}function b(e){c.sendEvent(a.api.events.JWPLAYER_ERROR,{error:e?e:"could not load playlist for whatever reason.  too bad"})}}})(jwplayer);(function(a){a.html5.skin=function(){var b={};var c=false;this.load=function(d,e){new a.html5.skinloader(d,function(f){c=true;b=f;e()},function(){new a.html5.skinloader("",function(f){c=true;b=f;e()})})};this.getSkinElement=function(d,e){if(c){try{return b[d].elements[e]}catch(f){a.utils.log("No such skin component / element: ",[d,e])}}return null};this.getComponentSettings=function(d){if(c){return b[d].settings}return null};this.getComponentLayout=function(d){if(c){return b[d].layout}return null}}})(jwplayer);(function(a){a.html5.skinloader=function(f,p,k){var o={};var c=p;var l=k;var e=true;var j;var n=f;var s=false;function m(){if(typeof n!="string"||n===""){d(a.html5.defaultSkin().xml)}else{a.utils.ajax(a.utils.getAbsolutePath(n),function(t){try{if(a.utils.exists(t.responseXML)){d(t.responseXML);return}}catch(u){h()}d(a.html5.defaultSkin().xml)},function(t){d(a.html5.defaultSkin().xml)})}}function d(y){var E=y.getElementsByTagName("component");if(E.length===0){return}for(var H=0;H<E.length;H++){var C=E[H].getAttribute("name");var B={settings:{},elements:{},layout:{}};o[C]=B;var G=E[H].getElementsByTagName("elements")[0].getElementsByTagName("element");for(var F=0;F<G.length;F++){b(G[F],C)}var z=E[H].getElementsByTagName("settings")[0];if(z&&z.childNodes.length>0){var K=z.getElementsByTagName("setting");for(var P=0;P<K.length;P++){var Q=K[P].getAttribute("name");var I=K[P].getAttribute("value");var x=/color$/.test(Q)?"color":null;o[C].settings[Q]=a.utils.typechecker(I,x)}}var L=E[H].getElementsByTagName("layout")[0];if(L&&L.childNodes.length>0){var M=L.getElementsByTagName("group");for(var w=0;w<M.length;w++){var A=M[w];o[C].layout[A.getAttribute("position")]={elements:[]};for(var O=0;O<A.attributes.length;O++){var D=A.attributes[O];o[C].layout[A.getAttribute("position")][D.name]=D.value}var N=A.getElementsByTagName("*");for(var v=0;v<N.length;v++){var t=N[v];o[C].layout[A.getAttribute("position")].elements.push({type:t.tagName});for(var u=0;u<t.attributes.length;u++){var J=t.attributes[u];o[C].layout[A.getAttribute("position")].elements[v][J.name]=J.value}if(!a.utils.exists(o[C].layout[A.getAttribute("position")].elements[v].name)){o[C].layout[A.getAttribute("position")].elements[v].name=t.tagName}}}}e=false;r()}}function r(){clearInterval(j);if(!s){j=setInterval(function(){q()},100)}}function b(y,x){var w=new Image();var t=y.getAttribute("name");var v=y.getAttribute("src");var A;if(v.indexOf("data:image/png;base64,")===0){A=v}else{var u=a.utils.getAbsolutePath(n);var z=u.substr(0,u.lastIndexOf("/"));A=[z,x,v].join("/")}o[x].elements[t]={height:0,width:0,src:"",ready:false,image:w};w.onload=function(B){g(w,t,x)};w.onerror=function(B){s=true;r();l()};w.src=A}function h(){for(var u in o){var w=o[u];for(var t in w.elements){var x=w.elements[t];var v=x.image;v.onload=null;v.onerror=null;delete x.image;delete w.elements[t]}delete o[u]}}function q(){for(var t in o){if(t!="properties"){for(var u in o[t].elements){if(!o[t].elements[u].ready){return}}}}if(e===false){clearInterval(j);c(o)}}function g(t,v,u){if(o[u]&&o[u].elements[v]){o[u].elements[v].height=t.height;o[u].elements[v].width=t.width;o[u].elements[v].src=t.src;o[u].elements[v].ready=true;r()}else{a.utils.log("Loaded an image for a missing element: "+u+"."+v)}}m()}})(jwplayer);(function(a){a.html5.api=function(c,n){var m={};var f=document.createElement("div");c.parentNode.replaceChild(f,c);f.id=c.id;m.version=a.version;m.id=f.id;var l=new a.html5.model(m,f,n);var j=new a.html5.view(m,f,l);var k=new a.html5.controller(m,f,l,j);m.skin=new a.html5.skin();m.jwPlay=function(o){if(typeof o=="undefined"){e()}else{if(o.toString().toLowerCase()=="true"){k.play()}else{k.pause()}}};m.jwPause=function(o){if(typeof o=="undefined"){e()}else{if(o.toString().toLowerCase()=="true"){k.pause()}else{k.play()}}};function e(){if(l.state==a.api.events.state.PLAYING||l.state==a.api.events.state.BUFFERING){k.pause()}else{k.play()}}m.jwStop=k.stop;m.jwSeek=k.seek;m.jwPlaylistItem=k.item;m.jwPlaylistNext=k.next;m.jwPlaylistPrev=k.prev;m.jwResize=k.resize;m.jwLoad=k.load;function h(o){return function(){return l[o]}}function d(o,q,p){return function(){var r=l.plugins.object[o];if(r&&r[q]&&typeof r[q]=="function"){r[q].apply(r,p)}}}m.jwGetItem=h("item");m.jwGetPosition=h("position");m.jwGetDuration=h("duration");m.jwGetBuffer=h("buffer");m.jwGetWidth=h("width");m.jwGetHeight=h("height");m.jwGetFullscreen=h("fullscreen");m.jwSetFullscreen=k.setFullscreen;m.jwGetVolume=h("volume");m.jwSetVolume=k.setVolume;m.jwGetMute=h("mute");m.jwSetMute=k.setMute;m.jwGetStretching=h("stretching");m.jwGetState=h("state");m.jwGetVersion=function(){return m.version};m.jwGetPlaylist=function(){return l.playlist};m.jwGetPlaylistIndex=m.jwGetItem;m.jwAddEventListener=k.addEventListener;m.jwRemoveEventListener=k.removeEventListener;m.jwSendEvent=k.sendEvent;m.jwDockSetButton=function(r,o,p,q){if(l.plugins.object.dock&&l.plugins.object.dock.setButton){l.plugins.object.dock.setButton(r,o,p,q)}};m.jwControlbarShow=d("controlbar","show");m.jwControlbarHide=d("controlbar","hide");m.jwDockShow=d("dock","show");m.jwDockHide=d("dock","hide");m.jwDisplayShow=d("display","show");m.jwDisplayHide=d("display","hide");m.jwGetLevel=function(){};m.jwGetBandwidth=function(){};m.jwGetLockState=function(){};m.jwLock=function(){};m.jwUnlock=function(){};function b(){if(l.config.playlistfile){l.addEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED,g);l.loadPlaylist(l.config.playlistfile)}else{if(typeof l.config.playlist=="string"){l.addEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED,g);l.loadPlaylist(l.config.playlist)}else{l.loadPlaylist(l.config);setTimeout(g,25)}}}function g(o){l.removeEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED,g);l.setupPlugins();j.setup();var o={id:m.id,version:m.version};k.playerReady(o)}if(l.config.chromeless&&!a.utils.isIOS()){b()}else{m.skin.load(l.config.skin,b)}return m}})(jwplayer)};
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/js/libs/lab.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,514 +0,0 @@
-/*! LAB.js (LABjs :: Loading And Blocking JavaScript)
-    v2.0.3 (c) Kyle Simpson
-    MIT License
-*/
-
-(function(global){
-	var _$LAB = global.$LAB,
-	
-		// constants for the valid keys of the options object
-		_UseLocalXHR = "UseLocalXHR",
-		_AlwaysPreserveOrder = "AlwaysPreserveOrder",
-		_AllowDuplicates = "AllowDuplicates",
-		_CacheBust = "CacheBust",
-		/*!START_DEBUG*/_Debug = "Debug",/*!END_DEBUG*/
-		_BasePath = "BasePath",
-		
-		// stateless variables used across all $LAB instances
-		root_page = /^[^?#]*\//.exec(location.href)[0],
-		root_domain = /^\w+\:\/\/\/?[^\/]+/.exec(root_page)[0],
-		append_to = document.head || document.getElementsByTagName("head"),
-		
-		// inferences... ick, but still necessary
-		opera_or_gecko = (global.opera && Object.prototype.toString.call(global.opera) == "[object Opera]") || ("MozAppearance" in document.documentElement.style),
-
-/*!START_DEBUG*/
-		// console.log() and console.error() wrappers
-		log_msg = function(){}, 
-		log_error = log_msg,
-/*!END_DEBUG*/
-		
-		// feature sniffs (yay!)
-		test_script_elem = document.createElement("script"),
-		explicit_preloading = typeof test_script_elem.preload == "boolean", // http://wiki.whatwg.org/wiki/Script_Execution_Control#Proposal_1_.28Nicholas_Zakas.29
-		real_preloading = explicit_preloading || (test_script_elem.readyState && test_script_elem.readyState == "uninitialized"), // will a script preload with `src` set before DOM append?
-		script_ordered_async = !real_preloading && test_script_elem.async === true, // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
-		
-		// XHR preloading (same-domain) and cache-preloading (remote-domain) are the fallbacks (for some browsers)
-		xhr_or_cache_preloading = !real_preloading && !script_ordered_async && !opera_or_gecko
-	;
-
-/*!START_DEBUG*/
-	// define console wrapper functions if applicable
-	if (global.console && global.console.log) {
-		if (!global.console.error) global.console.error = global.console.log;
-		log_msg = function(msg) { global.console.log(msg); };
-		log_error = function(msg,err) { global.console.error(msg,err); };
-	}
-/*!END_DEBUG*/
-
-	// test for function
-	function is_func(func) { return Object.prototype.toString.call(func) == "[object Function]"; }
-
-	// test for array
-	function is_array(arr) { return Object.prototype.toString.call(arr) == "[object Array]"; }
-
-	// make script URL absolute/canonical
-	function canonical_uri(src,base_path) {
-		var absolute_regex = /^\w+\:\/\//;
-		
-		// is `src` is protocol-relative (begins with // or ///), prepend protocol
-		if (/^\/\/\/?/.test(src)) {
-			src = location.protocol + src;
-		}
-		// is `src` page-relative? (not an absolute URL, and not a domain-relative path, beginning with /)
-		else if (!absolute_regex.test(src) && src.charAt(0) != "/") {
-			// prepend `base_path`, if any
-			src = (base_path || "") + src;
-		}
-		// make sure to return `src` as absolute
-		return absolute_regex.test(src) ? src : ((src.charAt(0) == "/" ? root_domain : root_page) + src);
-	}
-
-	// merge `source` into `target`
-	function merge_objs(source,target) {
-		for (var k in source) { if (source.hasOwnProperty(k)) {
-			target[k] = source[k]; // TODO: does this need to be recursive for our purposes?
-		}}
-		return target;
-	}
-
-	// does the chain group have any ready-to-execute scripts?
-	function check_chain_group_scripts_ready(chain_group) {
-		var any_scripts_ready = false;
-		for (var i=0; i<chain_group.scripts.length; i++) {
-			if (chain_group.scripts[i].ready && chain_group.scripts[i].exec_trigger) {
-				any_scripts_ready = true;
-				chain_group.scripts[i].exec_trigger();
-				chain_group.scripts[i].exec_trigger = null;
-			}
-		}
-		return any_scripts_ready;
-	}
-
-	// creates a script load listener
-	function create_script_load_listener(elem,registry_item,flag,onload) {
-		elem.onload = elem.onreadystatechange = function() {
-			if ((elem.readyState && elem.readyState != "complete" && elem.readyState != "loaded") || registry_item[flag]) return;
-			elem.onload = elem.onreadystatechange = null;
-			onload();
-		};
-	}
-
-	// script executed handler
-	function script_executed(registry_item) {
-		registry_item.ready = registry_item.finished = true;
-		for (var i=0; i<registry_item.finished_listeners.length; i++) {
-			registry_item.finished_listeners[i]();
-		}
-		registry_item.ready_listeners = [];
-		registry_item.finished_listeners = [];
-	}
-
-	// make the request for a scriptha
-	function request_script(chain_opts,script_obj,registry_item,onload,preload_this_script) {
-		// setTimeout() "yielding" prevents some weird race/crash conditions in older browsers
-		setTimeout(function(){
-			var script, src = script_obj.real_src, xhr;
-			
-			// don't proceed until `append_to` is ready to append to
-			if ("item" in append_to) { // check if `append_to` ref is still a live node list
-				if (!append_to[0]) { // `append_to` node not yet ready
-					// try again in a little bit -- note: will re-call the anonymous function in the outer setTimeout, not the parent `request_script()`
-					setTimeout(arguments.callee,25);
-					return;
-				}
-				// reassign from live node list ref to pure node ref -- avoids nasty IE bug where changes to DOM invalidate live node lists
-				append_to = append_to[0];
-			}
-			script = document.createElement("script");
-			if (script_obj.type) script.type = script_obj.type;
-			if (script_obj.charset) script.charset = script_obj.charset;
-			
-			// should preloading be used for this script?
-			if (preload_this_script) {
-				// real script preloading?
-				if (real_preloading) {
-					/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script preload: "+src);/*!END_DEBUG*/
-					registry_item.elem = script;
-					if (explicit_preloading) { // explicit preloading (aka, Zakas' proposal)
-						script.preload = true;
-						script.onpreload = onload;
-					}
-					else {
-						script.onreadystatechange = function(){
-							if (script.readyState == "loaded") onload();
-						};
-					}
-					script.src = src;
-					// NOTE: no append to DOM yet, appending will happen when ready to execute
-				}
-				// same-domain and XHR allowed? use XHR preloading
-				else if (preload_this_script && src.indexOf(root_domain) == 0 && chain_opts[_UseLocalXHR]) {
-					xhr = new XMLHttpRequest(); // note: IE never uses XHR (it supports true preloading), so no more need for ActiveXObject fallback for IE <= 7
-					/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script preload (xhr): "+src);/*!END_DEBUG*/
-					xhr.onreadystatechange = function() {
-						if (xhr.readyState == 4) {
-							xhr.onreadystatechange = function(){}; // fix a memory leak in IE
-							registry_item.text = xhr.responseText + "\n//@ sourceURL=" + src; // http://blog.getfirebug.com/2009/08/11/give-your-eval-a-name-with-sourceurl/
-							onload();
-						}
-					};
-					xhr.open("GET",src);
-					xhr.send();
-				}
-				// as a last resort, use cache-preloading
-				else {
-					/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script preload (cache): "+src);/*!END_DEBUG*/
-					script.type = "text/cache-script";
-					create_script_load_listener(script,registry_item,"ready",function() {
-						append_to.removeChild(script);
-						onload();
-					});
-					script.src = src;
-					append_to.insertBefore(script,append_to.firstChild);
-				}
-			}
-			// use async=false for ordered async? parallel-load-serial-execute http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
-			else if (script_ordered_async) {
-				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script load (ordered async): "+src);/*!END_DEBUG*/
-				script.async = false;
-				create_script_load_listener(script,registry_item,"finished",onload);
-				script.src = src;
-				append_to.insertBefore(script,append_to.firstChild);
-			}
-			// otherwise, just a normal script element
-			else {
-				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("start script load: "+src);/*!END_DEBUG*/
-				create_script_load_listener(script,registry_item,"finished",onload);
-				script.src = src;
-				append_to.insertBefore(script,append_to.firstChild);
-			}
-		},0);
-	}
-		
-	// create a clean instance of $LAB
-	function create_sandbox() {
-		var global_defaults = {},
-			can_use_preloading = real_preloading || xhr_or_cache_preloading,
-			queue = [],
-			registry = {},
-			instanceAPI
-		;
-		
-		// global defaults
-		global_defaults[_UseLocalXHR] = true;
-		global_defaults[_AlwaysPreserveOrder] = false;
-		global_defaults[_AllowDuplicates] = false;
-		global_defaults[_CacheBust] = false;
-		/*!START_DEBUG*/global_defaults[_Debug] = false;/*!END_DEBUG*/
-		global_defaults[_BasePath] = "";
-
-		// execute a script that has been preloaded already
-		function execute_preloaded_script(chain_opts,script_obj,registry_item) {
-			var script;
-			
-			function preload_execute_finished() {
-				if (script != null) { // make sure this only ever fires once
-					script = null;
-					script_executed(registry_item);
-				}
-			}
-			
-			if (registry[script_obj.src].finished) return;
-			if (!chain_opts[_AllowDuplicates]) registry[script_obj.src].finished = true;
-			
-			script = registry_item.elem || document.createElement("script");
-			if (script_obj.type) script.type = script_obj.type;
-			if (script_obj.charset) script.charset = script_obj.charset;
-			create_script_load_listener(script,registry_item,"finished",preload_execute_finished);
-			
-			// script elem was real-preloaded
-			if (registry_item.elem) {
-				registry_item.elem = null;
-			}
-			// script was XHR preloaded
-			else if (registry_item.text) {
-				script.onload = script.onreadystatechange = null;	// script injection doesn't fire these events
-				script.text = registry_item.text;
-			}
-			// script was cache-preloaded
-			else {
-				script.src = script_obj.real_src;
-			}
-			append_to.insertBefore(script,append_to.firstChild);
-
-			// manually fire execution callback for injected scripts, since events don't fire
-			if (registry_item.text) {
-				preload_execute_finished();
-			}
-		}
-	
-		// process the script request setup
-		function do_script(chain_opts,script_obj,chain_group,preload_this_script) {
-			var registry_item,
-				registry_items,
-				ready_cb = function(){ script_obj.ready_cb(script_obj,function(){ execute_preloaded_script(chain_opts,script_obj,registry_item); }); },
-				finished_cb = function(){ script_obj.finished_cb(script_obj,chain_group); }
-			;
-			
-			script_obj.src = canonical_uri(script_obj.src,chain_opts[_BasePath]);
-			script_obj.real_src = script_obj.src + 
-				// append cache-bust param to URL?
-				(chain_opts[_CacheBust] ? ((/\?.*$/.test(script_obj.src) ? "&_" : "?_") + ~~(Math.random()*1E9) + "=") : "")
-			;
-			
-			if (!registry[script_obj.src]) registry[script_obj.src] = {items:[],finished:false};
-			registry_items = registry[script_obj.src].items;
-
-			// allowing duplicates, or is this the first recorded load of this script?
-			if (chain_opts[_AllowDuplicates] || registry_items.length == 0) {
-				registry_item = registry_items[registry_items.length] = {
-					ready:false,
-					finished:false,
-					ready_listeners:[ready_cb],
-					finished_listeners:[finished_cb]
-				};
-
-				request_script(chain_opts,script_obj,registry_item,
-					// which callback type to pass?
-					(
-					 	(preload_this_script) ? // depends on script-preloading
-						function(){
-							registry_item.ready = true;
-							for (var i=0; i<registry_item.ready_listeners.length; i++) {
-								registry_item.ready_listeners[i]();
-							}
-							registry_item.ready_listeners = [];
-						} :
-						function(){ script_executed(registry_item); }
-					),
-					// signal if script-preloading should be used or not
-					preload_this_script
-				);
-			}
-			else {
-				registry_item = registry_items[0];
-				if (registry_item.finished) {
-					finished_cb();
-				}
-				else {
-					registry_item.finished_listeners.push(finished_cb);
-				}
-			}
-		}
-
-		// creates a closure for each separate chain spawned from this $LAB instance, to keep state cleanly separated between chains
-		function create_chain() {
-			var chainedAPI,
-				chain_opts = merge_objs(global_defaults,{}),
-				chain = [],
-				exec_cursor = 0,
-				scripts_currently_loading = false,
-				group
-			;
-			
-			// called when a script has finished preloading
-			function chain_script_ready(script_obj,exec_trigger) {
-				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("script preload finished: "+script_obj.real_src);/*!END_DEBUG*/
-				script_obj.ready = true;
-				script_obj.exec_trigger = exec_trigger;
-				advance_exec_cursor(); // will only check for 'ready' scripts to be executed
-			}
-
-			// called when a script has finished executing
-			function chain_script_executed(script_obj,chain_group) {
-				/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("script execution finished: "+script_obj.real_src);/*!END_DEBUG*/
-				script_obj.ready = script_obj.finished = true;
-				script_obj.exec_trigger = null;
-				// check if chain group is all finished
-				for (var i=0; i<chain_group.scripts.length; i++) {
-					if (!chain_group.scripts[i].finished) return;
-				}
-				// chain_group is all finished if we get this far
-				chain_group.finished = true;
-				advance_exec_cursor();
-			}
-
-			// main driver for executing each part of the chain
-			function advance_exec_cursor() {
-				while (exec_cursor < chain.length) {
-					if (is_func(chain[exec_cursor])) {
-						/*!START_DEBUG*/if (chain_opts[_Debug]) log_msg("$LAB.wait() executing: "+chain[exec_cursor]);/*!END_DEBUG*/
-						try { chain[exec_cursor++](); } catch (err) {
-							/*!START_DEBUG*/if (chain_opts[_Debug]) log_error("$LAB.wait() error caught: ",err);/*!END_DEBUG*/
-						}
-						continue;
-					}
-					else if (!chain[exec_cursor].finished) {
-						if (check_chain_group_scripts_ready(chain[exec_cursor])) continue;
-						break;
-					}
-					exec_cursor++;
-				}
-				// we've reached the end of the chain (so far)
-				if (exec_cursor == chain.length) {
-					scripts_currently_loading = false;
-					group = false;
-				}
-			}
-			
-			// setup next chain script group
-			function init_script_chain_group() {
-				if (!group || !group.scripts) {
-					chain.push(group = {scripts:[],finished:true});
-				}
-			}
-
-			// API for $LAB chains
-			chainedAPI = {
-				// start loading one or more scripts
-				script:function(){
-					for (var i=0; i<arguments.length; i++) {
-						(function(script_obj,script_list){
-							var splice_args;
-							
-							if (!is_array(script_obj)) {
-								script_list = [script_obj];
-							}
-							for (var j=0; j<script_list.length; j++) {
-								init_script_chain_group();
-								script_obj = script_list[j];
-								
-								if (is_func(script_obj)) script_obj = script_obj();
-								if (!script_obj) continue;
-								if (is_array(script_obj)) {
-									// set up an array of arguments to pass to splice()
-									splice_args = [].slice.call(script_obj); // first include the actual array elements we want to splice in
-									splice_args.unshift(j,1); // next, put the `index` and `howMany` parameters onto the beginning of the splice-arguments array
-									[].splice.apply(script_list,splice_args); // use the splice-arguments array as arguments for splice()
-									j--; // adjust `j` to account for the loop's subsequent `j++`, so that the next loop iteration uses the same `j` index value
-									continue;
-								}
-								if (typeof script_obj == "string") script_obj = {src:script_obj};
-								script_obj = merge_objs(script_obj,{
-									ready:false,
-									ready_cb:chain_script_ready,
-									finished:false,
-									finished_cb:chain_script_executed
-								});
-								group.finished = false;
-								group.scripts.push(script_obj);
-								
-								do_script(chain_opts,script_obj,group,(can_use_preloading && scripts_currently_loading));
-								scripts_currently_loading = true;
-								
-								if (chain_opts[_AlwaysPreserveOrder]) chainedAPI.wait();
-							}
-						})(arguments[i],arguments[i]);
-					}
-					return chainedAPI;
-				},
-				// force LABjs to pause in execution at this point in the chain, until the execution thus far finishes, before proceeding
-				wait:function(){
-					if (arguments.length > 0) {
-						for (var i=0; i<arguments.length; i++) {
-							chain.push(arguments[i]);
-						}
-						group = chain[chain.length-1];
-					}
-					else group = false;
-					
-					advance_exec_cursor();
-					
-					return chainedAPI;
-				}
-			};
-
-			// the first chain link API (includes `setOptions` only this first time)
-			return {
-				script:chainedAPI.script, 
-				wait:chainedAPI.wait, 
-				setOptions:function(opts){
-					merge_objs(opts,chain_opts);
-					return chainedAPI;
-				}
-			};
-		}
-
-		// API for each initial $LAB instance (before chaining starts)
-		instanceAPI = {
-			// main API functions
-			setGlobalDefaults:function(opts){
-				merge_objs(opts,global_defaults);
-				return instanceAPI;
-			},
-			setOptions:function(){
-				return create_chain().setOptions.apply(null,arguments);
-			},
-			script:function(){
-				return create_chain().script.apply(null,arguments);
-			},
-			wait:function(){
-				return create_chain().wait.apply(null,arguments);
-			},
-
-			// built-in queuing for $LAB `script()` and `wait()` calls
-			// useful for building up a chain programmatically across various script locations, and simulating
-			// execution of the chain
-			queueScript:function(){
-				queue[queue.length] = {type:"script", args:[].slice.call(arguments)};
-				return instanceAPI;
-			},
-			queueWait:function(){
-				queue[queue.length] = {type:"wait", args:[].slice.call(arguments)};
-				return instanceAPI;
-			},
-			runQueue:function(){
-				var $L = instanceAPI, len=queue.length, i=len, val;
-				for (;--i>=0;) {
-					val = queue.shift();
-					$L = $L[val.type].apply(null,val.args);
-				}
-				return $L;
-			},
-
-			// rollback `[global].$LAB` to what it was before this file was loaded, the return this current instance of $LAB
-			noConflict:function(){
-				global.$LAB = _$LAB;
-				return instanceAPI;
-			},
-
-			// create another clean instance of $LAB
-			sandbox:function(){
-				return create_sandbox();
-			}
-		};
-
-		return instanceAPI;
-	}
-
-	// create the main instance of $LAB
-	global.$LAB = create_sandbox();
-
-
-	/* The following "hack" was suggested by Andrea Giammarchi and adapted from: http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html
-	   NOTE: this hack only operates in FF and then only in versions where document.readyState is not present (FF < 3.6?).
-	   
-	   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 
-	   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 
-	   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. 
-	   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 
-	   fixed by this hack, and should therefore **not** be lazy-loaded by script loader tools such as LABjs.
-	*/ 
-	(function(addEvent,domLoaded,handler){
-		if (document.readyState == null && document[addEvent]){
-			document.readyState = "loading";
-			document[addEvent](domLoaded,handler = function(){
-				document.removeEventListener(domLoaded,handler,false);
-				document.readyState = "complete";
-			},false);
-		}
-	})("addEventListener","DOMContentLoaded");
-
-})(this);
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/js/libs/mustache.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,436 +0,0 @@
-/*
-  mustache.js — Logic-less templates in JavaScript
-
-  See http://mustache.github.com/ for more info.
-*/
-
-var Mustache = function () {
-  var _toString = Object.prototype.toString;
-
-  Array.isArray = Array.isArray || function (obj) {
-    return _toString.call(obj) == "[object Array]";
-  }
-
-  var _trim = String.prototype.trim, trim;
-
-  if (_trim) {
-    trim = function (text) {
-      return text == null ? "" : _trim.call(text);
-    }
-  } else {
-    var trimLeft, trimRight;
-
-    // IE doesn't match non-breaking spaces with \s.
-    if ((/\S/).test("\xA0")) {
-      trimLeft = /^[\s\xA0]+/;
-      trimRight = /[\s\xA0]+$/;
-    } else {
-      trimLeft = /^\s+/;
-      trimRight = /\s+$/;
-    }
-
-    trim = function (text) {
-      return text == null ? "" :
-        text.toString().replace(trimLeft, "").replace(trimRight, "");
-    }
-  }
-
-  var escapeMap = {
-    "&": "&amp;",
-    "<": "&lt;",
-    ">": "&gt;",
-    '"': '&quot;',
-    "'": '&#39;'
-  };
-
-  function escapeHTML(string) {
-    return String(string).replace(/&(?!\w+;)|[<>"']/g, function (s) {
-      return escapeMap[s] || s;
-    });
-  }
-
-  var regexCache = {};
-  var Renderer = function () {};
-
-  Renderer.prototype = {
-    otag: "{{",
-    ctag: "}}",
-    pragmas: {},
-    buffer: [],
-    pragmas_implemented: {
-      "IMPLICIT-ITERATOR": true
-    },
-    context: {},
-
-    render: function (template, context, partials, in_recursion) {
-      // reset buffer & set context
-      if (!in_recursion) {
-        this.context = context;
-        this.buffer = []; // TODO: make this non-lazy
-      }
-
-      // fail fast
-      if (!this.includes("", template)) {
-        if (in_recursion) {
-          return template;
-        } else {
-          this.send(template);
-          return;
-        }
-      }
-
-      // get the pragmas together
-      template = this.render_pragmas(template);
-
-      // render the template
-      var html = this.render_section(template, context, partials);
-
-      // render_section did not find any sections, we still need to render the tags
-      if (html === false) {
-        html = this.render_tags(template, context, partials, in_recursion);
-      }
-
-      if (in_recursion) {
-        return html;
-      } else {
-        this.sendLines(html);
-      }
-    },
-
-    /*
-      Sends parsed lines
-    */
-    send: function (line) {
-      if (line !== "") {
-        this.buffer.push(line);
-      }
-    },
-
-    sendLines: function (text) {
-      if (text) {
-        var lines = text.split("\n");
-        for (var i = 0; i < lines.length; i++) {
-          this.send(lines[i]);
-        }
-      }
-    },
-
-    /*
-      Looks for %PRAGMAS
-    */
-    render_pragmas: function (template) {
-      // no pragmas
-      if (!this.includes("%", template)) {
-        return template;
-      }
-
-      var that = this;
-      var regex = this.getCachedRegex("render_pragmas", function (otag, ctag) {
-        return new RegExp(otag + "%([\\w-]+) ?([\\w]+=[\\w]+)?" + ctag, "g");
-      });
-
-      return template.replace(regex, function (match, pragma, options) {
-        if (!that.pragmas_implemented[pragma]) {
-          throw({message:
-            "This implementation of mustache doesn't understand the '" +
-            pragma + "' pragma"});
-        }
-        that.pragmas[pragma] = {};
-        if (options) {
-          var opts = options.split("=");
-          that.pragmas[pragma][opts[0]] = opts[1];
-        }
-        return "";
-        // ignore unknown pragmas silently
-      });
-    },
-
-    /*
-      Tries to find a partial in the curent scope and render it
-    */
-    render_partial: function (name, context, partials) {
-      name = trim(name);
-      if (!partials || partials[name] === undefined) {
-        throw({message: "unknown_partial '" + name + "'"});
-      }
-      if (!context || typeof context[name] != "object") {
-        return this.render(partials[name], context, partials, true);
-      }
-      return this.render(partials[name], context[name], partials, true);
-    },
-
-    /*
-      Renders inverted (^) and normal (#) sections
-    */
-    render_section: function (template, context, partials) {
-      if (!this.includes("#", template) && !this.includes("^", template)) {
-        // did not render anything, there were no sections
-        return false;
-      }
-
-      var that = this;
-
-      var regex = this.getCachedRegex("render_section", function (otag, ctag) {
-        // This regex matches _the first_ section ({{#foo}}{{/foo}}), and captures the remainder
-        return new RegExp(
-          "^([\\s\\S]*?)" +         // all the crap at the beginning that is not {{*}} ($1)
-
-          otag +                    // {{
-          "(\\^|\\#)\\s*(.+)\\s*" + //  #foo (# == $2, foo == $3)
-          ctag +                    // }}
-
-          "\n*([\\s\\S]*?)" +       // between the tag ($2). leading newlines are dropped
-
-          otag +                    // {{
-          "\\/\\s*\\3\\s*" +        //  /foo (backreference to the opening tag).
-          ctag +                    // }}
-
-          "\\s*([\\s\\S]*)$",       // everything else in the string ($4). leading whitespace is dropped.
-
-        "g");
-      });
-
-
-      // for each {{#foo}}{{/foo}} section do...
-      return template.replace(regex, function (match, before, type, name, content, after) {
-        // before contains only tags, no sections
-        var renderedBefore = before ? that.render_tags(before, context, partials, true) : "",
-
-        // after may contain both sections and tags, so use full rendering function
-            renderedAfter = after ? that.render(after, context, partials, true) : "",
-
-        // will be computed below
-            renderedContent,
-
-            value = that.find(name, context);
-
-        if (type === "^") { // inverted section
-          if (!value || Array.isArray(value) && value.length === 0) {
-            // false or empty list, render it
-            renderedContent = that.render(content, context, partials, true);
-          } else {
-            renderedContent = "";
-          }
-        } else if (type === "#") { // normal section
-          if (Array.isArray(value)) { // Enumerable, Let's loop!
-            renderedContent = that.map(value, function (row) {
-              return that.render(content, that.create_context(row), partials, true);
-            }).join("");
-          } else if (that.is_object(value)) { // Object, Use it as subcontext!
-            renderedContent = that.render(content, that.create_context(value),
-              partials, true);
-          } else if (typeof value == "function") {
-            // higher order section
-            renderedContent = value.call(context, content, function (text) {
-              return that.render(text, context, partials, true);
-            });
-          } else if (value) { // boolean section
-            renderedContent = that.render(content, context, partials, true);
-          } else {
-            renderedContent = "";
-          }
-        }
-
-        return renderedBefore + renderedContent + renderedAfter;
-      });
-    },
-
-    /*
-      Replace {{foo}} and friends with values from our view
-    */
-    render_tags: function (template, context, partials, in_recursion) {
-      // tit for tat
-      var that = this;
-
-      var new_regex = function () {
-        return that.getCachedRegex("render_tags", function (otag, ctag) {
-          return new RegExp(otag + "(=|!|>|&|\\{|%)?([^#\\^]+?)\\1?" + ctag + "+", "g");
-        });
-      };
-
-      var regex = new_regex();
-      var tag_replace_callback = function (match, operator, name) {
-        switch(operator) {
-        case "!": // ignore comments
-          return "";
-        case "=": // set new delimiters, rebuild the replace regexp
-          that.set_delimiters(name);
-          regex = new_regex();
-          return "";
-        case ">": // render partial
-          return that.render_partial(name, context, partials);
-        case "{": // the triple mustache is unescaped
-        case "&": // & operator is an alternative unescape method
-          return that.find(name, context);
-        default: // escape the value
-          return escapeHTML(that.find(name, context));
-        }
-      };
-      var lines = template.split("\n");
-      for(var i = 0; i < lines.length; i++) {
-        lines[i] = lines[i].replace(regex, tag_replace_callback, this);
-        if (!in_recursion) {
-          this.send(lines[i]);
-        }
-      }
-
-      if (in_recursion) {
-        return lines.join("\n");
-      }
-    },
-
-    set_delimiters: function (delimiters) {
-      var dels = delimiters.split(" ");
-      this.otag = this.escape_regex(dels[0]);
-      this.ctag = this.escape_regex(dels[1]);
-    },
-
-    escape_regex: function (text) {
-      // thank you Simon Willison
-      if (!arguments.callee.sRE) {
-        var specials = [
-          '/', '.', '*', '+', '?', '|',
-          '(', ')', '[', ']', '{', '}', '\\'
-        ];
-        arguments.callee.sRE = new RegExp(
-          '(\\' + specials.join('|\\') + ')', 'g'
-        );
-      }
-      return text.replace(arguments.callee.sRE, '\\$1');
-    },
-
-    /*
-      find `name` in current `context`. That is find me a value
-      from the view object
-    */
-    find: function (name, context) {
-      name = trim(name);
-
-      // Checks whether a value is thruthy or false or 0
-      function is_kinda_truthy(bool) {
-        return bool === false || bool === 0 || bool;
-      }
-
-      var value;
-
-      // check for dot notation eg. foo.bar
-      if (name.match(/([a-z_]+)\./ig)) {
-        var childValue = this.walk_context(name, context);
-        if (is_kinda_truthy(childValue)) {
-          value = childValue;
-        }
-      } else {
-        if (is_kinda_truthy(context[name])) {
-          value = context[name];
-        } else if (is_kinda_truthy(this.context[name])) {
-          value = this.context[name];
-        }
-      }
-
-      if (typeof value == "function") {
-        return value.apply(context);
-      }
-      if (value !== undefined) {
-        return value;
-      }
-      // silently ignore unkown variables
-      return "";
-    },
-
-    walk_context: function (name, context) {
-      var path = name.split('.');
-      // if the var doesn't exist in current context, check the top level context
-      var value_context = (context[path[0]] != undefined) ? context : this.context;
-      var value = value_context[path.shift()];
-      while (value != undefined && path.length > 0) {
-        value_context = value;
-        value = value[path.shift()];
-      }
-      // if the value is a function, call it, binding the correct context
-      if (typeof value == "function") {
-        return value.apply(value_context);
-      }
-      return value;
-    },
-
-    // Utility methods
-
-    /* includes tag */
-    includes: function (needle, haystack) {
-      return haystack.indexOf(this.otag + needle) != -1;
-    },
-
-    // by @langalex, support for arrays of strings
-    create_context: function (_context) {
-      if (this.is_object(_context)) {
-        return _context;
-      } else {
-        var iterator = ".";
-        if (this.pragmas["IMPLICIT-ITERATOR"]) {
-          iterator = this.pragmas["IMPLICIT-ITERATOR"].iterator;
-        }
-        var ctx = {};
-        ctx[iterator] = _context;
-        return ctx;
-      }
-    },
-
-    is_object: function (a) {
-      return a && typeof a == "object";
-    },
-
-    /*
-      Why, why, why? Because IE. Cry, cry cry.
-    */
-    map: function (array, fn) {
-      if (typeof array.map == "function") {
-        return array.map(fn);
-      } else {
-        var r = [];
-        var l = array.length;
-        for(var i = 0; i < l; i++) {
-          r.push(fn(array[i]));
-        }
-        return r;
-      }
-    },
-
-    getCachedRegex: function (name, generator) {
-      var byOtag = regexCache[this.otag];
-      if (!byOtag) {
-        byOtag = regexCache[this.otag] = {};
-      }
-
-      var byCtag = byOtag[this.ctag];
-      if (!byCtag) {
-        byCtag = byOtag[this.ctag] = {};
-      }
-
-      var regex = byCtag[name];
-      if (!regex) {
-        regex = byCtag[name] = generator(this.otag, this.ctag);
-      }
-
-      return regex;
-    }
-  };
-
-  return({
-    name: "mustache.js",
-    version: "0.5.0-dev",
-
-    /*
-      Turns a template and view into HTML
-    */
-    to_html: function (template, view, partials, send_fun) {
-      var renderer = new Renderer();
-      if (send_fun) {
-        renderer.send = send_fun;
-      }
-      renderer.render(template, view || {}, partials);
-      if (!send_fun) {
-        return renderer.buffer.join("\n");
-      }
-    }
-  });
-}();
--- a/test/integration/allocine_dossier_independant/js/libs/popcorn.code.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-// PLUGIN: Code
-
-(function ( Popcorn ) {
-
-  /**
-   * Code Popcorn Plug-in
-   *
-   * Adds the ability to run arbitrary code (JavaScript functions) according to video timing.
-   *
-   * @param {Object} options
-   *
-   * Required parameters: start, end, template, data, and target.
-   * Optional parameter: static.
-   *
-   *   start: the time in seconds when the mustache template should be rendered
-   *          in the target div.
-   *
-   *   end: the time in seconds when the rendered mustache template should be
-   *        removed from the target div.
-   *
-   *   onStart: the function to be run when the start time is reached.
-   *
-   *   onFrame: [optional] a function to be run on each paint call
-   *            (e.g., called ~60 times per second) between the start and end times.
-   *
-   *   onEnd: [optional] a function to be run when the end time is reached.
-   *
-   * Example:
-     var p = Popcorn('#video')
-
-        // onStart function only
-        .code({
-          start: 1,
-          end: 4,
-          onStart: function( options ) {
-            // called on start
-          }
-        })
-
-        // onStart + onEnd only
-        .code({
-          start: 6,
-          end: 8,
-          onStart: function( options ) {
-            // called on start
-          },
-          onEnd: function ( options ) {
-            // called on end
-          }
-        })
-
-        // onStart, onEnd, onFrame
-        .code({
-          start: 10,
-          end: 14,
-          onStart: function( options ) {
-            // called on start
-          },
-          onFrame: function ( options ) {
-            // called on every paint frame between start and end.
-            // uses mozRequestAnimationFrame, webkitRequestAnimationFrame,
-            // or setTimeout with 16ms window.
-          },
-          onEnd: function ( options ) {
-            // called on end
-          }
-        });
-  *
-  */
-
-  Popcorn.plugin( "code" , function( options ) {
-    var running = false;
-
-    // Setup a proper frame interval function (60fps), favouring paint events.
-    var step = (function() {
-
-      var buildFrameRunner = function( runner ) {
-        return function( f, options ) {
-
-          var _f = function() {
-            running && f();
-            running && runner( _f );
-          };
-
-          _f();
-        };
-      };
-
-      // Figure out which level of browser support we have for this
-      if ( window.webkitRequestAnimationFrame ) {
-        return buildFrameRunner( window.webkitRequestAnimationFrame );
-      } else if ( window.mozRequestAnimationFrame ) {
-        return buildFrameRunner( window.mozRequestAnimationFrame );
-      } else {
-        return buildFrameRunner( function( f ) {
-          window.setTimeout( f, 16 );
-        });
-      }
-
-    })();
-
-    if ( !options.onStart || typeof options.onStart !== "function" ) {
-
-      if ( Popcorn.plugin.debug ) {
-        throw new Error( "Popcorn Code Plugin Error: onStart must be a function." );
-      }
-      options.onStart = Popcorn.nop;
-    }
-
-    if ( options.onEnd && typeof options.onEnd !== "function" ) {
-
-      if ( Popcorn.plugin.debug ) {
-        throw new Error( "Popcorn Code Plugin Error: onEnd  must be a function." );
-      }
-      options.onEnd = undefined;
-    }
-
-    if ( options.onFrame && typeof options.onFrame !== "function" ) {
-
-      if ( Popcorn.plugin.debug ) {
-        throw new Error( "Popcorn Code Plugin Error: onFrame  must be a function." );
-      }
-      options.onFrame = undefined;
-    }
-
-    return {
-      start: function( event, options ) {
-        options.onStart( options );
-
-        if ( options.onFrame ) {
-          running = true;
-          step( options.onFrame, options );
-        }
-      },
-
-      end: function( event, options ) {
-        if ( options.onFrame ) {
-          running = false;
-        }
-
-        if ( options.onEnd ) {
-          options.onEnd( options );
-        }
-      }
-    };
-  },
-  {
-    about: {
-      name: "Popcorn Code Plugin",
-      version: "0.1",
-      author: "David Humphrey (@humphd)",
-      website: "http://vocamus.net/dave"
-    },
-    options: {
-      start: {
-       elem: "input",
-       type: "text",
-       label: "In"
-      },
-      end: {
-        elem: "input",
-        type: "text",
-        label: "Out"
-      },
-      onStart: {
-        elem: "input",
-        type: "function",
-        label: "onStart"
-      },
-      onFrame: {
-        elem: "input",
-        type: "function",
-        label: "onFrame"
-      },
-      onEnd: {
-        elem: "input",
-        type: "function",
-        label: "onEnd"
-      }
-    }
-  });
-})( Popcorn );
--- a/test/integration/allocine_dossier_independant/js/libs/popcorn.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2191 +0,0 @@
-(function(global, document) {
-
-  // Popcorn.js does not support archaic browsers
-  if ( !document.addEventListener ) {
-    global.Popcorn = {
-      isSupported: false
-    };
-
-    var methods = ( "forEach extend effects error guid sizeOf isArray nop position disable enable destroy " +
-          "addTrackEvent removeTrackEvent getTrackEvents getTrackEvent getLastTrackEventId " +
-          "timeUpdate plugin removePlugin compose effect parser xhr getJSONP getScript" ).split(/\s+/);
-
-    while ( methods.length ) {
-      global.Popcorn[ methods.shift() ] = function() {};
-    }
-    return;
-  }
-
-  var
-
-  AP = Array.prototype,
-  OP = Object.prototype,
-
-  forEach = AP.forEach,
-  slice = AP.slice,
-  hasOwn = OP.hasOwnProperty,
-  toString = OP.toString,
-
-  // Copy global Popcorn (may not exist)
-  _Popcorn = global.Popcorn,
-
-  //  ID string matching
-  rIdExp  = /^(#([\w\-\_\.]+))$/,
-
-  //  Ready fn cache
-  readyStack = [],
-  readyBound = false,
-  readyFired = false,
-
-  //  Non-public internal data object
-  internal = {
-    events: {
-      hash: {},
-      apis: {}
-    }
-  },
-
-  //  Non-public `requestAnimFrame`
-  //  http://paulirish.com/2011/requestanimationframe-for-smart-animating/
-  requestAnimFrame = (function(){
-    return global.requestAnimationFrame ||
-      global.webkitRequestAnimationFrame ||
-      global.mozRequestAnimationFrame ||
-      global.oRequestAnimationFrame ||
-      global.msRequestAnimationFrame ||
-      function( callback, element ) {
-        global.setTimeout( callback, 16 );
-      };
-  }()),
-
-  refresh = function( obj ) {
-    var currentTime = obj.media.currentTime,
-      animation = obj.options.frameAnimation,
-      disabled = obj.data.disabled,
-      tracks = obj.data.trackEvents,
-      animating = tracks.animating,
-      start = tracks.startIndex,
-      registryByName = Popcorn.registryByName,
-      animIndex = 0,
-      byStart, natives, type;
-
-    start = Math.min( start + 1, tracks.byStart.length - 2 );
-
-    while ( start > 0 && tracks.byStart[ start ] ) {
-
-      byStart = tracks.byStart[ start ];
-      natives = byStart._natives;
-      type = natives && natives.type;
-
-      if ( !natives ||
-          ( !!registryByName[ type ] || !!obj[ type ] ) ) {
-
-        if ( ( byStart.start <= currentTime && byStart.end > currentTime ) &&
-                disabled.indexOf( type ) === -1 ) {
-
-          if ( !byStart._running ) {
-            byStart._running = true;
-            natives.start.call( obj, null, byStart );
-
-            // if the 'frameAnimation' option is used,
-            // push the current byStart object into the `animating` cue
-            if ( animation &&
-                ( byStart && byStart._running && byStart.natives.frame ) ) {
-
-              natives.frame.call( obj, null, byStart, currentTime );
-            }
-          }
-        } else if ( byStart._running === true ) {
-
-          byStart._running = false;
-          natives.end.call( obj, null, byStart );
-
-          if ( animation && byStart._natives.frame ) {
-            animIndex = animating.indexOf( byStart );
-            if ( animIndex >= 0 ) {
-              animating.splice( animIndex, 1 );
-            }
-          }
-        }
-      }
-
-      start--;
-    }
-  },
-
-  //  Declare constructor
-  //  Returns an instance object.
-  Popcorn = function( entity, options ) {
-    //  Return new Popcorn object
-    return new Popcorn.p.init( entity, options || null );
-  };
-
-  //  Popcorn API version, automatically inserted via build system.
-  Popcorn.version = "@VERSION";
-
-  //  Boolean flag allowing a client to determine if Popcorn can be supported
-  Popcorn.isSupported = true;
-
-  //  Instance caching
-  Popcorn.instances = [];
-
-  //  Declare a shortcut (Popcorn.p) to and a definition of
-  //  the new prototype for our Popcorn constructor
-  Popcorn.p = Popcorn.prototype = {
-
-    init: function( entity, options ) {
-
-      var matches;
-
-      //  Supports Popcorn(function () { /../ })
-      //  Originally proposed by Daniel Brooks
-
-      if ( typeof entity === "function" ) {
-
-        //  If document ready has already fired
-        if ( document.readyState === "interactive" || document.readyState === "complete" ) {
-
-          entity( document, Popcorn );
-
-          return;
-        }
-        //  Add `entity` fn to ready stack
-        readyStack.push( entity );
-
-        //  This process should happen once per page load
-        if ( !readyBound ) {
-
-          //  set readyBound flag
-          readyBound = true;
-
-          var DOMContentLoaded  = function() {
-
-            readyFired = true;
-
-            //  Remove global DOM ready listener
-            document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-
-            //  Execute all ready function in the stack
-            for ( var i = 0, readyStackLength = readyStack.length; i < readyStackLength; i++ ) {
-
-              readyStack[ i ].call( document, Popcorn );
-
-            }
-            //  GC readyStack
-            readyStack = null;
-          };
-
-          //  Register global DOM ready listener
-          document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-        }
-
-        return;
-      }
-
-      //  Check if entity is a valid string id
-      matches = rIdExp.exec( entity );
-
-      //  Get media element by id or object reference
-      this.media = matches && matches.length && matches[ 2 ] ?
-                     document.getElementById( matches[ 2 ] ) :
-                     entity;
-
-      //  Create an audio or video element property reference
-      this[ ( this.media.nodeName && this.media.nodeName.toLowerCase() ) || "video" ] = this.media;
-
-      //  Register new instance
-      Popcorn.instances.push( this );
-
-      this.options = options || {};
-
-      this.isDestroyed = false;
-
-      this.data = {
-
-        // Executed by either timeupdate event or in rAF loop
-        timeUpdate: Popcorn.nop,
-
-        // Allows disabling a plugin per instance
-        disabled: [],
-
-        // Stores DOM event queues by type
-        events: {},
-
-        // Stores Special event hooks data
-        hooks: {},
-
-        // Store track event history data
-        history: [],
-
-        // Stores ad-hoc state related data]
-        state: {
-          volume: this.media.volume
-        },
-
-        // Store track event object references by trackId
-        trackRefs: {},
-
-        // Playback track event queues
-        trackEvents: {
-          byStart: [{
-
-            start: -1,
-            end: -1
-          }],
-          byEnd: [{
-            start: -1,
-            end: -1
-          }],
-          animating: [],
-          startIndex: 0,
-          endIndex: 0,
-          previousUpdateTime: -1
-        }
-      };
-
-      //  Wrap true ready check
-      var isReady = function( that ) {
-
-        var duration, videoDurationPlus;
-
-        if ( that.media.readyState >= 2 ) {
-          //  Adding padding to the front and end of the arrays
-          //  this is so we do not fall off either end
-
-          duration = that.media.duration;
-          //  Check for no duration info (NaN)
-          videoDurationPlus = duration != duration ? Number.MAX_VALUE : duration + 1;
-
-          Popcorn.addTrackEvent( that, {
-            start: videoDurationPlus,
-            end: videoDurationPlus
-          });
-
-          if ( that.options.frameAnimation ) {
-            //  if Popcorn is created with frameAnimation option set to true,
-            //  requestAnimFrame is used instead of "timeupdate" media event.
-            //  This is for greater frame time accuracy, theoretically up to
-            //  60 frames per second as opposed to ~4 ( ~every 15-250ms)
-            that.data.timeUpdate = function () {
-
-              Popcorn.timeUpdate( that, {} );
-
-              that.trigger( "timeupdate" );
-
-              !that.isDestroyed && requestAnimFrame( that.data.timeUpdate );
-            };
-
-            !that.isDestroyed && requestAnimFrame( that.data.timeUpdate );
-
-          } else {
-
-            that.data.timeUpdate = function( event ) {
-              Popcorn.timeUpdate( that, event );
-            };
-
-            if ( !that.isDestroyed ) {
-              that.media.addEventListener( "timeupdate", that.data.timeUpdate, false );
-            }
-          }
-        } else {
-          global.setTimeout(function() {
-            isReady( that );
-          }, 1 );
-        }
-      };
-
-      isReady( this );
-
-      return this;
-    }
-  };
-
-  //  Extend constructor prototype to instance prototype
-  //  Allows chaining methods to instances
-  Popcorn.p.init.prototype = Popcorn.p;
-
-  Popcorn.forEach = function( obj, fn, context ) {
-
-    if ( !obj || !fn ) {
-      return {};
-    }
-
-    context = context || this;
-
-    var key, len;
-
-    // Use native whenever possible
-    if ( forEach && obj.forEach === forEach ) {
-      return obj.forEach( fn, context );
-    }
-
-    if ( toString.call( obj ) === "[object NodeList]" ) {
-      for ( key = 0, len = obj.length; key < len; key++ ) {
-        fn.call( context, obj[ key ], key, obj );
-      }
-      return obj;
-    }
-
-    for ( key in obj ) {
-      if ( hasOwn.call( obj, key ) ) {
-        fn.call( context, obj[ key ], key, obj );
-      }
-    }
-    return obj;
-  };
-
-  Popcorn.extend = function( obj ) {
-    var dest = obj, src = slice.call( arguments, 1 );
-
-    Popcorn.forEach( src, function( copy ) {
-      for ( var prop in copy ) {
-        dest[ prop ] = copy[ prop ];
-      }
-    });
-
-    return dest;
-  };
-
-
-  // A Few reusable utils, memoized onto Popcorn
-  Popcorn.extend( Popcorn, {
-    noConflict: function( deep ) {
-
-      if ( deep ) {
-        global.Popcorn = _Popcorn;
-      }
-
-      return Popcorn;
-    },
-    error: function( msg ) {
-      throw new Error( msg );
-    },
-    guid: function( prefix ) {
-      Popcorn.guid.counter++;
-      return  ( prefix ? prefix : "" ) + ( +new Date() + Popcorn.guid.counter );
-    },
-    sizeOf: function( obj ) {
-      var size = 0;
-
-      for ( var prop in obj ) {
-        size++;
-      }
-
-      return size;
-    },
-    isArray: Array.isArray || function( array ) {
-      return toString.call( array ) === "[object Array]";
-    },
-
-    nop: function() {},
-
-    position: function( elem ) {
-
-      var clientRect = elem.getBoundingClientRect(),
-          bounds = {},
-          doc = elem.ownerDocument,
-          docElem = document.documentElement,
-          body = document.body,
-          clientTop, clientLeft, scrollTop, scrollLeft, top, left;
-
-      //  Determine correct clientTop/Left
-      clientTop = docElem.clientTop || body.clientTop || 0;
-      clientLeft = docElem.clientLeft || body.clientLeft || 0;
-
-      //  Determine correct scrollTop/Left
-      scrollTop = ( global.pageYOffset && docElem.scrollTop || body.scrollTop );
-      scrollLeft = ( global.pageXOffset && docElem.scrollLeft || body.scrollLeft );
-
-      //  Temp top/left
-      top = Math.ceil( clientRect.top + scrollTop - clientTop );
-      left = Math.ceil( clientRect.left + scrollLeft - clientLeft );
-
-      for ( var p in clientRect ) {
-        bounds[ p ] = Math.round( clientRect[ p ] );
-      }
-
-      return Popcorn.extend({}, bounds, { top: top, left: left });
-    },
-
-    disable: function( instance, plugin ) {
-
-      var disabled = instance.data.disabled;
-
-      if ( disabled.indexOf( plugin ) === -1 ) {
-        disabled.push( plugin );
-      }
-
-      refresh( instance );
-
-      return instance;
-    },
-    enable: function( instance, plugin ) {
-
-      var disabled = instance.data.disabled,
-          index = disabled.indexOf( plugin );
-
-      if ( index > -1 ) {
-        disabled.splice( index, 1 );
-      }
-
-      refresh( instance );
-
-      return instance;
-    },
-    destroy: function( instance ) {
-      var events = instance.data.events,
-          singleEvent, item, fn;
-
-      //  Iterate through all events and remove them
-      for ( item in events ) {
-        singleEvent = events[ item ];
-        for ( fn in singleEvent ) {
-          delete singleEvent[ fn ];
-        }
-        events[ item ] = null;
-      }
-
-      if ( !instance.isDestroyed ) {
-        instance.data.timeUpdate && instance.media.removeEventListener( "timeupdate", instance.data.timeUpdate, false );
-        instance.isDestroyed = true;
-      }
-    }
-  });
-
-  //  Memoized GUID Counter
-  Popcorn.guid.counter = 1;
-
-  //  Factory to implement getters, setters and controllers
-  //  as Popcorn instance methods. The IIFE will create and return
-  //  an object with defined methods
-  Popcorn.extend(Popcorn.p, (function() {
-
-      var methods = "load play pause currentTime playbackRate volume duration preload playbackRate " +
-                    "autoplay loop controls muted buffered readyState seeking paused played seekable ended",
-          ret = {};
-
-
-      //  Build methods, store in object that is returned and passed to extend
-      Popcorn.forEach( methods.split( /\s+/g ), function( name ) {
-
-        ret[ name ] = function( arg ) {
-
-          if ( typeof this.media[ name ] === "function" ) {
-
-            // Support for shorthanded play(n)/pause(n) jump to currentTime
-            // If arg is not null or undefined and called by one of the
-            // allowed shorthandable methods, then set the currentTime
-            // Supports time as seconds or SMPTE
-            if ( arg != null && /play|pause/.test( name ) ) {
-              this.media.currentTime = Popcorn.util.toSeconds( arg );
-            }
-
-            this.media[ name ]();
-
-            return this;
-          }
-
-
-          if ( arg != null ) {
-
-            this.media[ name ] = arg;
-
-            return this;
-          }
-
-          return this.media[ name ];
-        };
-      });
-
-      return ret;
-
-    })()
-  );
-
-  Popcorn.forEach( "enable disable".split(" "), function( method ) {
-    Popcorn.p[ method ] = function( plugin ) {
-      return Popcorn[ method ]( this, plugin );
-    };
-  });
-
-  Popcorn.extend(Popcorn.p, {
-
-    //  Rounded currentTime
-    roundTime: function() {
-      return -~this.media.currentTime;
-    },
-
-    //  Attach an event to a single point in time
-    exec: function( time, fn ) {
-
-      //  Creating a one second track event with an empty end
-      Popcorn.addTrackEvent( this, {
-        start: time,
-        end: time + 1,
-        _running: false,
-        _natives: {
-          start: fn || Popcorn.nop,
-          end: Popcorn.nop,
-          type: "exec"
-        }
-      });
-
-      return this;
-    },
-
-    // Mute the calling media, optionally toggle
-    mute: function( toggle ) {
-
-      var event = toggle == null || toggle === true ? "muted" : "unmuted";
-
-      // If `toggle` is explicitly `false`,
-      // unmute the media and restore the volume level
-      if ( event === "unmuted" ) {
-        this.media.muted = false;
-        this.media.volume = this.data.state.volume;
-      }
-
-      // If `toggle` is either null or undefined,
-      // save the current volume and mute the media element
-      if ( event === "muted" ) {
-        this.data.state.volume = this.media.volume;
-        this.media.muted = true;
-      }
-
-      // Trigger either muted|unmuted event
-      this.trigger( event );
-
-      return this;
-    },
-
-    // Convenience method, unmute the calling media
-    unmute: function( toggle ) {
-
-      return this.mute( toggle == null ? false : !toggle );
-    },
-
-    // Get the client bounding box of an instance element
-    position: function() {
-      return Popcorn.position( this.media );
-    },
-
-    // Toggle a plugin's playback behaviour (on or off) per instance
-    toggle: function( plugin ) {
-      return Popcorn[ this.data.disabled.indexOf( plugin ) > -1 ? "enable" : "disable" ]( this, plugin );
-    },
-
-    // Set default values for plugin options objects per instance
-    defaults: function( plugin, defaults ) {
-
-      // If an array of default configurations is provided,
-      // iterate and apply each to this instance
-      if ( Popcorn.isArray( plugin ) ) {
-
-        Popcorn.forEach( plugin, function( obj ) {
-          for ( var name in obj ) {
-            this.defaults( name, obj[ name ] );
-          }
-        }, this );
-
-        return this;
-      }
-
-      if ( !this.options.defaults ) {
-        this.options.defaults = {};
-      }
-
-      if ( !this.options.defaults[ plugin ] ) {
-        this.options.defaults[ plugin ] = {};
-      }
-
-      Popcorn.extend( this.options.defaults[ plugin ], defaults );
-
-      return this;
-    }
-  });
-
-  Popcorn.Events  = {
-    UIEvents: "blur focus focusin focusout load resize scroll unload",
-    MouseEvents: "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave click dblclick",
-    Events: "loadstart progress suspend emptied stalled play pause " +
-            "loadedmetadata loadeddata waiting playing canplay canplaythrough " +
-            "seeking seeked timeupdate ended ratechange durationchange volumechange"
-  };
-
-  Popcorn.Events.Natives = Popcorn.Events.UIEvents + " " +
-                           Popcorn.Events.MouseEvents + " " +
-                           Popcorn.Events.Events;
-
-  internal.events.apiTypes = [ "UIEvents", "MouseEvents", "Events" ];
-
-  // Privately compile events table at load time
-  (function( events, data ) {
-
-    var apis = internal.events.apiTypes,
-    eventsList = events.Natives.split( /\s+/g ),
-    idx = 0, len = eventsList.length, prop;
-
-    for( ; idx < len; idx++ ) {
-      data.hash[ eventsList[idx] ] = true;
-    }
-
-    apis.forEach(function( val, idx ) {
-
-      data.apis[ val ] = {};
-
-      var apiEvents = events[ val ].split( /\s+/g ),
-      len = apiEvents.length,
-      k = 0;
-
-      for ( ; k < len; k++ ) {
-        data.apis[ val ][ apiEvents[ k ] ] = true;
-      }
-    });
-  })( Popcorn.Events, internal.events );
-
-  Popcorn.events = {
-
-    isNative: function( type ) {
-      return !!internal.events.hash[ type ];
-    },
-    getInterface: function( type ) {
-
-      if ( !Popcorn.events.isNative( type ) ) {
-        return false;
-      }
-
-      var eventApi = internal.events,
-        apis = eventApi.apiTypes,
-        apihash = eventApi.apis,
-        idx = 0, len = apis.length, api, tmp;
-
-      for ( ; idx < len; idx++ ) {
-        tmp = apis[ idx ];
-
-        if ( apihash[ tmp ][ type ] ) {
-          api = tmp;
-          break;
-        }
-      }
-      return api;
-    },
-    //  Compile all native events to single array
-    all: Popcorn.Events.Natives.split( /\s+/g ),
-    //  Defines all Event handling static functions
-    fn: {
-      trigger: function( type, data ) {
-
-        var eventInterface, evt;
-        //  setup checks for custom event system
-        if ( this.data.events[ type ] && Popcorn.sizeOf( this.data.events[ type ] ) ) {
-
-          eventInterface  = Popcorn.events.getInterface( type );
-
-          if ( eventInterface ) {
-
-            evt = document.createEvent( eventInterface );
-            evt.initEvent( type, true, true, global, 1 );
-
-            this.media.dispatchEvent( evt );
-
-            return this;
-          }
-
-          //  Custom events
-          Popcorn.forEach( this.data.events[ type ], function( obj, key ) {
-
-            obj.call( this, data );
-
-          }, this );
-
-        }
-
-        return this;
-      },
-      listen: function( type, fn ) {
-
-        var self = this,
-            hasEvents = true,
-            eventHook = Popcorn.events.hooks[ type ],
-            origType = type,
-            tmp;
-
-        if ( !this.data.events[ type ] ) {
-          this.data.events[ type ] = {};
-          hasEvents = false;
-        }
-
-        // Check and setup event hooks
-        if ( eventHook ) {
-
-          // Execute hook add method if defined
-          if ( eventHook.add ) {
-            eventHook.add.call( this, {}, fn );
-          }
-
-          // Reassign event type to our piggyback event type if defined
-          if ( eventHook.bind ) {
-            type = eventHook.bind;
-          }
-
-          // Reassign handler if defined
-          if ( eventHook.handler ) {
-            tmp = fn;
-
-            fn = function wrapper( event ) {
-              eventHook.handler.call( self, event, tmp );
-            };
-          }
-
-          // assume the piggy back event is registered
-          hasEvents = true;
-
-          // Setup event registry entry
-          if ( !this.data.events[ type ] ) {
-            this.data.events[ type ] = {};
-            // Toggle if the previous assumption was untrue
-            hasEvents = false;
-          }
-        }
-
-        //  Register event and handler
-        this.data.events[ type ][ fn.name || ( fn.toString() + Popcorn.guid() ) ] = fn;
-
-        // only attach one event of any type
-        if ( !hasEvents && Popcorn.events.all.indexOf( type ) > -1 ) {
-
-          this.media.addEventListener( type, function( event ) {
-
-            Popcorn.forEach( self.data.events[ type ], function( obj, key ) {
-              if ( typeof obj === "function" ) {
-                obj.call( self, event );
-              }
-            });
-
-          }, false);
-        }
-        return this;
-      },
-      unlisten: function( type, fn ) {
-
-        if ( this.data.events[ type ] && this.data.events[ type ][ fn ] ) {
-
-          delete this.data.events[ type ][ fn ];
-
-          return this;
-        }
-
-        this.data.events[ type ] = null;
-
-        return this;
-      }
-    },
-    hooks: {
-      canplayall: {
-        bind: "canplaythrough",
-        add: function( event, callback ) {
-
-          var state = false;
-
-          if ( this.media.readyState ) {
-
-            callback.call( this, event );
-
-            state = true;
-          }
-
-          this.data.hooks.canplayall = {
-            fired: state
-          };
-        },
-        // declare special handling instructions
-        handler: function canplayall( event, callback ) {
-
-          if ( !this.data.hooks.canplayall.fired ) {
-            // trigger original user callback once
-            callback.call( this, event );
-
-            this.data.hooks.canplayall.fired = true;
-          }
-        }
-      }
-    }
-  };
-
-  //  Extend Popcorn.events.fns (listen, unlisten, trigger) to all Popcorn instances
-  Popcorn.forEach( [ "trigger", "listen", "unlisten" ], function( key ) {
-    Popcorn.p[ key ] = Popcorn.events.fn[ key ];
-  });
-
-  // Internal Only - Adds track events to the instance object
-  Popcorn.addTrackEvent = function( obj, track ) {
-
-    // Determine if this track has default options set for it
-    // If so, apply them to the track object
-    if ( track && track._natives && track._natives.type &&
-        ( obj.options.defaults && obj.options.defaults[ track._natives.type ] ) ) {
-
-      track = Popcorn.extend( {}, obj.options.defaults[ track._natives.type ], track );
-    }
-
-    if ( track._natives ) {
-      //  Supports user defined track event id
-      track._id = !track.id ? Popcorn.guid( track._natives.type ) : track.id;
-
-      //  Push track event ids into the history
-      obj.data.history.push( track._id );
-    }
-
-    track.start = Popcorn.util.toSeconds( track.start, obj.options.framerate );
-    track.end   = Popcorn.util.toSeconds( track.end, obj.options.framerate );
-
-    //  Store this definition in an array sorted by times
-    var byStart = obj.data.trackEvents.byStart,
-        byEnd = obj.data.trackEvents.byEnd,
-        startIndex, endIndex,
-        currentTime;
-
-    for ( startIndex = byStart.length - 1; startIndex >= 0; startIndex-- ) {
-
-      if ( track.start >= byStart[ startIndex ].start ) {
-        byStart.splice( startIndex + 1, 0, track );
-        break;
-      }
-    }
-
-    for ( endIndex = byEnd.length - 1; endIndex >= 0; endIndex-- ) {
-
-      if ( track.end > byEnd[ endIndex ].end ) {
-        byEnd.splice( endIndex + 1, 0, track );
-        break;
-      }
-    }
-
-    // Display track event immediately if it's enabled and current
-    if ( track._natives &&
-        ( !!Popcorn.registryByName[ track._natives.type ] || !!obj[ track._natives.type ] ) ) {
-
-      currentTime = obj.media.currentTime;
-      if ( track.end > currentTime &&
-        track.start <= currentTime &&
-        obj.data.disabled.indexOf( track._natives.type ) === -1 ) {
-
-        track._running = true;
-        track._natives.start.call( obj, null, track );
-
-        if ( obj.options.frameAnimation &&
-          track._natives.frame ) {
-
-          obj.data.trackEvents.animating.push( track );
-          track._natives.frame.call( obj, null, track, currentTime );
-        }
-      }
-    }
-
-    // update startIndex and endIndex
-    if ( startIndex <= obj.data.trackEvents.startIndex &&
-      track.start <= obj.data.trackEvents.previousUpdateTime ) {
-
-      obj.data.trackEvents.startIndex++;
-    }
-
-    if ( endIndex <= obj.data.trackEvents.endIndex &&
-      track.end < obj.data.trackEvents.previousUpdateTime ) {
-
-      obj.data.trackEvents.endIndex++;
-    }
-
-    this.timeUpdate( obj, null, true );
-
-    // Store references to user added trackevents in ref table
-    if ( track._id ) {
-      Popcorn.addTrackEvent.ref( obj, track );
-    }
-  };
-
-  // Internal Only - Adds track event references to the instance object's trackRefs hash table
-  Popcorn.addTrackEvent.ref = function( obj, track ) {
-    obj.data.trackRefs[ track._id ] = track;
-
-    return obj;
-  };
-
-  Popcorn.removeTrackEvent  = function( obj, trackId ) {
-
-    var historyLen = obj.data.history.length,
-        indexWasAt = 0,
-        byStart = [],
-        byEnd = [],
-        animating = [],
-        history = [];
-
-    Popcorn.forEach( obj.data.trackEvents.byStart, function( o, i, context ) {
-      // Preserve the original start/end trackEvents
-      if ( !o._id ) {
-        byStart.push( obj.data.trackEvents.byStart[i] );
-        byEnd.push( obj.data.trackEvents.byEnd[i] );
-      }
-
-      // Filter for user track events (vs system track events)
-      if ( o._id ) {
-
-        // Filter for the trackevent to remove
-        if ( o._id !== trackId ) {
-          byStart.push( obj.data.trackEvents.byStart[i] );
-          byEnd.push( obj.data.trackEvents.byEnd[i] );
-        }
-
-        //  Capture the position of the track being removed.
-        if ( o._id === trackId ) {
-          indexWasAt = i;
-          o._natives._teardown && o._natives._teardown.call( obj, o );
-        }
-      }
-
-    });
-
-    if ( obj.data.trackEvents.animating.length ) {
-      Popcorn.forEach( obj.data.trackEvents.animating, function( o, i, context ) {
-        // Preserve the original start/end trackEvents
-        if ( !o._id ) {
-          animating.push( obj.data.trackEvents.animating[i] );
-        }
-
-        // Filter for user track events (vs system track events)
-        if ( o._id ) {
-          // Filter for the trackevent to remove
-          if ( o._id !== trackId ) {
-            animating.push( obj.data.trackEvents.animating[i] );
-          }
-        }
-      });
-    }
-
-    //  Update
-    if ( indexWasAt <= obj.data.trackEvents.startIndex ) {
-      obj.data.trackEvents.startIndex--;
-    }
-
-    if ( indexWasAt <= obj.data.trackEvents.endIndex ) {
-      obj.data.trackEvents.endIndex--;
-    }
-
-    obj.data.trackEvents.byStart = byStart;
-    obj.data.trackEvents.byEnd = byEnd;
-    obj.data.trackEvents.animating = animating;
-
-    for ( var i = 0; i < historyLen; i++ ) {
-      if ( obj.data.history[ i ] !== trackId ) {
-        history.push( obj.data.history[ i ] );
-      }
-    }
-
-    // Update ordered history array
-    obj.data.history = history;
-
-    // Update track event references
-    Popcorn.removeTrackEvent.ref( obj, trackId );
-  };
-
-  // Internal Only - Removes track event references from instance object's trackRefs hash table
-  Popcorn.removeTrackEvent.ref = function( obj, trackId ) {
-    delete obj.data.trackRefs[ trackId ];
-
-    return obj;
-  };
-
-  // Return an array of track events bound to this instance object
-  Popcorn.getTrackEvents = function( obj ) {
-
-    var trackevents = [],
-      refs = obj.data.trackEvents.byStart,
-      length = refs.length,
-      idx = 0,
-      ref;
-
-    for ( ; idx < length; idx++ ) {
-      ref = refs[ idx ];
-      // Return only user attributed track event references
-      if ( ref._id ) {
-        trackevents.push( ref );
-      }
-    }
-
-    return trackevents;
-  };
-
-  // Internal Only - Returns an instance object's trackRefs hash table
-  Popcorn.getTrackEvents.ref = function( obj ) {
-    return obj.data.trackRefs;
-  };
-
-  // Return a single track event bound to this instance object
-  Popcorn.getTrackEvent = function( obj, trackId ) {
-    return obj.data.trackRefs[ trackId ];
-  };
-
-  // Internal Only - Returns an instance object's track reference by track id
-  Popcorn.getTrackEvent.ref = function( obj, trackId ) {
-    return obj.data.trackRefs[ trackId ];
-  };
-
-  Popcorn.getLastTrackEventId = function( obj ) {
-    return obj.data.history[ obj.data.history.length - 1 ];
-  };
-
-  Popcorn.timeUpdate = function( obj, event ) {
-
-    var currentTime = obj.media.currentTime,
-        previousTime = obj.data.trackEvents.previousUpdateTime,
-        tracks = obj.data.trackEvents,
-        animating = tracks.animating,
-        end = tracks.endIndex,
-        start = tracks.startIndex,
-        animIndex = 0,
-
-        registryByName = Popcorn.registryByName,
-
-        byEnd, byStart, byAnimate, natives, type;
-
-    //  Playbar advancing
-    if ( previousTime <= currentTime ) {
-
-      while ( tracks.byEnd[ end ] && tracks.byEnd[ end ].end <= currentTime ) {
-
-        byEnd = tracks.byEnd[ end ];
-        natives = byEnd._natives;
-        type = natives && natives.type;
-
-        //  If plugin does not exist on this instance, remove it
-        if ( !natives ||
-            ( !!registryByName[ type ] ||
-              !!obj[ type ] ) ) {
-
-          if ( byEnd._running === true ) {
-            byEnd._running = false;
-            natives.end.call( obj, event, byEnd );
-          }
-
-          end++;
-        } else {
-          // remove track event
-          Popcorn.removeTrackEvent( obj, byEnd._id );
-          return;
-        }
-      }
-
-      while ( tracks.byStart[ start ] && tracks.byStart[ start ].start <= currentTime ) {
-
-        byStart = tracks.byStart[ start ];
-        natives = byStart._natives;
-        type = natives && natives.type;
-
-        //  If plugin does not exist on this instance, remove it
-        if ( !natives ||
-            ( !!registryByName[ type ] ||
-              !!obj[ type ] ) ) {
-
-          if ( byStart.end > currentTime &&
-                byStart._running === false &&
-                  obj.data.disabled.indexOf( type ) === -1 ) {
-
-            byStart._running = true;
-            natives.start.call( obj, event, byStart );
-
-            // If the `frameAnimation` option is used,
-            // push the current byStart object into the `animating` cue
-            if ( obj.options.frameAnimation &&
-                ( byStart && byStart._running && byStart._natives.frame ) ) {
-
-              animating.push( byStart );
-            }
-          }
-          start++;
-        } else {
-          // remove track event
-          Popcorn.removeTrackEvent( obj, byStart._id );
-          return;
-        }
-      }
-
-      // If the `frameAnimation` option is used, iterate the animating track
-      // and execute the `frame` callback
-      if ( obj.options.frameAnimation ) {
-        while ( animIndex < animating.length ) {
-
-          byAnimate = animating[ animIndex ];
-
-          if ( !byAnimate._running ) {
-            animating.splice( animIndex, 1 );
-          } else {
-            byAnimate._natives.frame.call( obj, event, byAnimate, currentTime );
-            animIndex++;
-          }
-        }
-      }
-
-    // Playbar receding
-    } else if ( previousTime > currentTime ) {
-
-      while ( tracks.byStart[ start ] && tracks.byStart[ start ].start > currentTime ) {
-
-        byStart = tracks.byStart[ start ];
-        natives = byStart._natives;
-        type = natives && natives.type;
-
-        // if plugin does not exist on this instance, remove it
-        if ( !natives ||
-            ( !!registryByName[ type ] ||
-              !!obj[ type ] ) ) {
-
-          if ( byStart._running === true ) {
-            byStart._running = false;
-            natives.end.call( obj, event, byStart );
-          }
-          start--;
-        } else {
-          // remove track event
-          Popcorn.removeTrackEvent( obj, byStart._id );
-          return;
-        }
-      }
-
-      while ( tracks.byEnd[ end ] && tracks.byEnd[ end ].end > currentTime ) {
-
-        byEnd = tracks.byEnd[ end ];
-        natives = byEnd._natives;
-        type = natives && natives.type;
-
-        // if plugin does not exist on this instance, remove it
-        if ( !natives ||
-            ( !!registryByName[ type ] ||
-              !!obj[ type ] ) ) {
-
-          if ( byEnd.start <= currentTime &&
-                byEnd._running === false  &&
-                  obj.data.disabled.indexOf( type ) === -1 ) {
-
-            byEnd._running = true;
-            natives.start.call( obj, event, byEnd );
-
-            // If the `frameAnimation` option is used,
-            // push the current byEnd object into the `animating` cue
-            if ( obj.options.frameAnimation &&
-                  ( byEnd && byEnd._running && byEnd._natives.frame ) ) {
-
-              animating.push( byEnd );
-            }
-          }
-          end--;
-        } else {
-          // remove track event
-          Popcorn.removeTrackEvent( obj, byEnd._id );
-          return;
-        }
-      }
-
-      // If the `frameAnimation` option is used, iterate the animating track
-      // and execute the `frame` callback
-      if ( obj.options.frameAnimation ) {
-        while ( animIndex < animating.length ) {
-
-          byAnimate = animating[ animIndex ];
-
-          if ( !byAnimate._running ) {
-            animating.splice( animIndex, 1 );
-          } else {
-            byAnimate._natives.frame.call( obj, event, byAnimate, currentTime );
-            animIndex++;
-          }
-        }
-      }
-    // time bar is not moving ( video is paused )
-    }
-
-    tracks.endIndex = end;
-    tracks.startIndex = start;
-    tracks.previousUpdateTime = currentTime;
-  };
-
-  //  Map and Extend TrackEvent functions to all Popcorn instances
-  Popcorn.extend( Popcorn.p, {
-
-    getTrackEvents: function() {
-      return Popcorn.getTrackEvents.call( null, this );
-    },
-
-    getTrackEvent: function( id ) {
-      return Popcorn.getTrackEvent.call( null, this, id );
-    },
-
-    getLastTrackEventId: function() {
-      return Popcorn.getLastTrackEventId.call( null, this );
-    },
-
-    removeTrackEvent: function( id ) {
-
-      Popcorn.removeTrackEvent.call( null, this, id );
-      return this;
-    },
-
-    removePlugin: function( name ) {
-      Popcorn.removePlugin.call( null, this, name );
-      return this;
-    },
-
-    timeUpdate: function( event ) {
-      Popcorn.timeUpdate.call( null, this, event );
-      return this;
-    },
-
-    destroy: function() {
-      Popcorn.destroy.call( null, this );
-      return this;
-    }
-  });
-
-  //  Plugin manifests
-  Popcorn.manifest = {};
-  //  Plugins are registered
-  Popcorn.registry = [];
-  Popcorn.registryByName = {};
-  //  An interface for extending Popcorn
-  //  with plugin functionality
-  Popcorn.plugin = function( name, definition, manifest ) {
-
-    if ( Popcorn.protect.natives.indexOf( name.toLowerCase() ) >= 0 ) {
-      Popcorn.error( "'" + name + "' is a protected function name" );
-      return;
-    }
-
-    //  Provides some sugar, but ultimately extends
-    //  the definition into Popcorn.p
-    var reserved = [ "start", "end" ],
-        plugin = {},
-        setup,
-        isfn = typeof definition === "function",
-        methods = [ "_setup", "_teardown", "start", "end", "frame" ];
-
-    // combines calls of two function calls into one
-    var combineFn = function( first, second ) {
-
-      first = first || Popcorn.nop;
-      second = second || Popcorn.nop;
-
-      return function() {
-        first.apply( this, arguments );
-        second.apply( this, arguments );
-      };
-    };
-
-    //  If `manifest` arg is undefined, check for manifest within the `definition` object
-    //  If no `definition.manifest`, an empty object is a sufficient fallback
-    Popcorn.manifest[ name ] = manifest = manifest || definition.manifest || {};
-
-    // apply safe, and empty default functions
-    methods.forEach(function( method ) {
-      definition[ method ] = safeTry( definition[ method ] || Popcorn.nop, name );
-    });
-
-    var pluginFn = function( setup, options ) {
-
-      if ( !options ) {
-        return this;
-      }
-
-      //  Storing the plugin natives
-      var natives = options._natives = {},
-          compose = "",
-          defaults, originalOpts, manifestOpts, mergedSetupOpts;
-
-      Popcorn.extend( natives, setup );
-
-      options._natives.type = name;
-      options._running = false;
-
-      natives.start = natives.start || natives[ "in" ];
-      natives.end = natives.end || natives[ "out" ];
-
-      // extend teardown to always call end if running
-      natives._teardown = combineFn(function() {
-
-        var args = slice.call( arguments );
-
-        // end function signature is not the same as teardown,
-        // put null on the front of arguments for the event parameter
-        args.unshift( null );
-
-        // only call end if event is running
-        args[ 1 ]._running && natives.end.apply( this, args );
-      }, natives._teardown );
-
-      // Check for previously set default options
-      defaults = this.options.defaults && this.options.defaults[ options._natives && options._natives.type ];
-
-      // default to an empty string if no effect exists
-      // split string into an array of effects
-      options.compose = options.compose && options.compose.split( " " ) || [];
-      options.effect = options.effect && options.effect.split( " " ) || [];
-
-      // join the two arrays together
-      options.compose = options.compose.concat( options.effect );
-
-      options.compose.forEach(function( composeOption ) {
-
-        // if the requested compose is garbage, throw it away
-        compose = Popcorn.compositions[ composeOption ] || {};
-
-        // extends previous functions with compose function
-        methods.forEach(function( method ) {
-          natives[ method ] = combineFn( natives[ method ], compose[ method ] );
-        });
-      });
-
-      //  Ensure a manifest object, an empty object is a sufficient fallback
-      options._natives.manifest = manifest;
-
-      //  Checks for expected properties
-      if ( !( "start" in options ) ) {
-        options.start = options[ "in" ] || 0;
-      }
-
-      if ( !( "end" in options ) ) {
-        options.end = options[ "out" ] || this.duration() || Number.MAX_VALUE;
-      }
-
-      // Merge with defaults if they exist, make sure per call is prioritized
-      mergedSetupOpts = defaults ? Popcorn.extend( {}, defaults, options ) :
-                          options;
-
-      // Resolves 239, 241, 242
-      if ( !mergedSetupOpts.target ) {
-
-        //  Sometimes the manifest may be missing entirely
-        //  or it has an options object that doesn't have a `target` property
-        manifestOpts = "options" in manifest && manifest.options;
-
-        mergedSetupOpts.target = manifestOpts && "target" in manifestOpts && manifestOpts.target;
-      }
-
-      // Trigger _setup method if exists
-      options._natives._setup && options._natives._setup.call( this, mergedSetupOpts );
-
-      // Create new track event for this instance
-      Popcorn.addTrackEvent( this, Popcorn.extend( mergedSetupOpts, options ) );
-
-      //  Future support for plugin event definitions
-      //  for all of the native events
-      Popcorn.forEach( setup, function( callback, type ) {
-
-        if ( type !== "type" ) {
-
-          if ( reserved.indexOf( type ) === -1 ) {
-
-            this.listen( type, callback );
-          }
-        }
-
-      }, this );
-
-      return this;
-    };
-
-    //  Assign new named definition
-    plugin[ name ] = function( options ) {
-      return pluginFn.call( this, isfn ? definition.call( this, options ) : definition,
-                                  options );
-    };
-
-    //  Extend Popcorn.p with new named definition
-    Popcorn.extend( Popcorn.p, plugin );
-
-    //  Push into the registry
-    var entry = {
-      fn: plugin[ name ],
-      definition: definition,
-      base: definition,
-      parents: [],
-      name: name
-    };
-    Popcorn.registry.push(
-       Popcorn.extend( plugin, entry, {
-        type: name
-      })
-    );
-    Popcorn.registryByName[ name ] = entry;
-
-    return plugin;
-  };
-
-  // Storage for plugin function errors
-  Popcorn.plugin.errors = [];
-
-  // Returns wrapped plugin function
-  function safeTry( fn, pluginName ) {
-    return function() {
-
-      //  When Popcorn.plugin.debug is true, do not suppress errors
-      if ( Popcorn.plugin.debug ) {
-        return fn.apply( this, arguments );
-      }
-
-      try {
-        return fn.apply( this, arguments );
-      } catch ( ex ) {
-
-        // Push plugin function errors into logging queue
-        Popcorn.plugin.errors.push({
-          plugin: pluginName,
-          thrown: ex,
-          source: fn.toString()
-        });
-
-        // Trigger an error that the instance can listen for
-        // and react to
-        this.trigger( "error", Popcorn.plugin.errors );
-      }
-    };
-  }
-
-  // Debug-mode flag for plugin development
-  Popcorn.plugin.debug = false;
-
-  //  removePlugin( type ) removes all tracks of that from all instances of popcorn
-  //  removePlugin( obj, type ) removes all tracks of type from obj, where obj is a single instance of popcorn
-  Popcorn.removePlugin = function( obj, name ) {
-
-    //  Check if we are removing plugin from an instance or from all of Popcorn
-    if ( !name ) {
-
-      //  Fix the order
-      name = obj;
-      obj = Popcorn.p;
-
-      if ( Popcorn.protect.natives.indexOf( name.toLowerCase() ) >= 0 ) {
-        Popcorn.error( "'" + name + "' is a protected function name" );
-        return;
-      }
-
-      var registryLen = Popcorn.registry.length,
-          registryIdx;
-
-      // remove plugin reference from registry
-      for ( registryIdx = 0; registryIdx < registryLen; registryIdx++ ) {
-        if ( Popcorn.registry[ registryIdx ].name === name ) {
-          Popcorn.registry.splice( registryIdx, 1 );
-          delete Popcorn.registryByName[ name ];
-          delete Popcorn.manifest[ name ];
-
-          // delete the plugin
-          delete obj[ name ];
-
-          // plugin found and removed, stop checking, we are done
-          return;
-        }
-      }
-
-    }
-
-    var byStart = obj.data.trackEvents.byStart,
-        byEnd = obj.data.trackEvents.byEnd,
-        animating = obj.data.trackEvents.animating,
-        idx, sl;
-
-    // remove all trackEvents
-    for ( idx = 0, sl = byStart.length; idx < sl; idx++ ) {
-
-      if ( ( byStart[ idx ] && byStart[ idx ]._natives && byStart[ idx ]._natives.type === name ) &&
-                ( byEnd[ idx ] && byEnd[ idx ]._natives && byEnd[ idx ]._natives.type === name ) ) {
-
-        byStart[ idx ]._natives._teardown && byStart[ idx ]._natives._teardown.call( obj, byStart[ idx ] );
-
-        byStart.splice( idx, 1 );
-        byEnd.splice( idx, 1 );
-
-        // update for loop if something removed, but keep checking
-        idx--; sl--;
-        if ( obj.data.trackEvents.startIndex <= idx ) {
-          obj.data.trackEvents.startIndex--;
-          obj.data.trackEvents.endIndex--;
-        }
-      }
-    }
-
-    //remove all animating events
-    for ( idx = 0, sl = animating.length; idx < sl; idx++ ) {
-
-      if ( animating[ idx ] && animating[ idx ]._natives && animating[ idx ]._natives.type === name ) {
-
-        animating.splice( idx, 1 );
-
-        // update for loop if something removed, but keep checking
-        idx--; sl--;
-      }
-    }
-
-  };
-
-  Popcorn.compositions = {};
-
-  //  Plugin inheritance
-  Popcorn.compose = function( name, definition, manifest ) {
-
-    //  If `manifest` arg is undefined, check for manifest within the `definition` object
-    //  If no `definition.manifest`, an empty object is a sufficient fallback
-    Popcorn.manifest[ name ] = manifest = manifest || definition.manifest || {};
-
-    // register the effect by name
-    Popcorn.compositions[ name ] = definition;
-  };
-
-  Popcorn.plugin.effect = Popcorn.effect = Popcorn.compose;
-
-  // stores parsers keyed on filetype
-  Popcorn.parsers = {};
-
-  // An interface for extending Popcorn
-  // with parser functionality
-  Popcorn.parser = function( name, type, definition ) {
-
-    if ( Popcorn.protect.natives.indexOf( name.toLowerCase() ) >= 0 ) {
-      Popcorn.error( "'" + name + "' is a protected function name" );
-      return;
-    }
-
-    // fixes parameters for overloaded function call
-    if ( typeof type === "function" && !definition ) {
-      definition = type;
-      type = "";
-    }
-
-    if ( typeof definition !== "function" || typeof type !== "string" ) {
-      return;
-    }
-
-    // Provides some sugar, but ultimately extends
-    // the definition into Popcorn.p
-
-    var natives = Popcorn.events.all,
-        parseFn,
-        parser = {};
-
-    parseFn = function( filename, callback ) {
-
-      if ( !filename ) {
-        return this;
-      }
-
-      var that = this;
-
-      Popcorn.xhr({
-        url: filename,
-        dataType: type,
-        success: function( data ) {
-
-          var tracksObject = definition( data ),
-              tracksData,
-              tracksDataLen,
-              tracksDef,
-              idx = 0;
-
-          tracksData = tracksObject.data || [];
-          tracksDataLen = tracksData.length;
-          tracksDef = null;
-
-          //  If no tracks to process, return immediately
-          if ( !tracksDataLen ) {
-            return;
-          }
-
-          //  Create tracks out of parsed object
-          for ( ; idx < tracksDataLen; idx++ ) {
-
-            tracksDef = tracksData[ idx ];
-
-            for ( var key in tracksDef ) {
-
-              if ( hasOwn.call( tracksDef, key ) && !!that[ key ] ) {
-
-                that[ key ]( tracksDef[ key ] );
-              }
-            }
-          }
-          if ( callback ) {
-            callback();
-          }
-        }
-      });
-
-      return this;
-    };
-
-    // Assign new named definition
-    parser[ name ] = parseFn;
-
-    // Extend Popcorn.p with new named definition
-    Popcorn.extend( Popcorn.p, parser );
-
-    // keys the function name by filetype extension
-    //Popcorn.parsers[ name ] = true;
-
-    return parser;
-  };
-
-  Popcorn.player = function( name, player ) {
-
-    player = player || {};
-
-    var playerFn = function( target, src, options ) {
-
-      options = options || {};
-
-      // List of events
-      var date = new Date() / 1000,
-          baselineTime = date,
-          currentTime = 0,
-          volume = 1,
-          muted = false,
-          events = {},
-
-          // The container div of the resource
-          container = document.getElementById( rIdExp.exec( target ) && rIdExp.exec( target )[ 2 ] ) ||
-                        document.getElementById( target ) ||
-                          target,
-          basePlayer = {},
-          timeout,
-          popcorn;
-
-      // copies a div into the media object
-      for( var val in container ) {
-
-        if ( typeof container[ val ] === "object" ) {
-
-          basePlayer[ val ] = container[ val ];
-        } else if ( typeof container[ val ] === "function" ) {
-
-          basePlayer[ val ] = (function( value ) {
-
-            // this is a stupid ugly kludgy hack in honour of Safari
-            // in Safari a NodeList is a function, not an object
-            if ( "length" in container[ value ] && !container[ value ].call ) {
-
-              return container[ value ];
-            } else {
-
-              return function() {
-
-                return container[ value ].apply( container, arguments );
-              };
-            }
-          }( val ));
-        } else {
-
-          Popcorn.player.defineProperty( basePlayer, val, {
-            get: (function( value ) {
-
-              return function() {
-
-                return container[ value ];
-              };
-            }( val )),
-            set: Popcorn.nop,
-            configurable: true
-          });
-        }
-      }
-
-      var timeupdate = function() {
-
-        date = new Date() / 1000;
-
-        if ( !basePlayer.paused ) {
-
-          basePlayer.currentTime = basePlayer.currentTime + ( date - baselineTime );
-          basePlayer.dispatchEvent( "timeupdate" );
-          timeout = setTimeout( timeupdate, 10 );
-        }
-
-        baselineTime = date;
-      };
-
-      basePlayer.play = function() {
-
-        this.paused = false;
-
-        if ( basePlayer.readyState >= 4 ) {
-
-          baselineTime = new Date() / 1000;
-          basePlayer.dispatchEvent( "play" );
-          timeupdate();
-        }
-      };
-
-      basePlayer.pause = function() {
-
-        this.paused = true;
-        basePlayer.dispatchEvent( "pause" );
-      };
-
-      Popcorn.player.defineProperty( basePlayer, "currentTime", {
-        get: function() {
-
-          return currentTime;
-        },
-        set: function( val ) {
-
-          // make sure val is a number
-          currentTime = +val;
-          basePlayer.dispatchEvent( "timeupdate" );
-          return currentTime;
-        },
-        configurable: true
-      });
-
-      Popcorn.player.defineProperty( basePlayer, "volume", {
-        get: function() {
-
-          return volume;
-        },
-        set: function( val ) {
-
-          // make sure val is a number
-          volume = +val;
-          basePlayer.dispatchEvent( "volumechange" );
-          return volume;
-        },
-        configurable: true
-      });
-
-      Popcorn.player.defineProperty( basePlayer, "muted", {
-        get: function() {
-
-          return muted;
-        },
-        set: function( val ) {
-
-          // make sure val is a number
-          muted = +val;
-          basePlayer.dispatchEvent( "volumechange" );
-          return muted;
-        },
-        configurable: true
-      });
-
-      // Adds an event listener to the object
-      basePlayer.addEventListener = function( evtName, fn ) {
-
-        if ( !events[ evtName ] ) {
-
-          events[ evtName ] = [];
-        }
-
-        events[ evtName ].push( fn );
-        return fn;
-      };
-
-      // Can take event object or simple string
-      basePlayer.dispatchEvent = function( oEvent ) {
-
-        var evt,
-            self = this,
-            eventInterface,
-            eventName = oEvent.type;
-
-        // A string was passed, create event object
-        if ( !eventName ) {
-
-          eventName = oEvent;
-          eventInterface  = Popcorn.events.getInterface( eventName );
-
-          if ( eventInterface ) {
-
-            evt = document.createEvent( eventInterface );
-            evt.initEvent( eventName, true, true, window, 1 );
-          }
-        }
-
-        Popcorn.forEach( events[ eventName ], function( val ) {
-
-          val.call( self, evt, self );
-        });
-      };
-
-      // Attempt to get src from playerFn parameter
-      basePlayer.src = src || "";
-      basePlayer.readyState = 0;
-      basePlayer.duration = 0;
-      basePlayer.paused = true;
-      basePlayer.ended = 0;
-
-      if ( player._setup ) {
-
-        player._setup.call( basePlayer, options );
-      } else {
-
-        // there is no setup, which means there is nothing to load
-        basePlayer.readyState = 4;
-        basePlayer.dispatchEvent( "load" );
-        basePlayer.dispatchEvent( "loadeddata" );
-      }
-
-      // when a custom player is loaded, load basePlayer state into custom player
-      basePlayer.addEventListener( "load", function() {
-
-        // if a player is not ready before currentTime is called, this will set it after it is ready
-        basePlayer.currentTime = currentTime;
-
-        // same as above with volume and muted
-        basePlayer.volume = volume;
-        basePlayer.muted = muted;
-      });
-
-      basePlayer.addEventListener( "loadeddata", function() {
-
-        // if play was called before player ready, start playing video
-        !basePlayer.paused && basePlayer.play();
-      });
-
-      popcorn = new Popcorn.p.init( basePlayer, options );
-
-      return popcorn;
-    };
-
-    Popcorn[ name ] = Popcorn[ name ] || playerFn;
-  };
-
-  Popcorn.player.defineProperty = Object.defineProperty || function( object, description, options ) {
-
-    object.__defineGetter__( description, options.get || Popcorn.nop );
-    object.__defineSetter__( description, options.set || Popcorn.nop );
-  };
-
-  //  Cache references to reused RegExps
-  var rparams = /\?/,
-  //  XHR Setup object
-  setup = {
-    url: "",
-    data: "",
-    dataType: "",
-    success: Popcorn.nop,
-    type: "GET",
-    async: true,
-    xhr: function() {
-      return new global.XMLHttpRequest();
-    }
-  };
-
-  Popcorn.xhr = function( options ) {
-
-    options.dataType = options.dataType && options.dataType.toLowerCase() || null;
-
-    if ( options.dataType &&
-         ( options.dataType === "jsonp" || options.dataType === "script" ) ) {
-
-      Popcorn.xhr.getJSONP(
-        options.url,
-        options.success,
-        options.dataType === "script"
-      );
-      return;
-    }
-
-    var settings = Popcorn.extend( {}, setup, options );
-
-    //  Create new XMLHttpRequest object
-    settings.ajax  = settings.xhr();
-
-    if ( settings.ajax ) {
-
-      if ( settings.type === "GET" && settings.data ) {
-
-        //  append query string
-        settings.url += ( rparams.test( settings.url ) ? "&" : "?" ) + settings.data;
-
-        //  Garbage collect and reset settings.data
-        settings.data = null;
-      }
-
-
-      settings.ajax.open( settings.type, settings.url, settings.async );
-      settings.ajax.send( settings.data || null );
-
-      return Popcorn.xhr.httpData( settings );
-    }
-  };
-
-
-  Popcorn.xhr.httpData = function( settings ) {
-
-    var data, json = null,
-        parser, xml = null;
-
-    settings.ajax.onreadystatechange = function() {
-
-      if ( settings.ajax.readyState === 4 ) {
-
-        try {
-          json = JSON.parse( settings.ajax.responseText );
-        } catch( e ) {
-          //suppress
-        }
-
-        data = {
-          xml: settings.ajax.responseXML,
-          text: settings.ajax.responseText,
-          json: json
-        };
-
-        // Normalize: data.xml is non-null in IE9 regardless of if response is valid xml
-        if ( !data.xml || !data.xml.documentElement ) {
-          data.xml = null;
-
-          try {
-            parser = new DOMParser();
-            xml = parser.parseFromString( settings.ajax.responseText, "text/xml" );
-
-            if ( !xml.getElementsByTagName( "parsererror" ).length ) {
-              data.xml = xml;
-            }
-          } catch ( e ) {
-            // data.xml remains null
-          }
-        }
-
-        //  If a dataType was specified, return that type of data
-        if ( settings.dataType ) {
-          data = data[ settings.dataType ];
-        }
-
-
-        settings.success.call( settings.ajax, data );
-
-      }
-    };
-    return data;
-  };
-
-  Popcorn.xhr.getJSONP = function( url, success, isScript ) {
-
-    var head = document.head || document.getElementsByTagName( "head" )[ 0 ] || document.documentElement,
-      script = document.createElement( "script" ),
-      paramStr = url.split( "?" )[ 1 ],
-      isFired = false,
-      params = [],
-      callback, parts, callparam;
-
-    if ( paramStr && !isScript ) {
-      params = paramStr.split( "&" );
-    }
-
-    if ( params.length ) {
-      parts = params[ params.length - 1 ].split( "=" );
-    }
-
-    callback = params.length ? ( parts[ 1 ] ? parts[ 1 ] : parts[ 0 ]  ) : "jsonp";
-
-    if ( !paramStr && !isScript ) {
-      url += "?callback=" + callback;
-    }
-
-    if ( callback && !isScript ) {
-
-      //  If a callback name already exists
-      if ( !!window[ callback ] ) {
-        //  Create a new unique callback name
-        callback = Popcorn.guid( callback );
-      }
-
-      //  Define the JSONP success callback globally
-      window[ callback ] = function( data ) {
-        // Fire success callbacks
-        success && success( data );
-        isFired = true;
-      };
-
-      //  Replace callback param and callback name
-      url = url.replace( parts.join( "=" ), parts[ 0 ] + "=" + callback );
-    }
-
-    script.onload = function() {
-
-      //  Handling remote script loading callbacks
-      if ( isScript ) {
-        //  getScript
-        success && success();
-      }
-
-      //  Executing for JSONP requests
-      if ( isFired ) {
-        //  Garbage collect the callback
-        delete window[ callback ];
-      }
-      //  Garbage collect the script resource
-      head.removeChild( script );
-    };
-
-    script.src = url;
-
-    head.insertBefore( script, head.firstChild );
-
-    return;
-  };
-
-  Popcorn.getJSONP = Popcorn.xhr.getJSONP;
-
-  Popcorn.getScript = Popcorn.xhr.getScript = function( url, success ) {
-
-    return Popcorn.xhr.getJSONP( url, success, true );
-  };
-
-  Popcorn.util = {
-    // Simple function to parse a timestamp into seconds
-    // Acceptable formats are:
-    // HH:MM:SS.MMM
-    // HH:MM:SS;FF
-    // Hours and minutes are optional. They default to 0
-    toSeconds: function( timeStr, framerate ) {
-      // Hours and minutes are optional
-      // Seconds must be specified
-      // Seconds can be followed by milliseconds OR by the frame information
-      var validTimeFormat = /^([0-9]+:){0,2}[0-9]+([.;][0-9]+)?$/,
-          errorMessage = "Invalid time format",
-          digitPairs, lastIndex, lastPair, firstPair,
-          frameInfo, frameTime;
-
-      if ( typeof timeStr === "number" ) {
-        return timeStr;
-      }
-
-      if ( typeof timeStr === "string" &&
-            !validTimeFormat.test( timeStr ) ) {
-        Popcorn.error( errorMessage );
-      }
-
-      digitPairs = timeStr.split( ":" );
-      lastIndex = digitPairs.length - 1;
-      lastPair = digitPairs[ lastIndex ];
-
-      // Fix last element:
-      if ( lastPair.indexOf( ";" ) > -1 ) {
-
-        frameInfo = lastPair.split( ";" );
-        frameTime = 0;
-
-        if ( framerate && ( typeof framerate === "number" ) ) {
-          frameTime = parseFloat( frameInfo[ 1 ], 10 ) / framerate;
-        }
-
-        digitPairs[ lastIndex ] = parseInt( frameInfo[ 0 ], 10 ) + frameTime;
-      }
-
-      firstPair = digitPairs[ 0 ];
-
-      return {
-
-        1: parseFloat( firstPair, 10 ),
-
-        2: ( parseInt( firstPair, 10 ) * 60 ) +
-              parseFloat( digitPairs[ 1 ], 10 ),
-
-        3: ( parseInt( firstPair, 10 ) * 3600 ) +
-            ( parseInt( digitPairs[ 1 ], 10 ) * 60 ) +
-              parseFloat( digitPairs[ 2 ], 10 )
-
-      }[ digitPairs.length || 1 ];
-    }
-  };
-
-
-  // Initialize locale data
-  // Based on http://en.wikipedia.org/wiki/Language_localisation#Language_tags_and_codes
-  function initLocale( arg ) {
-
-    var locale = typeof arg === "string" ? arg : [ arg.language, arg.region ].join( "-" ),
-        parts = locale.split( "-" );
-
-    // Setup locale data table
-    return {
-      iso6391: locale,
-      language: parts[ 0 ] || "",
-      region: parts[ 1 ] || ""
-    };
-  }
-
-  // Declare locale data table
-  var localeData = initLocale( global.navigator.userLanguage || global.navigator.language );
-
-  Popcorn.locale = {
-
-    // Popcorn.locale.get()
-    // returns reference to privately
-    // defined localeData
-    get: function() {
-      return localeData;
-    },
-
-    // Popcorn.locale.set( string|object );
-    set: function( arg ) {
-
-      localeData = initLocale( arg );
-
-      Popcorn.locale.broadcast();
-
-      return localeData;
-    },
-
-    // Popcorn.locale.broadcast( type )
-    // Sends events to all popcorn media instances that are
-    // listening for locale events
-    broadcast: function( type ) {
-
-      var instances = Popcorn.instances,
-          length = instances.length,
-          idx = 0,
-          instance;
-
-      type = type || "locale:changed";
-
-      // Iterate all current instances
-      for ( ; idx < length; idx++ ) {
-        instance = instances[ idx ];
-
-        // For those instances with locale event listeners,
-        // trigger a locale change event
-        if ( type in instance.data.events  ) {
-          instance.trigger( type );
-        }
-      }
-    }
-  };
-
-  // alias for exec function
-  Popcorn.p.cue = Popcorn.p.exec;
-
-  function getItems() {
-
-    var item,
-        list = [];
-
-    if ( Object.keys ) {
-      list = Object.keys( Popcorn.p );
-    } else {
-
-      for ( item in Popcorn.p ) {
-        if ( hasOwn.call( Popcorn.p, item ) ) {
-          list.push( item );
-        }
-      }
-    }
-
-    return list.join( "," ).toLowerCase().split( ",");
-  }
-
-  //  Protected API methods
-  Popcorn.protect = {
-    natives: getItems()
-  };
-
-  //  Exposes Popcorn to global context
-  global.Popcorn = Popcorn;
-
-})(window, window.document);
--- a/test/integration/allocine_dossier_independant/js/libs/popcorn.jwplayer.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-var jwplayerObjects = {};
-
-Popcorn.player( "jwplayer", {
-  _setup: function( options ) {
-
-    var media = this,
-        player = {},
-        container = document.createElement( "div" ),
-        currentTime = 0,
-        seekTime = 0,
-        seeking = false,
-        dataLoaded = false;
-    container.id = media.id + Popcorn.guid();
-
-    media.appendChild( container );
-
-  var initApi = function () {
-    jwplayer( container.id ).onTime(function() {
-        currentTime = jwplayer(container.id).getPosition();
-        media.dispatchEvent( "timeupdate" );
-       // timeout = setTimeout( timeupdate, 10 );
-    });
-    
-    media.play = function() {
-      media.paused = false;
-      media.dispatchEvent( "play" );
-
-      media.dispatchEvent( "playing" );
-      jwplayer( container.id ).play();
-    };
-    
-    media.pause = function() {
-
-      if ( !media.paused ) {
-        media.paused = true;
-        media.dispatchEvent( "pause" );
-        jwplayer( container.id ).pause();
-      }
-    };
-
-    Popcorn.player.defineProperty( media, "currentTime", {
-          set: function( val ) {
-            // make sure val is a number
-            currentTime = seekTime = +val;
-            seeking = true;
-            media.dispatchEvent( "seeked" );
-            media.dispatchEvent( "timeupdate" );
-            jwplayer( container.id ).seek( currentTime );
-            return currentTime;
-          },
-          get: function() {
-            return jwplayer( container.id ).getPosition();            
-          }
-        });
- 
-    Popcorn.player.defineProperty( media, "muted", {   
-        set: function( val ) {
-          if ( jwplayer( container.id ).getMute() !== val ) {
-            if ( val ) {
-              jwplayer( container.id ).setMute(true);
-            } else {
-              jwplayer( container.id ).setMute(false);
-            }
-
-            media.dispatchEvent( "volumechange" );
-          }
-          
-          return jwplayer( container.id ).getMute();
-        },
-        get: function() {
-          return jwplayer( container.id ).getMute();
-        }
-    });
-  
-    Popcorn.player.defineProperty( media, "volume", {
-    
-      set: function( val ) {
-
-        if ( jwplayer( container.id ).getVolume() !== val *100 ) {
-          jwplayer( container.id ).setVolume( val * 100);
-          media.dispatchEvent( "volumechange" );
-        }
-        
-        return (jwplayer( container.id ).getVolume()) / 100;
-      },
-      
-      get: function() {
-        return jwplayer( container.id ).getVolume() / 100;
-      }
-    });
-
-    media.readyState = 4;
-    media.dispatchEvent( 'load' );
-    dataLoaded = true;
-
-    media.duration = options.duration;
-    media.dispatchEvent( 'durationchange' );
-
-    media.paused && media.dispatchEvent( 'loadeddata' );
-
-    };
-
-    options.events = {
-        onReady: initApi
-      };
-      
-    jwplayer( container.id ).setup(options);
-
-  }
-});
-
--- a/test/integration/allocine_dossier_independant/js/libs/popcorn.youtube.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,220 +0,0 @@
-// A global callback for youtube... that makes me angry
-var onYouTubePlayerReady = function( containerId ) {
-
-  onYouTubePlayerReady[ containerId ] && onYouTubePlayerReady[ containerId ]();
-};
-onYouTubePlayerReady.stateChangeEventHandler = {};
-
-Popcorn.player( "youtube", {
-  _setup: function( options ) {
-
-    var media = this,
-        youtubeObject,
-        container = document.createElement( "div" ),
-        currentTime = 0,
-        seekTime = 0,
-        seeking = false,
-
-        // state code for volume changed polling
-        volumeChanged = false,
-        lastMuted = false,
-        lastVolume = 0;
-
-    container.id = media.id + Popcorn.guid();
-
-    media.appendChild( container );
-
-    var youtubeInit = function() {
-
-      var flashvars,
-          params,
-          attributes,
-          src;
-
-      // expose a callback to this scope, that is called from the global callback youtube calls
-      onYouTubePlayerReady[ container.id ] = function() {
-
-        youtubeObject = document.getElementById( container.id );
-
-        // more youtube callback nonsense
-        onYouTubePlayerReady.stateChangeEventHandler[ container.id ] = function( state ) {
-
-          // playing is state 1
-          // paused is state 2
-          if ( state === 1 ) {
-
-            media.paused && media.play();
-          // youtube fires paused events while seeking
-          // this is the only way to get seeking events
-          } else if ( state === 2 ) {
-
-            // silly logic forced on me by the youtube API
-            // calling youtube.seekTo triggers multiple events
-            // with the second events getCurrentTime being the old time
-            if ( seeking && seekTime === currentTime && seekTime !== youtubeObject.getCurrentTime() ) {
-
-              seeking = false;
-              youtubeObject.seekTo( currentTime );
-              return;
-            }
-
-            currentTime = youtubeObject.getCurrentTime();
-            media.dispatchEvent( "timeupdate" );
-            !media.paused && media.pause();
-          }
-        };
-
-        // youtube requires callbacks to be a string to a function path from the global scope
-        youtubeObject.addEventListener( "onStateChange", "onYouTubePlayerReady.stateChangeEventHandler." + container.id );
-
-        var timeupdate = function() {
-
-          if ( !media.paused ) {
-
-            currentTime = youtubeObject.getCurrentTime();
-            media.dispatchEvent( "timeupdate" );
-            setTimeout( timeupdate, 10 );
-          }
-        };
-
-        var volumeupdate = function() {
-
-          if ( lastMuted !== youtubeObject.isMuted() ) {
-
-            lastMuted = youtubeObject.isMuted();
-            media.dispatchEvent( "volumechange" );
-          }
-
-          if ( lastVolume !== youtubeObject.getVolume() ) {
-
-            lastVolume = youtubeObject.getVolume();
-            media.dispatchEvent( "volumechange" );
-          }
-
-          setTimeout( volumeupdate, 250 );
-        };
-
-        media.play = function() {
-
-          media.paused = false;
-          media.dispatchEvent( "play" );
-
-          media.dispatchEvent( "playing" );
-          timeupdate();
-          youtubeObject.playVideo();
-        };
-
-        media.pause = function() {
-
-          if ( !media.paused ) {
-
-            media.paused = true;
-            media.dispatchEvent( "pause" );
-            youtubeObject.pauseVideo();
-          }
-        };
-
-        Popcorn.player.defineProperty( media, "currentTime", {
-          set: function( val ) {
-
-            // make sure val is a number
-            currentTime = seekTime = +val;
-            seeking = true;
-            media.dispatchEvent( "seeked" );
-            media.dispatchEvent( "timeupdate" );
-            youtubeObject.seekTo( currentTime );
-            return currentTime;
-          },
-          get: function() {
-
-            return currentTime;
-          }
-        });
-
-        Popcorn.player.defineProperty( media, "muted", {
-          set: function( val ) {
-
-            if ( youtubeObject.isMuted() !== val ) {
-
-              if ( val ) {
-
-                youtubeObject.mute();
-              } else {
-
-                youtubeObject.unMute();
-              }
-
-              lastMuted = youtubeObject.isMuted();
-              media.dispatchEvent( "volumechange" );
-            }
-
-            return youtubeObject.isMuted();
-          },
-          get: function() {
-
-            return youtubeObject.isMuted();
-          }
-        });
-
-        Popcorn.player.defineProperty( media, "volume", {
-          set: function( val ) {
-
-            if ( youtubeObject.getVolume() !== val ) {
-
-              youtubeObject.setVolume( val );
-              lastVolume = youtubeObject.getVolume();
-              media.dispatchEvent( "volumechange" );
-            }
-
-            return youtubeObject.getVolume();
-          },
-          get: function() {
-
-            return youtubeObject.getVolume();
-          }
-        });
-
-        media.readyState = 4;
-        media.dispatchEvent( "load" );
-        media.duration = youtubeObject.getDuration();
-        media.dispatchEvent( "durationchange" );
-        volumeupdate();
-
-        media.dispatchEvent( "loadeddata" );
-      };
-
-      options.controls = +options.controls === 0 || +options.controls === 1 ? options.controls : 1;
-      options.annotations = +options.annotations === 1 || +options.annotations === 3 ? options.annotations : 1;
-
-      flashvars = {
-        playerapiid: container.id,
-        controls: options.controls,
-        iv_load_policy: options.annotations
-      };
-
-      params = {
-        wmode: "transparent",
-        allowScriptAccess: "always"
-      };
-
-      attributes = {
-        id: container.id
-      };
-
-      src = /^.*[\/=](.{11})/.exec( media.src )[ 1 ];
-
-      swfobject.embedSWF( "http://www.youtube.com/e/" + src + "?enablejsapi=1&playerapiid=" + container.id + "&version=3",
-                          container.id, media.offsetWidth, media.offsetHeight, "8", null,
-                          flashvars, params, attributes );
-    };
-
-    if ( !window.swfobject ) {
-
-      Popcorn.getScript( "http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js", youtubeInit );
-    } else {
-
-      youtubeInit();
-    }
-  }
-});
-
--- a/test/integration/allocine_dossier_independant/js/libs/raphael.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5436 +0,0 @@
-// ┌─────────────────────────────────────────────────────────────────────┐ \\
-// │ Raphaël 2.0 - JavaScript Vector Library                             │ \\
-// ├─────────────────────────────────────────────────────────────────────┤ \\
-// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\
-// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\
-// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\
-// └─────────────────────────────────────────────────────────────────────┘ \\
-
-// ┌──────────────────────────────────────────────────────────────────────────────────────┐ \\
-// │ Eve 0.3.2 - JavaScript Events Library                                                │ \\
-// ├──────────────────────────────────────────────────────────────────────────────────────┤ \\
-// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://dmitry.baranovskiy.com/)          │ \\
-// │ Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license. │ \\
-// └──────────────────────────────────────────────────────────────────────────────────────┘ \\
-
-(function (glob) {
-    var version = "0.3.2",
-        has = "hasOwnProperty",
-        separator = /[\.\/]/,
-        wildcard = "*",
-        fun = function () {},
-        numsort = function (a, b) {
-            return a - b;
-        },
-        current_event,
-        stop,
-        events = {n: {}},
-    
-        eve = function (name, scope) {
-            var e = events,
-                oldstop = stop,
-                args = Array.prototype.slice.call(arguments, 2),
-                listeners = eve.listeners(name),
-                z = 0,
-                f = false,
-                l,
-                indexed = [],
-                queue = {},
-                out = [],
-                errors = [];
-            current_event = name;
-            stop = 0;
-            for (var i = 0, ii = listeners.length; i < ii; i++) if ("zIndex" in listeners[i]) {
-                indexed.push(listeners[i].zIndex);
-                if (listeners[i].zIndex < 0) {
-                    queue[listeners[i].zIndex] = listeners[i];
-                }
-            }
-            indexed.sort(numsort);
-            while (indexed[z] < 0) {
-                l = queue[indexed[z++]];
-                out.push(l.apply(scope, args));
-                if (stop) {
-                    stop = oldstop;
-                    return out;
-                }
-            }
-            for (i = 0; i < ii; i++) {
-                l = listeners[i];
-                if ("zIndex" in l) {
-                    if (l.zIndex == indexed[z]) {
-                        out.push(l.apply(scope, args));
-                        if (stop) {
-                            stop = oldstop;
-                            return out;
-                        }
-                        do {
-                            z++;
-                            l = queue[indexed[z]];
-                            l && out.push(l.apply(scope, args));
-                            if (stop) {
-                                stop = oldstop;
-                                return out;
-                            }
-                        } while (l)
-                    } else {
-                        queue[l.zIndex] = l;
-                    }
-                } else {
-                    out.push(l.apply(scope, args));
-                    if (stop) {
-                        stop = oldstop;
-                        return out;
-                    }
-                }
-            }
-            stop = oldstop;
-            return out.length ? out : null;
-        };
-    
-    eve.listeners = function (name) {
-        var names = name.split(separator),
-            e = events,
-            item,
-            items,
-            k,
-            i,
-            ii,
-            j,
-            jj,
-            nes,
-            es = [e],
-            out = [];
-        for (i = 0, ii = names.length; i < ii; i++) {
-            nes = [];
-            for (j = 0, jj = es.length; j < jj; j++) {
-                e = es[j].n;
-                items = [e[names[i]], e[wildcard]];
-                k = 2;
-                while (k--) {
-                    item = items[k];
-                    if (item) {
-                        nes.push(item);
-                        out = out.concat(item.f || []);
-                    }
-                }
-            }
-            es = nes;
-        }
-        return out;
-    };
-    
-    
-    eve.on = function (name, f) {
-        var names = name.split(separator),
-            e = events;
-        for (var i = 0, ii = names.length; i < ii; i++) {
-            e = e.n;
-            !e[names[i]] && (e[names[i]] = {n: {}});
-            e = e[names[i]];
-        }
-        e.f = e.f || [];
-        for (i = 0, ii = e.f.length; i < ii; i++) if (e.f[i] == f) {
-            return fun;
-        }
-        e.f.push(f);
-        return function (zIndex) {
-            if (+zIndex == +zIndex) {
-                f.zIndex = +zIndex;
-            }
-        };
-    };
-    
-    eve.stop = function () {
-        stop = 1;
-    };
-    
-    eve.nt = function (subname) {
-        if (subname) {
-            return new RegExp("(?:\\.|\\/|^)" + subname + "(?:\\.|\\/|$)").test(current_event);
-        }
-        return current_event;
-    };
-    
-    eve.unbind = function (name, f) {
-        var names = name.split(separator),
-            e,
-            key,
-            splice,
-            cur = [events];
-        for (var i = 0, ii = names.length; i < ii; i++) {
-            for (var j = 0; j < cur.length; j += splice.length - 2) {
-                splice = [j, 1];
-                e = cur[j].n;
-                if (names[i] != wildcard) {
-                    if (e[names[i]]) {
-                        splice.push(e[names[i]]);
-                    }
-                } else {
-                    for (key in e) if (e[has](key)) {
-                        splice.push(e[key]);
-                    }
-                }
-                cur.splice.apply(cur, splice);
-            }
-        }
-        for (i = 0, ii = cur.length; i < ii; i++) {
-            e = cur[i];
-            while (e.n) {
-                if (f) {
-                    if (e.f) {
-                        for (j = 0, jj = e.f.length; j < jj; j++) if (e.f[j] == f) {
-                            e.f.splice(j, 1);
-                            break;
-                        }
-                        !e.f.length && delete e.f;
-                    }
-                    for (key in e.n) if (e.n[has](key) && e.n[key].f) {
-                        var funcs = e.n[key].f;
-                        for (j = 0, jj = funcs.length; j < jj; j++) if (funcs[j] == f) {
-                            funcs.splice(j, 1);
-                            break;
-                        }
-                        !funcs.length && delete e.n[key].f;
-                    }
-                } else {
-                    delete e.f;
-                    for (key in e.n) if (e.n[has](key) && e.n[key].f) {
-                        delete e.n[key].f;
-                    }
-                }
-                e = e.n;
-            }
-        }
-    };
-    
-    eve.version = version;
-    eve.toString = function () {
-        return "You are running Eve " + version;
-    };
-    (typeof module != "undefined" && module.exports) ? (module.exports = eve) : (glob.eve = eve);
-})(this);
-
-// ┌─────────────────────────────────────────────────────────────────────┐ \\
-// │ "Raphaël 2.0" - JavaScript Vector Library                           │ \\
-// ├─────────────────────────────────────────────────────────────────────┤ \\
-// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\
-// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\
-// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\
-// └─────────────────────────────────────────────────────────────────────┘ \\
-(function () {
-    
-    function R(first) {
-        if (R.is(first, "function")) {
-            return loaded ? first() : eve.on("DOMload", first);
-        } else if (R.is(first, array)) {
-            var a = first,
-                cnv = R._engine.create[apply](R, a.splice(0, 3 + R.is(a[0], nu))),
-                res = cnv.set(),
-                i = 0,
-                ii = a.length,
-                j;
-            for (; i < ii; i++) {
-                j = a[i] || {};
-                elements[has](j.type) && res.push(cnv[j.type]().attr(j));
-            }
-            return res;
-        } else {
-            var args = Array.prototype.slice.call(arguments, 0);
-            if (R.is(args[args.length - 1], "function")) {
-                var f = args.pop();
-                return loaded ? f.call(R._engine.create[apply](R, args)) : eve.on("DOMload", function () {
-                    f.call(R._engine.create[apply](R, args));
-                });
-            } else {
-                return R._engine.create[apply](R, arguments);
-            }
-        }
-    }
-    R.version = "2.0.0";
-    R.eve = eve;
-    var loaded,
-        separator = /[, ]+/,
-        elements = {circle: 1, rect: 1, path: 1, ellipse: 1, text: 1, image: 1},
-        formatrg = /\{(\d+)\}/g,
-        proto = "prototype",
-        has = "hasOwnProperty",
-        g = {
-            doc: document,
-            win: window
-        },
-        oldRaphael = {
-            was: Object.prototype[has].call(g.win, "Raphael"),
-            is: g.win.Raphael
-        },
-        Paper = function () {
-            
-            
-            this.ca = this.customAttributes = {};
-        },
-        paperproto,
-        appendChild = "appendChild",
-        apply = "apply",
-        concat = "concat",
-        supportsTouch = "createTouch" in g.doc,
-        E = "",
-        S = " ",
-        Str = String,
-        split = "split",
-        events = "click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[split](S),
-        touchMap = {
-            mousedown: "touchstart",
-            mousemove: "touchmove",
-            mouseup: "touchend"
-        },
-        lowerCase = Str.prototype.toLowerCase,
-        math = Math,
-        mmax = math.max,
-        mmin = math.min,
-        abs = math.abs,
-        pow = math.pow,
-        PI = math.PI,
-        nu = "number",
-        string = "string",
-        array = "array",
-        toString = "toString",
-        fillString = "fill",
-        objectToString = Object.prototype.toString,
-        paper = {},
-        push = "push",
-        ISURL = R._ISURL = /^url\(['"]?([^\)]+?)['"]?\)$/i,
-        colourRegExp = /^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i,
-        isnan = {"NaN": 1, "Infinity": 1, "-Infinity": 1},
-        bezierrg = /^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,
-        round = math.round,
-        setAttribute = "setAttribute",
-        toFloat = parseFloat,
-        toInt = parseInt,
-        upperCase = Str.prototype.toUpperCase,
-        availableAttrs = R._availableAttrs = {
-            "arrow-end": "none",
-            "arrow-start": "none",
-            blur: 0,
-            "clip-rect": "0 0 1e9 1e9",
-            cursor: "default",
-            cx: 0,
-            cy: 0,
-            fill: "#fff",
-            "fill-opacity": 1,
-            font: '10px "Arial"',
-            "font-family": '"Arial"',
-            "font-size": "10",
-            "font-style": "normal",
-            "font-weight": 400,
-            gradient: 0,
-            height: 0,
-            href: "http://raphaeljs.com/",
-            opacity: 1,
-            path: "M0,0",
-            r: 0,
-            rx: 0,
-            ry: 0,
-            src: "",
-            stroke: "#000",
-            "stroke-dasharray": "",
-            "stroke-linecap": "butt",
-            "stroke-linejoin": "butt",
-            "stroke-miterlimit": 0,
-            "stroke-opacity": 1,
-            "stroke-width": 1,
-            target: "_blank",
-            "text-anchor": "middle",
-            title: "Raphael",
-            transform: "",
-            width: 0,
-            x: 0,
-            y: 0
-        },
-        availableAnimAttrs = R._availableAnimAttrs = {
-            blur: nu,
-            "clip-rect": "csv",
-            cx: nu,
-            cy: nu,
-            fill: "colour",
-            "fill-opacity": nu,
-            "font-size": nu,
-            height: nu,
-            opacity: nu,
-            path: "path",
-            r: nu,
-            rx: nu,
-            ry: nu,
-            stroke: "colour",
-            "stroke-opacity": nu,
-            "stroke-width": nu,
-            transform: "transform",
-            width: nu,
-            x: nu,
-            y: nu
-        },
-        commaSpaces = /\s*,\s*/,
-        hsrg = {hs: 1, rg: 1},
-        p2s = /,?([achlmqrstvxz]),?/gi,
-        pathCommand = /([achlmrqstvz])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?\s*,?\s*)+)/ig,
-        tCommand = /([rstm])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?\s*,?\s*)+)/ig,
-        pathValues = /(-?\d*\.?\d*(?:e[\-+]?\d+)?)\s*,?\s*/ig,
-        radial_gradient = R._radial_gradient = /^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/,
-        eldata = {},
-        sortByKey = function (a, b) {
-            return a.key - b.key;
-        },
-        sortByNumber = function (a, b) {
-            return toFloat(a) - toFloat(b);
-        },
-        fun = function () {},
-        pipe = function (x) {
-            return x;
-        },
-        rectPath = R._rectPath = function (x, y, w, h, r) {
-            if (r) {
-                return [["M", x + r, y], ["l", w - r * 2, 0], ["a", r, r, 0, 0, 1, r, r], ["l", 0, h - r * 2], ["a", r, r, 0, 0, 1, -r, r], ["l", r * 2 - w, 0], ["a", r, r, 0, 0, 1, -r, -r], ["l", 0, r * 2 - h], ["a", r, r, 0, 0, 1, r, -r], ["z"]];
-            }
-            return [["M", x, y], ["l", w, 0], ["l", 0, h], ["l", -w, 0], ["z"]];
-        },
-        ellipsePath = function (x, y, rx, ry) {
-            if (ry == null) {
-                ry = rx;
-            }
-            return [["M", x, y], ["m", 0, -ry], ["a", rx, ry, 0, 1, 1, 0, 2 * ry], ["a", rx, ry, 0, 1, 1, 0, -2 * ry], ["z"]];
-        },
-        getPath = R._getPath = {
-            path: function (el) {
-                return el.attr("path");
-            },
-            circle: function (el) {
-                var a = el.attrs;
-                return ellipsePath(a.cx, a.cy, a.r);
-            },
-            ellipse: function (el) {
-                var a = el.attrs;
-                return ellipsePath(a.cx, a.cy, a.rx, a.ry);
-            },
-            rect: function (el) {
-                var a = el.attrs;
-                return rectPath(a.x, a.y, a.width, a.height, a.r);
-            },
-            image: function (el) {
-                var a = el.attrs;
-                return rectPath(a.x, a.y, a.width, a.height);
-            },
-            text: function (el) {
-                var bbox = el._getBBox();
-                return rectPath(bbox.x, bbox.y, bbox.width, bbox.height);
-            }
-        },
-        mapPath = R.mapPath = function (path, matrix) {
-            if (!matrix) {
-                return path;
-            }
-            var x, y, i, j, pathi;
-            path = path2curve(path);
-            for (i = 0, ii = path.length; i < ii; i++) {
-                pathi = path[i];
-                for (j = 1, jj = pathi.length; j < jj; j += 2) {
-                    x = matrix.x(pathi[j], pathi[j + 1]);
-                    y = matrix.y(pathi[j], pathi[j + 1]);
-                    pathi[j] = x;
-                    pathi[j + 1] = y;
-                }
-            }
-            return path;
-        };
-
-    R._g = g;
-    
-    R.type = (g.win.SVGAngle || g.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") ? "SVG" : "VML");
-    if (R.type == "VML") {
-        var d = g.doc.createElement("div"),
-            b;
-        d.innerHTML = '<v:shape adj="1"/>';
-        b = d.firstChild;
-        b.style.behavior = "url(#default#VML)";
-        if (!(b && typeof b.adj == "object")) {
-            return (R.type = E);
-        }
-        d = null;
-    }
-    
-    
-    R.svg = !(R.vml = R.type == "VML");
-    R._Paper = Paper;
-    
-    R.fn = paperproto = Paper.prototype = R.prototype;
-    R._id = 0;
-    R._oid = 0;
-    
-    R.is = function (o, type) {
-        type = lowerCase.call(type);
-        if (type == "finite") {
-            return !isnan[has](+o);
-        }
-        if (type == "array") {
-            return o instanceof Array;
-        }
-        return  (type == "null" && o === null) ||
-                (type == typeof o && o !== null) ||
-                (type == "object" && o === Object(o)) ||
-                (type == "array" && Array.isArray && Array.isArray(o)) ||
-                objectToString.call(o).slice(8, -1).toLowerCase() == type;
-    };
-    
-    R.angle = function (x1, y1, x2, y2, x3, y3) {
-        if (x3 == null) {
-            var x = x1 - x2,
-                y = y1 - y2;
-            if (!x && !y) {
-                return 0;
-            }
-            return (180 + math.atan2(-y, -x) * 180 / PI + 360) % 360;
-        } else {
-            return R.angle(x1, y1, x3, y3) - R.angle(x2, y2, x3, y3);
-        }
-    };
-    
-    R.rad = function (deg) {
-        return deg % 360 * PI / 180;
-    };
-    
-    R.deg = function (rad) {
-        return rad * 180 / PI % 360;
-    };
-    
-    R.snapTo = function (values, value, tolerance) {
-        tolerance = R.is(tolerance, "finite") ? tolerance : 10;
-        if (R.is(values, array)) {
-            var i = values.length;
-            while (i--) if (abs(values[i] - value) <= tolerance) {
-                return values[i];
-            }
-        } else {
-            values = +values;
-            var rem = value % values;
-            if (rem < tolerance) {
-                return value - rem;
-            }
-            if (rem > values - tolerance) {
-                return value - rem + values;
-            }
-        }
-        return value;
-    };
-    
-    
-    var createUUID = R.createUUID = (function (uuidRegEx, uuidReplacer) {
-        return function () {
-            return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(uuidRegEx, uuidReplacer).toUpperCase();
-        };
-    })(/[xy]/g, function (c) {
-        var r = math.random() * 16 | 0,
-            v = c == "x" ? r : (r & 3 | 8);
-        return v.toString(16);
-    });
-
-    
-    R.setWindow = function (newwin) {
-        eve("setWindow", R, g.win, newwin);
-        g.win = newwin;
-        g.doc = g.win.document;
-        if (initWin) {
-            initWin(g.win);
-        }
-    };
-    var toHex = function (color) {
-        if (R.vml) {
-            // http://dean.edwards.name/weblog/2009/10/convert-any-colour-value-to-hex-in-msie/
-            var trim = /^\s+|\s+$/g;
-            var bod;
-            try {
-                var docum = new ActiveXObject("htmlfile");
-                docum.write("<body>");
-                docum.close();
-                bod = docum.body;
-            } catch(e) {
-                bod = createPopup().document.body;
-            }
-            var range = bod.createTextRange();
-            toHex = cacher(function (color) {
-                try {
-                    bod.style.color = Str(color).replace(trim, E);
-                    var value = range.queryCommandValue("ForeColor");
-                    value = ((value & 255) << 16) | (value & 65280) | ((value & 16711680) >>> 16);
-                    return "#" + ("000000" + value.toString(16)).slice(-6);
-                } catch(e) {
-                    return "none";
-                }
-            });
-        } else {
-            var i = g.doc.createElement("i");
-            i.title = "Rapha\xebl Colour Picker";
-            i.style.display = "none";
-            g.doc.body.appendChild(i);
-            toHex = cacher(function (color) {
-                i.style.color = color;
-                return g.doc.defaultView.getComputedStyle(i, E).getPropertyValue("color");
-            });
-        }
-        return toHex(color);
-    },
-    hsbtoString = function () {
-        return "hsb(" + [this.h, this.s, this.b] + ")";
-    },
-    hsltoString = function () {
-        return "hsl(" + [this.h, this.s, this.l] + ")";
-    },
-    rgbtoString = function () {
-        return this.hex;
-    },
-    prepareRGB = function (r, g, b) {
-        if (g == null && R.is(r, "object") && "r" in r && "g" in r && "b" in r) {
-            b = r.b;
-            g = r.g;
-            r = r.r;
-        }
-        if (g == null && R.is(r, string)) {
-            var clr = R.getRGB(r);
-            r = clr.r;
-            g = clr.g;
-            b = clr.b;
-        }
-        if (r > 1 || g > 1 || b > 1) {
-            r /= 255;
-            g /= 255;
-            b /= 255;
-        }
-        
-        return [r, g, b];
-    },
-    packageRGB = function (r, g, b, o) {
-        r *= 255;
-        g *= 255;
-        b *= 255;
-        var rgb = {
-            r: r,
-            g: g,
-            b: b,
-            hex: R.rgb(r, g, b),
-            toString: rgbtoString
-        };
-        R.is(o, "finite") && (rgb.opacity = o);
-        return rgb;
-    };
-    
-    
-    R.color = function (clr) {
-        var rgb;
-        if (R.is(clr, "object") && "h" in clr && "s" in clr && "b" in clr) {
-            rgb = R.hsb2rgb(clr);
-            clr.r = rgb.r;
-            clr.g = rgb.g;
-            clr.b = rgb.b;
-            clr.hex = rgb.hex;
-        } else if (R.is(clr, "object") && "h" in clr && "s" in clr && "l" in clr) {
-            rgb = R.hsl2rgb(clr);
-            clr.r = rgb.r;
-            clr.g = rgb.g;
-            clr.b = rgb.b;
-            clr.hex = rgb.hex;
-        } else {
-            if (R.is(clr, "string")) {
-                clr = R.getRGB(clr);
-            }
-            if (R.is(clr, "object") && "r" in clr && "g" in clr && "b" in clr) {
-                rgb = R.rgb2hsl(clr);
-                clr.h = rgb.h;
-                clr.s = rgb.s;
-                clr.l = rgb.l;
-                rgb = R.rgb2hsb(clr);
-                clr.v = rgb.b;
-            } else {
-                clr = {hex: "none"};
-                crl.r = clr.g = clr.b = clr.h = clr.s = clr.v = clr.l = -1;
-            }
-        }
-        clr.toString = rgbtoString;
-        return clr;
-    };
-    
-    R.hsb2rgb = function (h, s, v, o) {
-        if (this.is(h, "object") && "h" in h && "s" in h && "b" in h) {
-            v = h.b;
-            s = h.s;
-            h = h.h;
-            o = h.o;
-        }
-        h *= 360;
-        var R, G, B, X, C;
-        h = (h % 360) / 60;
-        C = v * s;
-        X = C * (1 - abs(h % 2 - 1));
-        R = G = B = v - C;
-
-        h = ~~h;
-        R += [C, X, 0, 0, X, C][h];
-        G += [X, C, C, X, 0, 0][h];
-        B += [0, 0, X, C, C, X][h];
-        return packageRGB(R, G, B, o);
-    };
-    
-    R.hsl2rgb = function (h, s, l, o) {
-        if (this.is(h, "object") && "h" in h && "s" in h && "l" in h) {
-            l = h.l;
-            s = h.s;
-            h = h.h;
-        }
-        if (h > 1 || s > 1 || l > 1) {
-            h /= 360;
-            s /= 100;
-            l /= 100;
-        }
-        h *= 360;
-        var R, G, B, X, C;
-        h = (h % 360) / 60;
-        C = 2 * s * (l < .5 ? l : 1 - l);
-        X = C * (1 - abs(h % 2 - 1));
-        R = G = B = l - C / 2;
-
-        h = ~~h;
-        R += [C, X, 0, 0, X, C][h];
-        G += [X, C, C, X, 0, 0][h];
-        B += [0, 0, X, C, C, X][h];
-        return packageRGB(R, G, B, o);
-    };
-    
-    R.rgb2hsb = function (r, g, b) {
-        b = prepareRGB(r, g, b);
-        r = b[0];
-        g = b[1];
-        b = b[2];
-
-        var H, S, V, C;
-        V = mmax(r, g, b);
-        C = V - mmin(r, g, b);
-        H = (C == 0 ? null :
-             V == r ? (g - b) / C :
-             V == g ? (b - r) / C + 2 :
-                      (r - g) / C + 4
-            );
-        H = ((H + 360) % 6) * 60 / 360;
-        S = C == 0 ? 0 : C / V;
-        return {h: H, s: S, b: V, toString: hsbtoString};
-    };
-    
-    R.rgb2hsl = function (r, g, b) {
-        b = prepareRGB(r, g, b);
-        r = b[0];
-        g = b[1];
-        b = b[2];
-
-        var H, S, L, M, m, C;
-        M = mmax(r, g, b);
-        m = mmin(r, g, b);
-        C = M - m;
-        H = (C == 0 ? null :
-             M == r ? (g - b) / C :
-             M == g ? (b - r) / C + 2 :
-                      (r - g) / C + 4);
-        H = ((H + 360) % 6) * 60 / 360;
-        L = (M + m) / 2;
-        S = (C == 0 ? 0 :
-             L < .5 ? C / (2 * L) :
-                      C / (2 - 2 * L));
-        return {h: H, s: S, l: L, toString: hsltoString};
-    };
-    R._path2string = function () {
-        return this.join(",").replace(p2s, "$1");
-    };
-    function repush(array, item) {
-        for (var i = 0, ii = array.length; i < ii; i++) if (array[i] === item) {
-            return array.push(array.splice(i, 1)[0]);
-        }
-    }
-    function cacher(f, scope, postprocessor) {
-        function newf() {
-            var arg = Array.prototype.slice.call(arguments, 0),
-                args = arg.join("\u2400"),
-                cache = newf.cache = newf.cache || {},
-                count = newf.count = newf.count || [];
-            if (cache[has](args)) {
-                repush(count, args);
-                return postprocessor ? postprocessor(cache[args]) : cache[args];
-            }
-            count.length >= 1e3 && delete cache[count.shift()];
-            count.push(args);
-            cache[args] = f[apply](scope, arg);
-            return postprocessor ? postprocessor(cache[args]) : cache[args];
-        }
-        return newf;
-    }
-
-    var preload = R._preload = function (src, f) {
-        var img = g.doc.createElement("img");
-        img.style.cssText = "position:absolute;left:-9999em;top-9999em";
-        img.onload = function () {
-            f.call(this);
-            this.onload = null;
-            g.doc.body.removeChild(this);
-        };
-        img.onerror = function () {
-            g.doc.body.removeChild(this);
-        };
-        g.doc.body.appendChild(img);
-        img.src = src;
-    };
-    
-    function clrToString() {
-        return this.hex;
-    }
-
-    
-    R.getRGB = cacher(function (colour) {
-        if (!colour || !!((colour = Str(colour)).indexOf("-") + 1)) {
-            return {r: -1, g: -1, b: -1, hex: "none", error: 1, toString: clrToString};
-        }
-        if (colour == "none") {
-            return {r: -1, g: -1, b: -1, hex: "none", toString: clrToString};
-        }
-        !(hsrg[has](colour.toLowerCase().substring(0, 2)) || colour.charAt() == "#") && (colour = toHex(colour));
-        var res,
-            red,
-            green,
-            blue,
-            opacity,
-            t,
-            values,
-            rgb = colour.match(colourRegExp);
-        if (rgb) {
-            if (rgb[2]) {
-                blue = toInt(rgb[2].substring(5), 16);
-                green = toInt(rgb[2].substring(3, 5), 16);
-                red = toInt(rgb[2].substring(1, 3), 16);
-            }
-            if (rgb[3]) {
-                blue = toInt((t = rgb[3].charAt(3)) + t, 16);
-                green = toInt((t = rgb[3].charAt(2)) + t, 16);
-                red = toInt((t = rgb[3].charAt(1)) + t, 16);
-            }
-            if (rgb[4]) {
-                values = rgb[4][split](commaSpaces);
-                red = toFloat(values[0]);
-                values[0].slice(-1) == "%" && (red *= 2.55);
-                green = toFloat(values[1]);
-                values[1].slice(-1) == "%" && (green *= 2.55);
-                blue = toFloat(values[2]);
-                values[2].slice(-1) == "%" && (blue *= 2.55);
-                rgb[1].toLowerCase().slice(0, 4) == "rgba" && (opacity = toFloat(values[3]));
-                values[3] && values[3].slice(-1) == "%" && (opacity /= 100);
-            }
-            if (rgb[5]) {
-                values = rgb[5][split](commaSpaces);
-                red = toFloat(values[0]);
-                values[0].slice(-1) == "%" && (red *= 2.55);
-                green = toFloat(values[1]);
-                values[1].slice(-1) == "%" && (green *= 2.55);
-                blue = toFloat(values[2]);
-                values[2].slice(-1) == "%" && (blue *= 2.55);
-                (values[0].slice(-3) == "deg" || values[0].slice(-1) == "\xb0") && (red /= 360);
-                rgb[1].toLowerCase().slice(0, 4) == "hsba" && (opacity = toFloat(values[3]));
-                values[3] && values[3].slice(-1) == "%" && (opacity /= 100);
-                return R.hsb2rgb(red, green, blue, opacity);
-            }
-            if (rgb[6]) {
-                values = rgb[6][split](commaSpaces);
-                red = toFloat(values[0]);
-                values[0].slice(-1) == "%" && (red *= 2.55);
-                green = toFloat(values[1]);
-                values[1].slice(-1) == "%" && (green *= 2.55);
-                blue = toFloat(values[2]);
-                values[2].slice(-1) == "%" && (blue *= 2.55);
-                (values[0].slice(-3) == "deg" || values[0].slice(-1) == "\xb0") && (red /= 360);
-                rgb[1].toLowerCase().slice(0, 4) == "hsla" && (opacity = toFloat(values[3]));
-                values[3] && values[3].slice(-1) == "%" && (opacity /= 100);
-                return R.hsl2rgb(red, green, blue, opacity);
-            }
-            rgb = {r: red, g: green, b: blue, toString: clrToString};
-            rgb.hex = "#" + (16777216 | blue | (green << 8) | (red << 16)).toString(16).slice(1);
-            R.is(opacity, "finite") && (rgb.opacity = opacity);
-            return rgb;
-        }
-        return {r: -1, g: -1, b: -1, hex: "none", error: 1, toString: clrToString};
-    }, R);
-    
-    R.hsb = cacher(function (h, s, b) {
-        return R.hsb2rgb(h, s, b).hex;
-    });
-    
-    R.hsl = cacher(function (h, s, l) {
-        return R.hsl2rgb(h, s, l).hex;
-    });
-    
-    R.rgb = cacher(function (r, g, b) {
-        return "#" + (16777216 | b | (g << 8) | (r << 16)).toString(16).slice(1);
-    });
-    
-    R.getColor = function (value) {
-        var start = this.getColor.start = this.getColor.start || {h: 0, s: 1, b: value || .75},
-            rgb = this.hsb2rgb(start.h, start.s, start.b);
-        start.h += .075;
-        if (start.h > 1) {
-            start.h = 0;
-            start.s -= .2;
-            start.s <= 0 && (this.getColor.start = {h: 0, s: 1, b: start.b});
-        }
-        return rgb.hex;
-    };
-    
-    R.getColor.reset = function () {
-        delete this.start;
-    };
-
-    // http://schepers.cc/getting-to-the-point
-    function catmullRom2bezier(crp) {
-        var d = [];
-        for (var i = 0, iLen = crp.length; iLen - 2 > i; i += 2) {
-            var p = [{x: +crp[i],     y: +crp[i + 1]},
-                     {x: +crp[i],     y: +crp[i + 1]},
-                     {x: +crp[i + 2], y: +crp[i + 3]},
-                     {x: +crp[i + 4], y: +crp[i + 5]}];
-            if (iLen - 4 == i) {
-                p[0] = {x: +crp[i - 2], y: +crp[i - 1]};
-                p[3] = p[2];
-            } else if (i) {
-                p[0] = {x: +crp[i - 2], y: +crp[i - 1]};
-            }
-            d.push(["C",
-                (-p[0].x + 6 * p[1].x + p[2].x) / 6,
-                (-p[0].y + 6 * p[1].y + p[2].y) / 6,
-                (p[1].x + 6 * p[2].x - p[3].x) / 6,
-                (p[1].y + 6*p[2].y - p[3].y) / 6,
-                p[2].x,
-                p[2].y
-            ]);
-        }
-
-        return d;
-    }
-    
-    R.parsePathString = cacher(function (pathString) {
-        if (!pathString) {
-            return null;
-        }
-        var paramCounts = {a: 7, c: 6, h: 1, l: 2, m: 2, r: 4, q: 4, s: 4, t: 2, v: 1, z: 0},
-            data = [];
-        if (R.is(pathString, array) && R.is(pathString[0], array)) { // rough assumption
-            data = pathClone(pathString);
-        }
-        if (!data.length) {
-            Str(pathString).replace(pathCommand, function (a, b, c) {
-                var params = [],
-                    name = b.toLowerCase();
-                c.replace(pathValues, function (a, b) {
-                    b && params.push(+b);
-                });
-                if (name == "m" && params.length > 2) {
-                    data.push([b][concat](params.splice(0, 2)));
-                    name = "l";
-                    b = b == "m" ? "l" : "L";
-                }
-                if (name == "r") {
-                    data.push([b][concat](params));
-                } else while (params.length >= paramCounts[name]) {
-                    data.push([b][concat](params.splice(0, paramCounts[name])));
-                    if (!paramCounts[name]) {
-                        break;
-                    }
-                }
-            });
-        }
-        data.toString = R._path2string;
-        return data;
-    });
-    
-    R.parseTransformString = cacher(function (TString) {
-        if (!TString) {
-            return null;
-        }
-        var paramCounts = {r: 3, s: 4, t: 2, m: 6},
-            data = [];
-        if (R.is(TString, array) && R.is(TString[0], array)) { // rough assumption
-            data = pathClone(TString);
-        }
-        if (!data.length) {
-            Str(TString).replace(tCommand, function (a, b, c) {
-                var params = [],
-                    name = lowerCase.call(b);
-                c.replace(pathValues, function (a, b) {
-                    b && params.push(+b);
-                });
-                data.push([b][concat](params));
-            });
-        }
-        data.toString = R._path2string;
-        return data;
-    });
-    
-    R.findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {
-        var t1 = 1 - t,
-            t13 = pow(t1, 3),
-            t12 = pow(t1, 2),
-            t2 = t * t,
-            t3 = t2 * t,
-            x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x,
-            y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y,
-            mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x),
-            my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y),
-            nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x),
-            ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y),
-            ax = t1 * p1x + t * c1x,
-            ay = t1 * p1y + t * c1y,
-            cx = t1 * c2x + t * p2x,
-            cy = t1 * c2y + t * p2y,
-            alpha = (90 - math.atan2(mx - nx, my - ny) * 180 / PI);
-        (mx > nx || my < ny) && (alpha += 180);
-        return {
-            x: x,
-            y: y,
-            m: {x: mx, y: my},
-            n: {x: nx, y: ny},
-            start: {x: ax, y: ay},
-            end: {x: cx, y: cy},
-            alpha: alpha
-        };
-    };
-    var pathDimensions = cacher(function (path) {
-        if (!path) {
-            return {x: 0, y: 0, width: 0, height: 0};
-        }
-        path = path2curve(path);
-        var x = 0, 
-            y = 0,
-            X = [],
-            Y = [],
-            p;
-        for (var i = 0, ii = path.length; i < ii; i++) {
-            p = path[i];
-            if (p[0] == "M") {
-                x = p[1];
-                y = p[2];
-                X.push(x);
-                Y.push(y);
-            } else {
-                var dim = curveDim(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);
-                X = X[concat](dim.min.x, dim.max.x);
-                Y = Y[concat](dim.min.y, dim.max.y);
-                x = p[5];
-                y = p[6];
-            }
-        }
-        var xmin = mmin[apply](0, X),
-            ymin = mmin[apply](0, Y);
-        return {
-            x: xmin,
-            y: ymin,
-            width: mmax[apply](0, X) - xmin,
-            height: mmax[apply](0, Y) - ymin
-        };
-    }, null, function (o) {
-        return {
-            x: o.x,
-            y: o.y,
-            width: o.width,
-            height: o.height
-        };
-    }),
-        pathClone = function (pathArray) {
-            var res = [];
-            if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption
-                pathArray = R.parsePathString(pathArray);
-            }
-            for (var i = 0, ii = pathArray.length; i < ii; i++) {
-                res[i] = [];
-                for (var j = 0, jj = pathArray[i].length; j < jj; j++) {
-                    res[i][j] = pathArray[i][j];
-                }
-            }
-            res.toString = R._path2string;
-            return res;
-        },
-        pathToRelative = R._pathToRelative = cacher(function (pathArray) {
-            if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption
-                pathArray = R.parsePathString(pathArray);
-            }
-            var res = [],
-                x = 0,
-                y = 0,
-                mx = 0,
-                my = 0,
-                start = 0;
-            if (pathArray[0][0] == "M") {
-                x = pathArray[0][1];
-                y = pathArray[0][2];
-                mx = x;
-                my = y;
-                start++;
-                res.push(["M", x, y]);
-            }
-            for (var i = start, ii = pathArray.length; i < ii; i++) {
-                var r = res[i] = [],
-                    pa = pathArray[i];
-                if (pa[0] != lowerCase.call(pa[0])) {
-                    r[0] = lowerCase.call(pa[0]);
-                    switch (r[0]) {
-                        case "a":
-                            r[1] = pa[1];
-                            r[2] = pa[2];
-                            r[3] = pa[3];
-                            r[4] = pa[4];
-                            r[5] = pa[5];
-                            r[6] = +(pa[6] - x).toFixed(3);
-                            r[7] = +(pa[7] - y).toFixed(3);
-                            break;
-                        case "v":
-                            r[1] = +(pa[1] - y).toFixed(3);
-                            break;
-                        case "m":
-                            mx = pa[1];
-                            my = pa[2];
-                        default:
-                            for (var j = 1, jj = pa.length; j < jj; j++) {
-                                r[j] = +(pa[j] - ((j % 2) ? x : y)).toFixed(3);
-                            }
-                    }
-                } else {
-                    r = res[i] = [];
-                    if (pa[0] == "m") {
-                        mx = pa[1] + x;
-                        my = pa[2] + y;
-                    }
-                    for (var k = 0, kk = pa.length; k < kk; k++) {
-                        res[i][k] = pa[k];
-                    }
-                }
-                var len = res[i].length;
-                switch (res[i][0]) {
-                    case "z":
-                        x = mx;
-                        y = my;
-                        break;
-                    case "h":
-                        x += +res[i][len - 1];
-                        break;
-                    case "v":
-                        y += +res[i][len - 1];
-                        break;
-                    default:
-                        x += +res[i][len - 2];
-                        y += +res[i][len - 1];
-                }
-            }
-            res.toString = R._path2string;
-            return res;
-        }, 0, pathClone),
-        pathToAbsolute = R._pathToAbsolute = cacher(function (pathArray) {
-            if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption
-                pathArray = R.parsePathString(pathArray);
-            }
-            if (!pathArray || !pathArray.length) {
-                return [["M", 0, 0]];
-            }
-            var res = [],
-                x = 0,
-                y = 0,
-                mx = 0,
-                my = 0,
-                start = 0;
-            if (pathArray[0][0] == "M") {
-                x = +pathArray[0][1];
-                y = +pathArray[0][2];
-                mx = x;
-                my = y;
-                start++;
-                res[0] = ["M", x, y];
-            }
-            for (var r, pa, i = start, ii = pathArray.length; i < ii; i++) {
-                res.push(r = []);
-                pa = pathArray[i];
-                if (pa[0] != upperCase.call(pa[0])) {
-                    r[0] = upperCase.call(pa[0]);
-                    switch (r[0]) {
-                        case "A":
-                            r[1] = pa[1];
-                            r[2] = pa[2];
-                            r[3] = pa[3];
-                            r[4] = pa[4];
-                            r[5] = pa[5];
-                            r[6] = +(pa[6] + x);
-                            r[7] = +(pa[7] + y);
-                            break;
-                        case "V":
-                            r[1] = +pa[1] + y;
-                            break;
-                        case "H":
-                            r[1] = +pa[1] + x;
-                            break;
-                        case "R":
-                            var dots = [x, y][concat](pa.slice(1));
-                            for (var j = 2, jj = dots.length; j < jj; j++) {
-                                dots[j] = +dots[j] + x;
-                                dots[++j] = +dots[j] + y;
-                            }
-                            res.pop();
-                            res = res[concat](catmullRom2bezier(dots));
-                            break;
-                        case "M":
-                            mx = +pa[1] + x;
-                            my = +pa[2] + y;
-                        default:
-                            for (j = 1, jj = pa.length; j < jj; j++) {
-                                r[j] = +pa[j] + ((j % 2) ? x : y);
-                            }
-                    }
-                } else if (pa[0] == "R") {
-                    dots = [x, y][concat](pa.slice(1));
-                    res.pop();
-                    res = res[concat](catmullRom2bezier(dots));
-                    r = ["R"][concat](pa.slice(-2));
-                } else {
-                    for (var k = 0, kk = pa.length; k < kk; k++) {
-                        r[k] = pa[k];
-                    }
-                }
-                switch (r[0]) {
-                    case "Z":
-                        x = mx;
-                        y = my;
-                        break;
-                    case "H":
-                        x = r[1];
-                        break;
-                    case "V":
-                        y = r[1];
-                        break;
-                    case "M":
-                        mx = r[r.length - 2];
-                        my = r[r.length - 1];
-                    default:
-                        x = r[r.length - 2];
-                        y = r[r.length - 1];
-                }
-            }
-            res.toString = R._path2string;
-            return res;
-        }, null, pathClone),
-        l2c = function (x1, y1, x2, y2) {
-            return [x1, y1, x2, y2, x2, y2];
-        },
-        q2c = function (x1, y1, ax, ay, x2, y2) {
-            var _13 = 1 / 3,
-                _23 = 2 / 3;
-            return [
-                    _13 * x1 + _23 * ax,
-                    _13 * y1 + _23 * ay,
-                    _13 * x2 + _23 * ax,
-                    _13 * y2 + _23 * ay,
-                    x2,
-                    y2
-                ];
-        },
-        a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {
-            // for more information of where this math came from visit:
-            // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes
-            var _120 = PI * 120 / 180,
-                rad = PI / 180 * (+angle || 0),
-                res = [],
-                xy,
-                rotate = cacher(function (x, y, rad) {
-                    var X = x * math.cos(rad) - y * math.sin(rad),
-                        Y = x * math.sin(rad) + y * math.cos(rad);
-                    return {x: X, y: Y};
-                });
-            if (!recursive) {
-                xy = rotate(x1, y1, -rad);
-                x1 = xy.x;
-                y1 = xy.y;
-                xy = rotate(x2, y2, -rad);
-                x2 = xy.x;
-                y2 = xy.y;
-                var cos = math.cos(PI / 180 * angle),
-                    sin = math.sin(PI / 180 * angle),
-                    x = (x1 - x2) / 2,
-                    y = (y1 - y2) / 2;
-                var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);
-                if (h > 1) {
-                    h = math.sqrt(h);
-                    rx = h * rx;
-                    ry = h * ry;
-                }
-                var rx2 = rx * rx,
-                    ry2 = ry * ry,
-                    k = (large_arc_flag == sweep_flag ? -1 : 1) *
-                        math.sqrt(abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x))),
-                    cx = k * rx * y / ry + (x1 + x2) / 2,
-                    cy = k * -ry * x / rx + (y1 + y2) / 2,
-                    f1 = math.asin(((y1 - cy) / ry).toFixed(9)),
-                    f2 = math.asin(((y2 - cy) / ry).toFixed(9));
-
-                f1 = x1 < cx ? PI - f1 : f1;
-                f2 = x2 < cx ? PI - f2 : f2;
-                f1 < 0 && (f1 = PI * 2 + f1);
-                f2 < 0 && (f2 = PI * 2 + f2);
-                if (sweep_flag && f1 > f2) {
-                    f1 = f1 - PI * 2;
-                }
-                if (!sweep_flag && f2 > f1) {
-                    f2 = f2 - PI * 2;
-                }
-            } else {
-                f1 = recursive[0];
-                f2 = recursive[1];
-                cx = recursive[2];
-                cy = recursive[3];
-            }
-            var df = f2 - f1;
-            if (abs(df) > _120) {
-                var f2old = f2,
-                    x2old = x2,
-                    y2old = y2;
-                f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);
-                x2 = cx + rx * math.cos(f2);
-                y2 = cy + ry * math.sin(f2);
-                res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);
-            }
-            df = f2 - f1;
-            var c1 = math.cos(f1),
-                s1 = math.sin(f1),
-                c2 = math.cos(f2),
-                s2 = math.sin(f2),
-                t = math.tan(df / 4),
-                hx = 4 / 3 * rx * t,
-                hy = 4 / 3 * ry * t,
-                m1 = [x1, y1],
-                m2 = [x1 + hx * s1, y1 - hy * c1],
-                m3 = [x2 + hx * s2, y2 - hy * c2],
-                m4 = [x2, y2];
-            m2[0] = 2 * m1[0] - m2[0];
-            m2[1] = 2 * m1[1] - m2[1];
-            if (recursive) {
-                return [m2, m3, m4][concat](res);
-            } else {
-                res = [m2, m3, m4][concat](res).join()[split](",");
-                var newres = [];
-                for (var i = 0, ii = res.length; i < ii; i++) {
-                    newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;
-                }
-                return newres;
-            }
-        },
-        findDotAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {
-            var t1 = 1 - t;
-            return {
-                x: pow(t1, 3) * p1x + pow(t1, 2) * 3 * t * c1x + t1 * 3 * t * t * c2x + pow(t, 3) * p2x,
-                y: pow(t1, 3) * p1y + pow(t1, 2) * 3 * t * c1y + t1 * 3 * t * t * c2y + pow(t, 3) * p2y
-            };
-        },
-        curveDim = cacher(function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {
-            var a = (c2x - 2 * c1x + p1x) - (p2x - 2 * c2x + c1x),
-                b = 2 * (c1x - p1x) - 2 * (c2x - c1x),
-                c = p1x - c1x,
-                t1 = (-b + math.sqrt(b * b - 4 * a * c)) / 2 / a,
-                t2 = (-b - math.sqrt(b * b - 4 * a * c)) / 2 / a,
-                y = [p1y, p2y],
-                x = [p1x, p2x],
-                dot;
-            abs(t1) > "1e12" && (t1 = .5);
-            abs(t2) > "1e12" && (t2 = .5);
-            if (t1 > 0 && t1 < 1) {
-                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1);
-                x.push(dot.x);
-                y.push(dot.y);
-            }
-            if (t2 > 0 && t2 < 1) {
-                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t2);
-                x.push(dot.x);
-                y.push(dot.y);
-            }
-            a = (c2y - 2 * c1y + p1y) - (p2y - 2 * c2y + c1y);
-            b = 2 * (c1y - p1y) - 2 * (c2y - c1y);
-            c = p1y - c1y;
-            t1 = (-b + math.sqrt(b * b - 4 * a * c)) / 2 / a;
-            t2 = (-b - math.sqrt(b * b - 4 * a * c)) / 2 / a;
-            abs(t1) > "1e12" && (t1 = .5);
-            abs(t2) > "1e12" && (t2 = .5);
-            if (t1 > 0 && t1 < 1) {
-                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1);
-                x.push(dot.x);
-                y.push(dot.y);
-            }
-            if (t2 > 0 && t2 < 1) {
-                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t2);
-                x.push(dot.x);
-                y.push(dot.y);
-            }
-            return {
-                min: {x: mmin[apply](0, x), y: mmin[apply](0, y)},
-                max: {x: mmax[apply](0, x), y: mmax[apply](0, y)}
-            };
-        }),
-        path2curve = R._path2curve = cacher(function (path, path2) {
-            var p = pathToAbsolute(path),
-                p2 = path2 && pathToAbsolute(path2),
-                attrs = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},
-                attrs2 = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},
-                processPath = function (path, d) {
-                    var nx, ny;
-                    if (!path) {
-                        return ["C", d.x, d.y, d.x, d.y, d.x, d.y];
-                    }
-                    !(path[0] in {T:1, Q:1}) && (d.qx = d.qy = null);
-                    switch (path[0]) {
-                        case "M":
-                            d.X = path[1];
-                            d.Y = path[2];
-                            break;
-                        case "A":
-                            path = ["C"][concat](a2c[apply](0, [d.x, d.y][concat](path.slice(1))));
-                            break;
-                        case "S":
-                            nx = d.x + (d.x - (d.bx || d.x));
-                            ny = d.y + (d.y - (d.by || d.y));
-                            path = ["C", nx, ny][concat](path.slice(1));
-                            break;
-                        case "T":
-                            d.qx = d.x + (d.x - (d.qx || d.x));
-                            d.qy = d.y + (d.y - (d.qy || d.y));
-                            path = ["C"][concat](q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));
-                            break;
-                        case "Q":
-                            d.qx = path[1];
-                            d.qy = path[2];
-                            path = ["C"][concat](q2c(d.x, d.y, path[1], path[2], path[3], path[4]));
-                            break;
-                        case "L":
-                            path = ["C"][concat](l2c(d.x, d.y, path[1], path[2]));
-                            break;
-                        case "H":
-                            path = ["C"][concat](l2c(d.x, d.y, path[1], d.y));
-                            break;
-                        case "V":
-                            path = ["C"][concat](l2c(d.x, d.y, d.x, path[1]));
-                            break;
-                        case "Z":
-                            path = ["C"][concat](l2c(d.x, d.y, d.X, d.Y));
-                            break;
-                    }
-                    return path;
-                },
-                fixArc = function (pp, i) {
-                    if (pp[i].length > 7) {
-                        pp[i].shift();
-                        var pi = pp[i];
-                        while (pi.length) {
-                            pp.splice(i++, 0, ["C"][concat](pi.splice(0, 6)));
-                        }
-                        pp.splice(i, 1);
-                        ii = mmax(p.length, p2 && p2.length || 0);
-                    }
-                },
-                fixM = function (path1, path2, a1, a2, i) {
-                    if (path1 && path2 && path1[i][0] == "M" && path2[i][0] != "M") {
-                        path2.splice(i, 0, ["M", a2.x, a2.y]);
-                        a1.bx = 0;
-                        a1.by = 0;
-                        a1.x = path1[i][1];
-                        a1.y = path1[i][2];
-                        ii = mmax(p.length, p2 && p2.length || 0);
-                    }
-                };
-            for (var i = 0, ii = mmax(p.length, p2 && p2.length || 0); i < ii; i++) {
-                p[i] = processPath(p[i], attrs);
-                fixArc(p, i);
-                p2 && (p2[i] = processPath(p2[i], attrs2));
-                p2 && fixArc(p2, i);
-                fixM(p, p2, attrs, attrs2, i);
-                fixM(p2, p, attrs2, attrs, i);
-                var seg = p[i],
-                    seg2 = p2 && p2[i],
-                    seglen = seg.length,
-                    seg2len = p2 && seg2.length;
-                attrs.x = seg[seglen - 2];
-                attrs.y = seg[seglen - 1];
-                attrs.bx = toFloat(seg[seglen - 4]) || attrs.x;
-                attrs.by = toFloat(seg[seglen - 3]) || attrs.y;
-                attrs2.bx = p2 && (toFloat(seg2[seg2len - 4]) || attrs2.x);
-                attrs2.by = p2 && (toFloat(seg2[seg2len - 3]) || attrs2.y);
-                attrs2.x = p2 && seg2[seg2len - 2];
-                attrs2.y = p2 && seg2[seg2len - 1];
-            }
-            return p2 ? [p, p2] : p;
-        }, null, pathClone),
-        parseDots = R._parseDots = cacher(function (gradient) {
-            var dots = [];
-            for (var i = 0, ii = gradient.length; i < ii; i++) {
-                var dot = {},
-                    par = gradient[i].match(/^([^:]*):?([\d\.]*)/);
-                dot.color = R.getRGB(par[1]);
-                if (dot.color.error) {
-                    return null;
-                }
-                dot.color = dot.color.hex;
-                par[2] && (dot.offset = par[2] + "%");
-                dots.push(dot);
-            }
-            for (i = 1, ii = dots.length - 1; i < ii; i++) {
-                if (!dots[i].offset) {
-                    var start = toFloat(dots[i - 1].offset || 0),
-                        end = 0;
-                    for (var j = i + 1; j < ii; j++) {
-                        if (dots[j].offset) {
-                            end = dots[j].offset;
-                            break;
-                        }
-                    }
-                    if (!end) {
-                        end = 100;
-                        j = ii;
-                    }
-                    end = toFloat(end);
-                    var d = (end - start) / (j - i + 1);
-                    for (; i < j; i++) {
-                        start += d;
-                        dots[i].offset = start + "%";
-                    }
-                }
-            }
-            return dots;
-        }),
-        tear = R._tear = function (el, paper) {
-            el == paper.top && (paper.top = el.prev);
-            el == paper.bottom && (paper.bottom = el.next);
-            el.next && (el.next.prev = el.prev);
-            el.prev && (el.prev.next = el.next);
-        },
-        tofront = R._tofront = function (el, paper) {
-            if (paper.top === el) {
-                return;
-            }
-            tear(el, paper);
-            el.next = null;
-            el.prev = paper.top;
-            paper.top.next = el;
-            paper.top = el;
-        },
-        toback = R._toback = function (el, paper) {
-            if (paper.bottom === el) {
-                return;
-            }
-            tear(el, paper);
-            el.next = paper.bottom;
-            el.prev = null;
-            paper.bottom.prev = el;
-            paper.bottom = el;
-        },
-        insertafter = R._insertafter = function (el, el2, paper) {
-            tear(el, paper);
-            el2 == paper.top && (paper.top = el);
-            el2.next && (el2.next.prev = el);
-            el.next = el2.next;
-            el.prev = el2;
-            el2.next = el;
-        },
-        insertbefore = R._insertbefore = function (el, el2, paper) {
-            tear(el, paper);
-            el2 == paper.bottom && (paper.bottom = el);
-            el2.prev && (el2.prev.next = el);
-            el.prev = el2.prev;
-            el2.prev = el;
-            el.next = el2;
-        },
-        removed = function (methodname) {
-            return function () {
-                throw new Error("Rapha\xebl: you are calling to method \u201c" + methodname + "\u201d of removed object");
-            };
-        },
-        extractTransform = R._extractTransform = function (el, tstr) {
-            if (tstr == null) {
-                return el._.transform;
-            }
-            tstr = Str(tstr).replace(/\.{3}|\u2026/g, el._.transform || E);
-            var tdata = R.parseTransformString(tstr),
-                deg = 0,
-                dx = 0,
-                dy = 0,
-                sx = 1,
-                sy = 1,
-                _ = el._,
-                m = new Matrix;
-            _.transform = tdata || [];
-            if (tdata) {
-                for (var i = 0, ii = tdata.length; i < ii; i++) {
-                    var t = tdata[i],
-                        tlen = t.length,
-                        command = Str(t[0]).toLowerCase(),
-                        absolute = t[0] != command,
-                        inver = absolute ? m.invert() : 0,
-                        x1,
-                        y1,
-                        x2,
-                        y2,
-                        bb;
-                    if (command == "t" && tlen == 3) {
-                        if (absolute) {
-                            x1 = inver.x(0, 0);
-                            y1 = inver.y(0, 0);
-                            x2 = inver.x(t[1], t[2]);
-                            y2 = inver.y(t[1], t[2]);
-                            m.translate(x2 - x1, y2 - y1);
-                        } else {
-                            m.translate(t[1], t[2]);
-                        }
-                    } else if (command == "r") {
-                        if (tlen == 2) {
-                            bb = bb || el.getBBox(1);
-                            m.rotate(t[1], bb.x + bb.width / 2, bb.y + bb.height / 2);
-                            deg += t[1];
-                        } else if (tlen == 4) {
-                            if (absolute) {
-                                x2 = inver.x(t[2], t[3]);
-                                y2 = inver.y(t[2], t[3]);
-                                m.rotate(t[1], x2, y2);
-                            } else {
-                                m.rotate(t[1], t[2], t[3]);
-                            }
-                            deg += t[1];
-                        }
-                    } else if (command == "s") {
-                        if (tlen == 2 || tlen == 3) {
-                            bb = bb || el.getBBox(1);
-                            m.scale(t[1], t[tlen - 1], bb.x + bb.width / 2, bb.y + bb.height / 2);
-                            sx *= t[1];
-                            sy *= t[tlen - 1];
-                        } else if (tlen == 5) {
-                            if (absolute) {
-                                x2 = inver.x(t[3], t[4]);
-                                y2 = inver.y(t[3], t[4]);
-                                m.scale(t[1], t[2], x2, y2);
-                            } else {
-                                m.scale(t[1], t[2], t[3], t[4]);
-                            }
-                            sx *= t[1];
-                            sy *= t[2];
-                        }
-                    } else if (command == "m" && tlen == 7) {
-                        m.add(t[1], t[2], t[3], t[4], t[5], t[6]);
-                    }
-                    _.dirtyT = 1;
-                    el.matrix = m;
-                }
-            }
-
-            el.matrix = m;
-
-            _.sx = sx;
-            _.sy = sy;
-            _.deg = deg;
-            _.dx = dx = m.e;
-            _.dy = dy = m.f;
-
-            if (sx == 1 && sy == 1 && !deg && _.bbox) {
-                _.bbox.x += +dx;
-                _.bbox.y += +dy;
-            } else {
-                _.dirtyT = 1;
-            }
-        },
-        getEmpty = function (item) {
-            var l = item[0];
-            switch (l.toLowerCase()) {
-                case "t": return [l, 0, 0];
-                case "m": return [l, 1, 0, 0, 1, 0, 0];
-                case "r": if (item.length == 4) {
-                    return [l, 0, item[2], item[3]];
-                } else {
-                    return [l, 0];
-                }
-                case "s": if (item.length == 5) {
-                    return [l, 1, 1, item[3], item[4]];
-                } else if (item.length == 3) {
-                    return [l, 1, 1];
-                } else {
-                    return [l, 1];
-                }
-            }
-        },
-        equaliseTransform = R._equaliseTransform = function (t1, t2) {
-            t2 = Str(t2).replace(/\.{3}|\u2026/g, t1);
-            t1 = R.parseTransformString(t1) || [];
-            t2 = R.parseTransformString(t2) || [];
-            var maxlength = mmax(t1.length, t2.length),
-                from = [],
-                to = [],
-                i = 0, j, jj,
-                tt1, tt2;
-            for (; i < maxlength; i++) {
-                tt1 = t1[i] || getEmpty(t2[i]);
-                tt2 = t2[i] || getEmpty(tt1);
-                if ((tt1[0] != tt2[0]) ||
-                    (tt1[0].toLowerCase() == "r" && (tt1[2] != tt2[2] || tt1[3] != tt2[3])) ||
-                    (tt1[0].toLowerCase() == "s" && (tt1[3] != tt2[3] || tt1[4] != tt2[4]))
-                    ) {
-                    return;
-                }
-                from[i] = [];
-                to[i] = [];
-                for (j = 0, jj = mmax(tt1.length, tt2.length); j < jj; j++) {
-                    j in tt1 && (from[i][j] = tt1[j]);
-                    j in tt2 && (to[i][j] = tt2[j]);
-                }
-            }
-            return {
-                from: from,
-                to: to
-            };
-        };
-    R._getContainer = function (x, y, w, h) {
-        var container;
-        container = h == null && !R.is(x, "object") ? g.doc.getElementById(x) : x;
-        if (container == null) {
-            return;
-        }
-        if (container.tagName) {
-            if (y == null) {
-                return {
-                    container: container,
-                    width: container.style.pixelWidth || container.offsetWidth,
-                    height: container.style.pixelHeight || container.offsetHeight
-                };
-            } else {
-                return {
-                    container: container,
-                    width: y,
-                    height: w
-                };
-            }
-        }
-        return {
-            container: 1,
-            x: x,
-            y: y,
-            width: w,
-            height: h
-        };
-    };
-    
-    R.pathToRelative = pathToRelative;
-    R._engine = {};
-    
-    R.path2curve = path2curve;
-    
-    R.matrix = function (a, b, c, d, e, f) {
-        return new Matrix(a, b, c, d, e, f);
-    };
-    function Matrix(a, b, c, d, e, f) {
-        if (a != null) {
-            this.a = +a;
-            this.b = +b;
-            this.c = +c;
-            this.d = +d;
-            this.e = +e;
-            this.f = +f;
-        } else {
-            this.a = 1;
-            this.b = 0;
-            this.c = 0;
-            this.d = 1;
-            this.e = 0;
-            this.f = 0;
-        }
-    }
-    (function (matrixproto) {
-        
-        matrixproto.add = function (a, b, c, d, e, f) {
-            var out = [[], [], []],
-                m = [[this.a, this.c, this.e], [this.b, this.d, this.f], [0, 0, 1]],
-                matrix = [[a, c, e], [b, d, f], [0, 0, 1]],
-                x, y, z, res;
-
-            if (a && a instanceof Matrix) {
-                matrix = [[a.a, a.c, a.e], [a.b, a.d, a.f], [0, 0, 1]];
-            }
-
-            for (x = 0; x < 3; x++) {
-                for (y = 0; y < 3; y++) {
-                    res = 0;
-                    for (z = 0; z < 3; z++) {
-                        res += m[x][z] * matrix[z][y];
-                    }
-                    out[x][y] = res;
-                }
-            }
-            this.a = out[0][0];
-            this.b = out[1][0];
-            this.c = out[0][1];
-            this.d = out[1][1];
-            this.e = out[0][2];
-            this.f = out[1][2];
-        };
-        
-        matrixproto.invert = function () {
-            var me = this,
-                x = me.a * me.d - me.b * me.c;
-            return new Matrix(me.d / x, -me.b / x, -me.c / x, me.a / x, (me.c * me.f - me.d * me.e) / x, (me.b * me.e - me.a * me.f) / x);
-        };
-        
-        matrixproto.clone = function () {
-            return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);
-        };
-        
-        matrixproto.translate = function (x, y) {
-            this.add(1, 0, 0, 1, x, y);
-        };
-        
-        matrixproto.scale = function (x, y, cx, cy) {
-            y == null && (y = x);
-            (cx || cy) && this.add(1, 0, 0, 1, cx, cy);
-            this.add(x, 0, 0, y, 0, 0);
-            (cx || cy) && this.add(1, 0, 0, 1, -cx, -cy);
-        };
-        
-        matrixproto.rotate = function (a, x, y) {
-            a = R.rad(a);
-            x = x || 0;
-            y = y || 0;
-            var cos = +math.cos(a).toFixed(9),
-                sin = +math.sin(a).toFixed(9);
-            this.add(cos, sin, -sin, cos, x, y);
-            this.add(1, 0, 0, 1, -x, -y);
-        };
-        
-        matrixproto.x = function (x, y) {
-            return x * this.a + y * this.c + this.e;
-        };
-        
-        matrixproto.y = function (x, y) {
-            return x * this.b + y * this.d + this.f;
-        };
-        matrixproto.get = function (i) {
-            return +this[Str.fromCharCode(97 + i)].toFixed(4);
-        };
-        matrixproto.toString = function () {
-            return R.svg ?
-                "matrix(" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() + ")" :
-                [this.get(0), this.get(2), this.get(1), this.get(3), 0, 0].join();
-        };
-        matrixproto.toFilter = function () {
-            return "progid:DXImageTransform.Microsoft.Matrix(M11=" + this.get(0) +
-                ", M12=" + this.get(2) + ", M21=" + this.get(1) + ", M22=" + this.get(3) +
-                ", Dx=" + this.get(4) + ", Dy=" + this.get(5) + ", sizingmethod='auto expand')";
-        };
-        matrixproto.offset = function () {
-            return [this.e.toFixed(4), this.f.toFixed(4)];
-        };
-        function norm(a) {
-            return a[0] * a[0] + a[1] * a[1];
-        }
-        function normalize(a) {
-            var mag = math.sqrt(norm(a));
-            a[0] && (a[0] /= mag);
-            a[1] && (a[1] /= mag);
-        }
-        
-        matrixproto.split = function () {
-            var out = {};
-            // translation
-            out.dx = this.e;
-            out.dy = this.f;
-
-            // scale and shear
-            var row = [[this.a, this.c], [this.b, this.d]];
-            out.scalex = math.sqrt(norm(row[0]));
-            normalize(row[0]);
-
-            out.shear = row[0][0] * row[1][0] + row[0][1] * row[1][1];
-            row[1] = [row[1][0] - row[0][0] * out.shear, row[1][1] - row[0][1] * out.shear];
-
-            out.scaley = math.sqrt(norm(row[1]));
-            normalize(row[1]);
-            out.shear /= out.scaley;
-
-            // rotation
-            var sin = -row[0][1],
-                cos = row[1][1];
-            if (cos < 0) {
-                out.rotate = R.deg(math.acos(cos));
-                if (sin < 0) {
-                    out.rotate = 360 - out.rotate;
-                }
-            } else {
-                out.rotate = R.deg(math.asin(sin));
-            }
-
-            out.isSimple = !+out.shear.toFixed(9) && (out.scalex.toFixed(9) == out.scaley.toFixed(9) || !out.rotate);
-            out.isSuperSimple = !+out.shear.toFixed(9) && out.scalex.toFixed(9) == out.scaley.toFixed(9) && !out.rotate;
-            out.noRotation = !+out.shear.toFixed(9) && !out.rotate;
-            return out;
-        };
-        
-        matrixproto.toTransformString = function (shorter) {
-            var s = shorter || this[split]();
-            if (s.isSimple) {
-                return "t" + [s.dx, s.dy] + "s" + [s.scalex, s.scaley, 0, 0] + "r" + [s.rotate, 0, 0];
-            } else {
-                return "m" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)];
-            }
-        };
-    })(Matrix.prototype);
-
-    // WebKit rendering bug workaround method
-    var version = navigator.userAgent.match(/Version\/(.*?)\s/) || navigator.userAgent.match(/Chrome\/(\d+)/);
-    if ((navigator.vendor == "Apple Computer, Inc.") && (version && version[1] < 4 || navigator.platform.slice(0, 2) == "iP") ||
-        (navigator.vendor == "Google Inc." && version && version[1] < 8)) {
-        
-        paperproto.safari = function () {
-            var rect = this.rect(-99, -99, this.width + 99, this.height + 99).attr({stroke: "none"});
-            setTimeout(function () {rect.remove();});
-        };
-    } else {
-        paperproto.safari = fun;
-    }
- 
-    var preventDefault = function () {
-        this.returnValue = false;
-    },
-    preventTouch = function () {
-        return this.originalEvent.preventDefault();
-    },
-    stopPropagation = function () {
-        this.cancelBubble = true;
-    },
-    stopTouch = function () {
-        return this.originalEvent.stopPropagation();
-    },
-    addEvent = (function () {
-        if (g.doc.addEventListener) {
-            return function (obj, type, fn, element) {
-                var realName = supportsTouch && touchMap[type] ? touchMap[type] : type,
-                    f = function (e) {
-                        var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,
-                            scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,
-                            x = e.clientX + scrollX,
-                            y = e.clientY + scrollY;
-                    if (supportsTouch && touchMap[has](type)) {
-                        for (var i = 0, ii = e.targetTouches && e.targetTouches.length; i < ii; i++) {
-                            if (e.targetTouches[i].target == obj) {
-                                var olde = e;
-                                e = e.targetTouches[i];
-                                e.originalEvent = olde;
-                                e.preventDefault = preventTouch;
-                                e.stopPropagation = stopTouch;
-                                break;
-                            }
-                        }
-                    }
-                    return fn.call(element, e, x, y);
-                };
-                obj.addEventListener(realName, f, false);
-                return function () {
-                    obj.removeEventListener(realName, f, false);
-                    return true;
-                };
-            };
-        } else if (g.doc.attachEvent) {
-            return function (obj, type, fn, element) {
-                var f = function (e) {
-                    e = e || g.win.event;
-                    var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,
-                        scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,
-                        x = e.clientX + scrollX,
-                        y = e.clientY + scrollY;
-                    e.preventDefault = e.preventDefault || preventDefault;
-                    e.stopPropagation = e.stopPropagation || stopPropagation;
-                    return fn.call(element, e, x, y);
-                };
-                obj.attachEvent("on" + type, f);
-                var detacher = function () {
-                    obj.detachEvent("on" + type, f);
-                    return true;
-                };
-                return detacher;
-            };
-        }
-    })(),
-    drag = [],
-    dragMove = function (e) {
-        var x = e.clientX,
-            y = e.clientY,
-            scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,
-            scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,
-            dragi,
-            j = drag.length;
-        while (j--) {
-            dragi = drag[j];
-            if (supportsTouch) {
-                var i = e.touches.length,
-                    touch;
-                while (i--) {
-                    touch = e.touches[i];
-                    if (touch.identifier == dragi.el._drag.id) {
-                        x = touch.clientX;
-                        y = touch.clientY;
-                        (e.originalEvent ? e.originalEvent : e).preventDefault();
-                        break;
-                    }
-                }
-            } else {
-                e.preventDefault();
-            }
-            var node = dragi.el.node,
-                o,
-                next = node.nextSibling,
-                parent = node.parentNode,
-                display = node.style.display;
-            g.win.opera && parent.removeChild(node);
-            node.style.display = "none";
-            o = dragi.el.paper.getElementByPoint(x, y);
-            node.style.display = display;
-            g.win.opera && (next ? parent.insertBefore(node, next) : parent.appendChild(node));
-            o && eve("drag.over." + dragi.el.id, dragi.el, o);
-            x += scrollX;
-            y += scrollY;
-            eve("drag.move." + dragi.el.id, dragi.move_scope || dragi.el, x - dragi.el._drag.x, y - dragi.el._drag.y, x, y, e);
-        }
-    },
-    dragUp = function (e) {
-        R.unmousemove(dragMove).unmouseup(dragUp);
-        var i = drag.length,
-            dragi;
-        while (i--) {
-            dragi = drag[i];
-            dragi.el._drag = {};
-            eve("drag.end." + dragi.el.id, dragi.end_scope || dragi.start_scope || dragi.move_scope || dragi.el, e);
-        }
-        drag = [];
-    },
-    
-    elproto = R.el = {};
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    for (var i = events.length; i--;) {
-        (function (eventName) {
-            R[eventName] = elproto[eventName] = function (fn, scope) {
-                if (R.is(fn, "function")) {
-                    this.events = this.events || [];
-                    this.events.push({name: eventName, f: fn, unbind: addEvent(this.shape || this.node || g.doc, eventName, fn, scope || this)});
-                }
-                return this;
-            };
-            R["un" + eventName] = elproto["un" + eventName] = function (fn) {
-                var events = this.events,
-                    l = events.length;
-                while (l--) if (events[l].name == eventName && events[l].f == fn) {
-                    events[l].unbind();
-                    events.splice(l, 1);
-                    !events.length && delete this.events;
-                    return this;
-                }
-                return this;
-            };
-        })(events[i]);
-    }
-    
-    
-    elproto.data = function (key, value) {
-        var data = eldata[this.id] = eldata[this.id] || {};
-        if (arguments.length == 1) {
-            if (R.is(key, "object")) {
-                for (var i in key) if (key[has](i)) {
-                    this.data(i, key[i]);
-                }
-                return this;
-            }
-            eve("data.get." + this.id, this, data[key], key);
-            return data[key];
-        }
-        data[key] = value;
-        eve("data.set." + this.id, this, value, key);
-        return this;
-    };
-    
-    elproto.removeData = function (key) {
-        if (key == null) {
-            eldata[this.id] = {};
-        } else {
-            eldata[this.id] && delete eldata[this.id][key];
-        }
-        return this;
-    };
-    
-    elproto.hover = function (f_in, f_out, scope_in, scope_out) {
-        return this.mouseover(f_in, scope_in).mouseout(f_out, scope_out || scope_in);
-    };
-    
-    elproto.unhover = function (f_in, f_out) {
-        return this.unmouseover(f_in).unmouseout(f_out);
-    };
-    
-    elproto.drag = function (onmove, onstart, onend, move_scope, start_scope, end_scope) {
-        function start(e) {
-            (e.originalEvent || e).preventDefault();
-            var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,
-                scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft;
-            this._drag.x = e.clientX + scrollX;
-            this._drag.y = e.clientY + scrollY;
-            this._drag.id = e.identifier;
-            !drag.length && R.mousemove(dragMove).mouseup(dragUp);
-            drag.push({el: this, move_scope: move_scope, start_scope: start_scope, end_scope: end_scope});
-            onstart && eve.on("drag.start." + this.id, onstart);
-            onmove && eve.on("drag.move." + this.id, onmove);
-            onend && eve.on("drag.end." + this.id, onend);
-            eve("drag.start." + this.id, start_scope || move_scope || this, e.clientX + scrollX, e.clientY + scrollY, e);
-        }
-        this._drag = {};
-        this.mousedown(start);
-        return this;
-    };
-    
-    elproto.onDragOver = function (f) {
-        f ? eve.on("drag.over." + this.id, f) : eve.unbind("drag.over." + this.id);
-    };
-    
-    elproto.undrag = function () {
-        var i = drag.length;
-        while (i--) if (drag[i].el == this) {
-            R.unmousedown(drag[i].start);
-            drag.splice(i++, 1);
-            eve.unbind("drag.*." + this.id);
-        }
-        !drag.length && R.unmousemove(dragMove).unmouseup(dragUp);
-    };
-    
-    paperproto.circle = function (x, y, r) {
-        var out = R._engine.circle(this, x || 0, y || 0, r || 0);
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.rect = function (x, y, w, h, r) {
-        var out = R._engine.rect(this, x || 0, y || 0, w || 0, h || 0, r || 0);
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.ellipse = function (x, y, rx, ry) {
-        var out = R._engine.ellipse(this, x || 0, y || 0, rx || 0, ry || 0);
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.path = function (pathString) {
-        pathString && !R.is(pathString, string) && !R.is(pathString[0], array) && (pathString += E);
-        var out = R._engine.path(R.format[apply](R, arguments), this);
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.image = function (src, x, y, w, h) {
-        var out = R._engine.image(this, src || "about:blank", x || 0, y || 0, w || 0, h || 0);
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.text = function (x, y, text) {
-        var out = R._engine.text(this, x || 0, y || 0, Str(text));
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.set = function (itemsArray) {
-        !R.is(itemsArray, "array") && (itemsArray = Array.prototype.splice.call(arguments, 0, arguments.length));
-        var out = new Set(itemsArray);
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    paperproto.setStart = function (set) {
-        this.__set__ = set || this.set();
-    };
-    
-    paperproto.setFinish = function (set) {
-        var out = this.__set__;
-        delete this.__set__;
-        return out;
-    };
-    
-    paperproto.setSize = function (width, height) {
-        return R._engine.setSize.call(this, width, height);
-    };
-    
-    paperproto.setViewBox = function (x, y, w, h, fit) {
-        return R._engine.setViewBox.call(this, x, y, w, h, fit);
-    };
-    
-    
-    paperproto.top = paperproto.bottom = null;
-    
-    paperproto.raphael = R;
-    var getOffset = function (elem) {
-        var box = elem.getBoundingClientRect(),
-            doc = elem.ownerDocument,
-            body = doc.body,
-            docElem = doc.documentElement,
-            clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
-            top  = box.top  + (g.win.pageYOffset || docElem.scrollTop || body.scrollTop ) - clientTop,
-            left = box.left + (g.win.pageXOffset || docElem.scrollLeft || body.scrollLeft) - clientLeft;
-        return {
-            y: top,
-            x: left
-        };
-    };
-    
-    paperproto.getElementByPoint = function (x, y) {
-        var paper = this,
-            svg = paper.canvas,
-            target = g.doc.elementFromPoint(x, y);
-        if (g.win.opera && target.tagName == "svg") {
-            var so = getOffset(svg),
-                sr = svg.createSVGRect();
-            sr.x = x - so.x;
-            sr.y = y - so.y;
-            sr.width = sr.height = 1;
-            var hits = svg.getIntersectionList(sr, null);
-            if (hits.length) {
-                target = hits[hits.length - 1];
-            }
-        }
-        if (!target) {
-            return null;
-        }
-        while (target.parentNode && target != svg.parentNode && !target.raphael) {
-            target = target.parentNode;
-        }
-        target == paper.canvas.parentNode && (target = svg);
-        target = target && target.raphael ? paper.getById(target.raphaelid) : null;
-        return target;
-    };
-    
-    paperproto.getById = function (id) {
-        var bot = this.bottom;
-        while (bot) {
-            if (bot.id == id) {
-                return bot;
-            }
-            bot = bot.next;
-        }
-        return null;
-    };
-    
-    paperproto.forEach = function (callback, thisArg) {
-        var bot = this.bottom;
-        while (bot) {
-            if (callback.call(thisArg, bot) === false) {
-                return this;
-            }
-            bot = bot.next;
-        }
-        return this;
-    };
-    function x_y() {
-        return this.x + S + this.y;
-    }
-    function x_y_w_h() {
-        return this.x + S + this.y + S + this.width + " \xd7 " + this.height;
-    }
-    
-    elproto.getBBox = function (isWithoutTransform) {
-        if (this.removed) {
-            return {};
-        }
-        var _ = this._;
-        if (isWithoutTransform) {
-            if (_.dirty || !_.bboxwt) {
-                this.realPath = getPath[this.type](this);
-                _.bboxwt = pathDimensions(this.realPath);
-                _.bboxwt.toString = x_y_w_h;
-                _.dirty = 0;
-            }
-            return _.bboxwt;
-        }
-        if (_.dirty || _.dirtyT || !_.bbox) {
-            if (_.dirty || !this.realPath) {
-                _.bboxwt = 0;
-                this.realPath = getPath[this.type](this);
-            }
-            _.bbox = pathDimensions(mapPath(this.realPath, this.matrix));
-            _.bbox.toString = x_y_w_h;
-            _.dirty = _.dirtyT = 0;
-        }
-        return _.bbox;
-    };
-    
-    elproto.clone = function () {
-        if (this.removed) {
-            return null;
-        }
-        var out = this.paper[this.type]().attr(this.attr());
-        this.__set__ && this.__set__.push(out);
-        return out;
-    };
-    
-    elproto.glow = function (glow) {
-        if (this.type == "text") {
-            return null;
-        }
-        glow = glow || {};
-        var s = {
-            width: (glow.width || 10) + (+this.attr("stroke-width") || 1),
-            fill: glow.fill || false,
-            opacity: glow.opacity || .5,
-            offsetx: glow.offsetx || 0,
-            offsety: glow.offsety || 0,
-            color: glow.color || "#000"
-        },
-            c = s.width / 2,
-            r = this.paper,
-            out = r.set(),
-            path = this.realPath || getPath[this.type](this);
-        path = this.matrix ? mapPath(path, this.matrix) : path;
-        for (var i = 1; i < c + 1; i++) {
-            out.push(r.path(path).attr({
-                stroke: s.color,
-                fill: s.fill ? s.color : "none",
-                "stroke-linejoin": "round",
-                "stroke-linecap": "round",
-                "stroke-width": +(s.width / c * i).toFixed(3),
-                opacity: +(s.opacity / c).toFixed(3)
-            }));
-        }
-        return out.insertBefore(this).translate(s.offsetx, s.offsety);
-    };
-    var curveslengths = {},
-    getPointAtSegmentLength = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, length) {
-        var len = 0,
-            precision = 100,
-            name = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y].join(),
-            cache = curveslengths[name],
-            old, dot;
-        !cache && (curveslengths[name] = cache = {data: []});
-        cache.timer && clearTimeout(cache.timer);
-        cache.timer = setTimeout(function () {delete curveslengths[name];}, 2e3);
-        if (length != null && !cache.precision) {
-            var total = getPointAtSegmentLength(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y);
-            cache.precision = ~~total * 10;
-            cache.data = [];
-        }
-        precision = cache.precision || precision;
-        for (var i = 0; i < precision + 1; i++) {
-            if (cache.data[i * precision]) {
-                dot = cache.data[i * precision];
-            } else {
-                dot = R.findDotsAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, i / precision);
-                cache.data[i * precision] = dot;
-            }
-            i && (len += pow(pow(old.x - dot.x, 2) + pow(old.y - dot.y, 2), .5));
-            if (length != null && len >= length) {
-                return dot;
-            }
-            old = dot;
-        }
-        if (length == null) {
-            return len;
-        }
-    },
-    getLengthFactory = function (istotal, subpath) {
-        return function (path, length, onlystart) {
-            path = path2curve(path);
-            var x, y, p, l, sp = "", subpaths = {}, point,
-                len = 0;
-            for (var i = 0, ii = path.length; i < ii; i++) {
-                p = path[i];
-                if (p[0] == "M") {
-                    x = +p[1];
-                    y = +p[2];
-                } else {
-                    l = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);
-                    if (len + l > length) {
-                        if (subpath && !subpaths.start) {
-                            point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);
-                            sp += ["C" + point.start.x, point.start.y, point.m.x, point.m.y, point.x, point.y];
-                            if (onlystart) {return sp;}
-                            subpaths.start = sp;
-                            sp = ["M" + point.x, point.y + "C" + point.n.x, point.n.y, point.end.x, point.end.y, p[5], p[6]].join();
-                            len += l;
-                            x = +p[5];
-                            y = +p[6];
-                            continue;
-                        }
-                        if (!istotal && !subpath) {
-                            point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);
-                            return {x: point.x, y: point.y, alpha: point.alpha};
-                        }
-                    }
-                    len += l;
-                    x = +p[5];
-                    y = +p[6];
-                }
-                sp += p.shift() + p;
-            }
-            subpaths.end = sp;
-            point = istotal ? len : subpath ? subpaths : R.findDotsAtSegment(x, y, p[0], p[1], p[2], p[3], p[4], p[5], 1);
-            point.alpha && (point = {x: point.x, y: point.y, alpha: point.alpha});
-            return point;
-        };
-    };
-    var getTotalLength = getLengthFactory(1),
-        getPointAtLength = getLengthFactory(),
-        getSubpathsAtLength = getLengthFactory(0, 1);
-    
-    R.getTotalLength = getTotalLength;
-    
-    R.getPointAtLength = getPointAtLength;
-    
-    R.getSubpath = function (path, from, to) {
-        if (this.getTotalLength(path) - to < 1e-6) {
-            return getSubpathsAtLength(path, from).end;
-        }
-        var a = getSubpathsAtLength(path, to, 1);
-        return from ? getSubpathsAtLength(a, from).end : a;
-    };
-    
-    elproto.getTotalLength = function () {
-        if (this.type != "path") {return;}
-        if (this.node.getTotalLength) {
-            return this.node.getTotalLength();
-        }
-        return getTotalLength(this.attrs.path);
-    };
-    
-    elproto.getPointAtLength = function (length) {
-        if (this.type != "path") {return;}
-        return getPointAtLength(this.attrs.path, length);
-    };
-    
-    elproto.getSubpath = function (from, to) {
-        if (this.type != "path") {return;}
-        return R.getSubpath(this.attrs.path, from, to);
-    };
-    
-    var ef = R.easing_formulas = {
-        linear: function (n) {
-            return n;
-        },
-        "<": function (n) {
-            return pow(n, 1.7);
-        },
-        ">": function (n) {
-            return pow(n, .48);
-        },
-        "<>": function (n) {
-            var q = .48 - n / 1.04,
-                Q = math.sqrt(.1734 + q * q),
-                x = Q - q,
-                X = pow(abs(x), 1 / 3) * (x < 0 ? -1 : 1),
-                y = -Q - q,
-                Y = pow(abs(y), 1 / 3) * (y < 0 ? -1 : 1),
-                t = X + Y + .5;
-            return (1 - t) * 3 * t * t + t * t * t;
-        },
-        backIn: function (n) {
-            var s = 1.70158;
-            return n * n * ((s + 1) * n - s);
-        },
-        backOut: function (n) {
-            n = n - 1;
-            var s = 1.70158;
-            return n * n * ((s + 1) * n + s) + 1;
-        },
-        elastic: function (n) {
-            if (n == !!n) {
-                return n;
-            }
-            return pow(2, -10 * n) * math.sin((n - .075) * (2 * PI) / .3) + 1;
-        },
-        bounce: function (n) {
-            var s = 7.5625,
-                p = 2.75,
-                l;
-            if (n < (1 / p)) {
-                l = s * n * n;
-            } else {
-                if (n < (2 / p)) {
-                    n -= (1.5 / p);
-                    l = s * n * n + .75;
-                } else {
-                    if (n < (2.5 / p)) {
-                        n -= (2.25 / p);
-                        l = s * n * n + .9375;
-                    } else {
-                        n -= (2.625 / p);
-                        l = s * n * n + .984375;
-                    }
-                }
-            }
-            return l;
-        }
-    };
-    ef.easeIn = ef["ease-in"] = ef["<"];
-    ef.easeOut = ef["ease-out"] = ef[">"];
-    ef.easeInOut = ef["ease-in-out"] = ef["<>"];
-    ef["back-in"] = ef.backIn;
-    ef["back-out"] = ef.backOut;
-
-    var animationElements = [],
-        requestAnimFrame = window.requestAnimationFrame       ||
-                           window.webkitRequestAnimationFrame ||
-                           window.mozRequestAnimationFrame    ||
-                           window.oRequestAnimationFrame      ||
-                           window.msRequestAnimationFrame     ||
-                           function (callback) {
-                               setTimeout(callback, 16);
-                           },
-        animation = function () {
-            var Now = +new Date,
-                l = 0;
-            for (; l < animationElements.length; l++) {
-                var e = animationElements[l];
-                if (e.el.removed || e.paused) {
-                    continue;
-                }
-                var time = Now - e.start,
-                    ms = e.ms,
-                    easing = e.easing,
-                    from = e.from,
-                    diff = e.diff,
-                    to = e.to,
-                    t = e.t,
-                    that = e.el,
-                    set = {},
-                    now,
-                    init = {},
-                    key;
-                if (e.initstatus) {
-                    time = (e.initstatus * e.anim.top - e.prev) / (e.percent - e.prev) * ms;
-                    e.status = e.initstatus;
-                    delete e.initstatus;
-                    e.stop && animationElements.splice(l--, 1);
-                } else {
-                    e.status = (e.prev + (e.percent - e.prev) * (time / ms)) / e.anim.top;
-                }
-                if (time < 0) {
-                    continue;
-                }
-                if (time < ms) {
-                    var pos = easing(time / ms);
-                    for (var attr in from) if (from[has](attr)) {
-                        switch (availableAnimAttrs[attr]) {
-                            case nu:
-                                now = +from[attr] + pos * ms * diff[attr];
-                                break;
-                            case "colour":
-                                now = "rgb(" + [
-                                    upto255(round(from[attr].r + pos * ms * diff[attr].r)),
-                                    upto255(round(from[attr].g + pos * ms * diff[attr].g)),
-                                    upto255(round(from[attr].b + pos * ms * diff[attr].b))
-                                ].join(",") + ")";
-                                break;
-                            case "path":
-                                now = [];
-                                for (var i = 0, ii = from[attr].length; i < ii; i++) {
-                                    now[i] = [from[attr][i][0]];
-                                    for (var j = 1, jj = from[attr][i].length; j < jj; j++) {
-                                        now[i][j] = +from[attr][i][j] + pos * ms * diff[attr][i][j];
-                                    }
-                                    now[i] = now[i].join(S);
-                                }
-                                now = now.join(S);
-                                break;
-                            case "transform":
-                                if (diff[attr].real) {
-                                    now = [];
-                                    for (i = 0, ii = from[attr].length; i < ii; i++) {
-                                        now[i] = [from[attr][i][0]];
-                                        for (j = 1, jj = from[attr][i].length; j < jj; j++) {
-                                            now[i][j] = from[attr][i][j] + pos * ms * diff[attr][i][j];
-                                        }
-                                    }
-                                } else {
-                                    var get = function (i) {
-                                        return +from[attr][i] + pos * ms * diff[attr][i];
-                                    };
-                                    // now = [["r", get(2), 0, 0], ["t", get(3), get(4)], ["s", get(0), get(1), 0, 0]];
-                                    now = [["m", get(0), get(1), get(2), get(3), get(4), get(5)]];
-                                }
-                                break;
-                            case "csv":
-                                if (attr == "clip-rect") {
-                                    now = [];
-                                    i = 4;
-                                    while (i--) {
-                                        now[i] = +from[attr][i] + pos * ms * diff[attr][i];
-                                    }
-                                }
-                                break;
-                            default:
-                                var from2 = [][concat](from[attr]);
-                                now = [];
-                                i = that.paper.customAttributes[attr].length;
-                                while (i--) {
-                                    now[i] = +from2[i] + pos * ms * diff[attr][i];
-                                }
-                                break;
-                        }
-                        set[attr] = now;
-                    }
-                    that.attr(set);
-                    (function (id, that, anim) {
-                        setTimeout(function () {
-                            eve("anim.frame." + id, that, anim);
-                        });
-                    })(that.id, that, e.anim);
-                } else {
-                    (function(f, el, a) {
-                        setTimeout(function() {
-                            eve("anim.frame." + el.id, el, a);
-                            eve("anim.finish." + el.id, el, a);
-                            R.is(f, "function") && f.call(el);
-                        });
-                    })(e.callback, that, e.anim);
-                    that.attr(to);
-                    animationElements.splice(l--, 1);
-                    if (e.repeat > 1 && !e.next) {
-                        for (key in to) if (to[has](key)) {
-                            init[key] = e.totalOrigin[key];
-                        }
-                        e.el.attr(init);
-                        runAnimation(e.anim, e.el, e.anim.percents[0], null, e.totalOrigin, e.repeat - 1);
-                    }
-                    if (e.next && !e.stop) {
-                        runAnimation(e.anim, e.el, e.next, null, e.totalOrigin, e.repeat);
-                    }
-                }
-            }
-            R.svg && that && that.paper && that.paper.safari();
-            animationElements.length && requestAnimFrame(animation);
-        },
-        upto255 = function (color) {
-            return color > 255 ? 255 : color < 0 ? 0 : color;
-        };
-    
-    elproto.animateWith = function (element, anim, params, ms, easing, callback) {
-        var a = params ? R.animation(params, ms, easing, callback) : anim;
-            status = element.status(anim);
-        return this.animate(a).status(a, status * anim.ms / a.ms);
-    };
-    function CubicBezierAtTime(t, p1x, p1y, p2x, p2y, duration) {
-        var cx = 3 * p1x,
-            bx = 3 * (p2x - p1x) - cx,
-            ax = 1 - cx - bx,
-            cy = 3 * p1y,
-            by = 3 * (p2y - p1y) - cy,
-            ay = 1 - cy - by;
-        function sampleCurveX(t) {
-            return ((ax * t + bx) * t + cx) * t;
-        }
-        function solve(x, epsilon) {
-            var t = solveCurveX(x, epsilon);
-            return ((ay * t + by) * t + cy) * t;
-        }
-        function solveCurveX(x, epsilon) {
-            var t0, t1, t2, x2, d2, i;
-            for(t2 = x, i = 0; i < 8; i++) {
-                x2 = sampleCurveX(t2) - x;
-                if (abs(x2) < epsilon) {
-                    return t2;
-                }
-                d2 = (3 * ax * t2 + 2 * bx) * t2 + cx;
-                if (abs(d2) < 1e-6) {
-                    break;
-                }
-                t2 = t2 - x2 / d2;
-            }
-            t0 = 0;
-            t1 = 1;
-            t2 = x;
-            if (t2 < t0) {
-                return t0;
-            }
-            if (t2 > t1) {
-                return t1;
-            }
-            while (t0 < t1) {
-                x2 = sampleCurveX(t2);
-                if (abs(x2 - x) < epsilon) {
-                    return t2;
-                }
-                if (x > x2) {
-                    t0 = t2;
-                } else {
-                    t1 = t2;
-                }
-                t2 = (t1 - t0) / 2 + t0;
-            }
-            return t2;
-        }
-        return solve(t, 1 / (200 * duration));
-    }
-    elproto.onAnimation = function (f) {
-        f ? eve.on("anim.frame." + this.id, f) : eve.unbind("anim.frame." + this.id);
-        return this;
-    };
-    function Animation(anim, ms) {
-        var percents = [],
-            newAnim = {};
-        this.ms = ms;
-        this.times = 1;
-        if (anim) {
-            for (var attr in anim) if (anim[has](attr)) {
-                newAnim[toFloat(attr)] = anim[attr];
-                percents.push(toFloat(attr));
-            }
-            percents.sort(sortByNumber);
-        }
-        this.anim = newAnim;
-        this.top = percents[percents.length - 1];
-        this.percents = percents;
-    }
-    
-    Animation.prototype.delay = function (delay) {
-        var a = new Animation(this.anim, this.ms);
-        a.times = this.times;
-        a.del = +delay || 0;
-        return a;
-    };
-    
-    Animation.prototype.repeat = function (times) { 
-        var a = new Animation(this.anim, this.ms);
-        a.del = this.del;
-        a.times = math.floor(mmax(times, 0)) || 1;
-        return a;
-    };
-    function runAnimation(anim, element, percent, status, totalOrigin, times) {
-        percent = toFloat(percent);
-        var params,
-            isInAnim,
-            isInAnimSet,
-            percents = [],
-            next,
-            prev,
-            timestamp,
-            ms = anim.ms,
-            from = {},
-            to = {},
-            diff = {};
-        if (status) {
-            for (i = 0, ii = animationElements.length; i < ii; i++) {
-                var e = animationElements[i];
-                if (e.el.id == element.id && e.anim == anim) {
-                    if (e.percent != percent) {
-                        animationElements.splice(i, 1);
-                        isInAnimSet = 1;
-                    } else {
-                        isInAnim = e;
-                    }
-                    element.attr(e.totalOrigin);
-                    break;
-                }
-            }
-        } else {
-            status = +to; // NaN
-        }
-        for (var i = 0, ii = anim.percents.length; i < ii; i++) {
-            if (anim.percents[i] == percent || anim.percents[i] > status * anim.top) {
-                percent = anim.percents[i];
-                prev = anim.percents[i - 1] || 0;
-                ms = ms / anim.top * (percent - prev);
-                next = anim.percents[i + 1];
-                params = anim.anim[percent];
-                break;
-            } else if (status) {
-                element.attr(anim.anim[anim.percents[i]]);
-            }
-        }
-        if (!params) {
-            return;
-        }
-        if (!isInAnim) {
-            for (attr in params) if (params[has](attr)) {
-                if (availableAnimAttrs[has](attr) || element.paper.customAttributes[has](attr)) {
-                    from[attr] = element.attr(attr);
-                    (from[attr] == null) && (from[attr] = availableAttrs[attr]);
-                    to[attr] = params[attr];
-                    switch (availableAnimAttrs[attr]) {
-                        case nu:
-                            diff[attr] = (to[attr] - from[attr]) / ms;
-                            break;
-                        case "colour":
-                            from[attr] = R.getRGB(from[attr]);
-                            var toColour = R.getRGB(to[attr]);
-                            diff[attr] = {
-                                r: (toColour.r - from[attr].r) / ms,
-                                g: (toColour.g - from[attr].g) / ms,
-                                b: (toColour.b - from[attr].b) / ms
-                            };
-                            break;
-                        case "path":
-                            var pathes = path2curve(from[attr], to[attr]),
-                                toPath = pathes[1];
-                            from[attr] = pathes[0];
-                            diff[attr] = [];
-                            for (i = 0, ii = from[attr].length; i < ii; i++) {
-                                diff[attr][i] = [0];
-                                for (var j = 1, jj = from[attr][i].length; j < jj; j++) {
-                                    diff[attr][i][j] = (toPath[i][j] - from[attr][i][j]) / ms;
-                                }
-                            }
-                            break;
-                        case "transform":
-                            var _ = element._,
-                                eq = equaliseTransform(_[attr], to[attr]);
-                            if (eq) {
-                                from[attr] = eq.from;
-                                to[attr] = eq.to;
-                                diff[attr] = [];
-                                diff[attr].real = true;
-                                for (i = 0, ii = from[attr].length; i < ii; i++) {
-                                    diff[attr][i] = [from[attr][i][0]];
-                                    for (j = 1, jj = from[attr][i].length; j < jj; j++) {
-                                        diff[attr][i][j] = (to[attr][i][j] - from[attr][i][j]) / ms;
-                                    }
-                                }
-                            } else {
-                                var m = (element.matrix || new Matrix),
-                                    to2 = {
-                                        _: {transform: _.transform},
-                                        getBBox: function () {
-                                            return element.getBBox(1);
-                                        }
-                                    };
-                                from[attr] = [
-                                    m.a,
-                                    m.b,
-                                    m.c,
-                                    m.d,
-                                    m.e,
-                                    m.f
-                                ];
-                                extractTransform(to2, to[attr]);
-                                to[attr] = to2._.transform;
-                                diff[attr] = [
-                                    (to2.matrix.a - m.a) / ms,
-                                    (to2.matrix.b - m.b) / ms,
-                                    (to2.matrix.c - m.c) / ms,
-                                    (to2.matrix.d - m.d) / ms,
-                                    (to2.matrix.e - m.e) / ms,
-                                    (to2.matrix.e - m.f) / ms
-                                ];
-                                // from[attr] = [_.sx, _.sy, _.deg, _.dx, _.dy];
-                                // var to2 = {_:{}, getBBox: function () { return element.getBBox(); }};
-                                // extractTransform(to2, to[attr]);
-                                // diff[attr] = [
-                                //     (to2._.sx - _.sx) / ms,
-                                //     (to2._.sy - _.sy) / ms,
-                                //     (to2._.deg - _.deg) / ms,
-                                //     (to2._.dx - _.dx) / ms,
-                                //     (to2._.dy - _.dy) / ms
-                                // ];
-                            }
-                            break;
-                        case "csv":
-                            var values = Str(params[attr])[split](separator),
-                                from2 = Str(from[attr])[split](separator);
-                            if (attr == "clip-rect") {
-                                from[attr] = from2;
-                                diff[attr] = [];
-                                i = from2.length;
-                                while (i--) {
-                                    diff[attr][i] = (values[i] - from[attr][i]) / ms;
-                                }
-                            }
-                            to[attr] = values;
-                            break;
-                        default:
-                            values = [][concat](params[attr]);
-                            from2 = [][concat](from[attr]);
-                            diff[attr] = [];
-                            i = element.paper.customAttributes[attr].length;
-                            while (i--) {
-                                diff[attr][i] = ((values[i] || 0) - (from2[i] || 0)) / ms;
-                            }
-                            break;
-                    }
-                }
-            }
-            var easing = params.easing,
-                easyeasy = R.easing_formulas[easing];
-            if (!easyeasy) {
-                easyeasy = Str(easing).match(bezierrg);
-                if (easyeasy && easyeasy.length == 5) {
-                    var curve = easyeasy;
-                    easyeasy = function (t) {
-                        return CubicBezierAtTime(t, +curve[1], +curve[2], +curve[3], +curve[4], ms);
-                    };
-                } else {
-                    easyeasy = pipe;
-                }
-            }
-            timestamp = params.start || anim.start || +new Date;
-            e = {
-                anim: anim,
-                percent: percent,
-                timestamp: timestamp,
-                start: timestamp + (anim.del || 0),
-                status: 0,
-                initstatus: status || 0,
-                stop: false,
-                ms: ms,
-                easing: easyeasy,
-                from: from,
-                diff: diff,
-                to: to,
-                el: element,
-                callback: params.callback,
-                prev: prev,
-                next: next,
-                repeat: times || anim.times,
-                origin: element.attr(),
-                totalOrigin: totalOrigin
-            };
-            animationElements.push(e);
-            if (status && !isInAnim && !isInAnimSet) {
-                e.stop = true;
-                e.start = new Date - ms * status;
-                if (animationElements.length == 1) {
-                    return animation();
-                }
-            }
-            if (isInAnimSet) {
-                e.start = new Date - e.ms * status;
-            }
-            animationElements.length == 1 && requestAnimFrame(animation);
-        } else {
-            isInAnim.initstatus = status;
-            isInAnim.start = new Date - isInAnim.ms * status;
-        }
-        eve("anim.start." + element.id, element, anim);
-    }
-    
-    R.animation = function (params, ms, easing, callback) {
-        if (params instanceof Animation) {
-            return params;
-        }
-        if (R.is(easing, "function") || !easing) {
-            callback = callback || easing || null;
-            easing = null;
-        }
-        params = Object(params);
-        ms = +ms || 0;
-        var p = {},
-            json,
-            attr;
-        for (attr in params) if (params[has](attr) && toFloat(attr) != attr && toFloat(attr) + "%" != attr) {
-            json = true;
-            p[attr] = params[attr];
-        }
-        if (!json) {
-            return new Animation(params, ms);
-        } else {
-            easing && (p.easing = easing);
-            callback && (p.callback = callback);
-            return new Animation({100: p}, ms);
-        }
-    };
-    
-    elproto.animate = function (params, ms, easing, callback) {
-        var element = this;
-        if (element.removed) {
-            callback && callback.call(element);
-            return element;
-        }
-        var anim = params instanceof Animation ? params : R.animation(params, ms, easing, callback);
-        runAnimation(anim, element, anim.percents[0], null, element.attr());
-        return element;
-    };
-    
-    elproto.setTime = function (anim, value) {
-        if (anim && value != null) {
-            this.status(anim, mmin(value, anim.ms) / anim.ms);
-        }
-        return this;
-    };
-    
-    elproto.status = function (anim, value) {
-        var out = [],
-            i = 0,
-            len,
-            e;
-        if (value != null) {
-            runAnimation(anim, this, -1, mmin(value, 1));
-            return this;
-        } else {
-            len = animationElements.length;
-            for (; i < len; i++) {
-                e = animationElements[i];
-                if (e.el.id == this.id && (!anim || e.anim == anim)) {
-                    if (anim) {
-                        return e.status;
-                    }
-                    out.push({
-                        anim: e.anim,
-                        status: e.status
-                    });
-                }
-            }
-            if (anim) {
-                return 0;
-            }
-            return out;
-        }
-    };
-    
-    elproto.pause = function (anim) {
-        for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {
-            if (eve("anim.pause." + this.id, this, animationElements[i].anim) !== false) {
-                animationElements[i].paused = true;
-            }
-        }
-        return this;
-    };
-    
-    elproto.resume = function (anim) {
-        for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {
-            var e = animationElements[i];
-            if (eve("anim.resume." + this.id, this, e.anim) !== false) {
-                delete e.paused;
-                this.status(e.anim, e.status);
-            }
-        }
-        return this;
-    };
-    
-    elproto.stop = function (anim) {
-        for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {
-            if (eve("anim.stop." + this.id, this, animationElements[i].anim) !== false) {
-                animationElements.splice(i--, 1);
-            }
-        }
-        return this;
-    };
-    elproto.toString = function () {
-        return "Rapha\xebl\u2019s object";
-    };
-
-    // Set
-    var Set = function (items) {
-        this.items = [];
-        this.length = 0;
-        this.type = "set";
-        if (items) {
-            for (var i = 0, ii = items.length; i < ii; i++) {
-                if (items[i] && (items[i].constructor == elproto.constructor || items[i].constructor == Set)) {
-                    this[this.items.length] = this.items[this.items.length] = items[i];
-                    this.length++;
-                }
-            }
-        }
-    },
-    setproto = Set.prototype;
-    
-    setproto.push = function () {
-        var item,
-            len;
-        for (var i = 0, ii = arguments.length; i < ii; i++) {
-            item = arguments[i];
-            if (item && (item.constructor == elproto.constructor || item.constructor == Set)) {
-                len = this.items.length;
-                this[len] = this.items[len] = item;
-                this.length++;
-            }
-        }
-        return this;
-    };
-    
-    setproto.pop = function () {
-        this.length && delete this[this.length--];
-        return this.items.pop();
-    };
-    
-    setproto.forEach = function (callback, thisArg) {
-        for (var i = 0, ii = this.items.length; i < ii; i++) {
-            if (callback.call(thisArg, this.items[i], i) === false) {
-                return this;
-            }
-        }
-        return this;
-    };
-    for (var method in elproto) if (elproto[has](method)) {
-        setproto[method] = (function (methodname) {
-            return function () {
-                var arg = arguments;
-                return this.forEach(function (el) {
-                    el[methodname][apply](el, arg);
-                });
-            };
-        })(method);
-    }
-    setproto.attr = function (name, value) {
-        if (name && R.is(name, array) && R.is(name[0], "object")) {
-            for (var j = 0, jj = name.length; j < jj; j++) {
-                this.items[j].attr(name[j]);
-            }
-        } else {
-            for (var i = 0, ii = this.items.length; i < ii; i++) {
-                this.items[i].attr(name, value);
-            }
-        }
-        return this;
-    };
-    
-    setproto.clear = function () {
-        while (this.length) {
-            this.pop();
-        }
-    };
-    
-    setproto.splice = function (index, count, insertion) {
-        index = index < 0 ? mmax(this.length + index, 0) : index;
-        count = mmax(0, mmin(this.length - index, count));
-        var tail = [],
-            todel = [],
-            args = [],
-            i;
-        for (i = 2; i < arguments.length; i++) {
-            args.push(arguments[i]);
-        }
-        for (i = 0; i < count; i++) {
-            todel.push(this[index + i]);
-        }
-        for (; i < this.length - index; i++) {
-            tail.push(this[index + i]);
-        }
-        var arglen = args.length;
-        for (i = 0; i < arglen + tail.length; i++) {
-            this.items[index + i] = this[index + i] = i < arglen ? args[i] : tail[i - arglen];
-        }
-        i = this.items.length = this.length -= count - arglen;
-        while (this[i]) {
-            delete this[i++];
-        }
-        return new Set(todel);
-    };
-    
-    setproto.exclude = function (el) {
-        for (var i = 0, ii = this.length; i < ii; i++) if (this[i] == el) {
-            this.splice(i, 1);
-            return true;
-        }
-    };
-    setproto.animate = function (params, ms, easing, callback) {
-        (R.is(easing, "function") || !easing) && (callback = easing || null);
-        var len = this.items.length,
-            i = len,
-            item,
-            set = this,
-            collector;
-        if (!len) {
-            return this;
-        }
-        callback && (collector = function () {
-            !--len && callback.call(set);
-        });
-        easing = R.is(easing, string) ? easing : collector;
-        var anim = R.animation(params, ms, easing, collector);
-        item = this.items[--i].animate(anim);
-        while (i--) {
-            this.items[i] && !this.items[i].removed && this.items[i].animateWith(item, anim);
-        }
-        return this;
-    };
-    setproto.insertAfter = function (el) {
-        var i = this.items.length;
-        while (i--) {
-            this.items[i].insertAfter(el);
-        }
-        return this;
-    };
-    setproto.getBBox = function () {
-        var x = [],
-            y = [],
-            w = [],
-            h = [];
-        for (var i = this.items.length; i--;) if (!this.items[i].removed) {
-            var box = this.items[i].getBBox();
-            x.push(box.x);
-            y.push(box.y);
-            w.push(box.x + box.width);
-            h.push(box.y + box.height);
-        }
-        x = mmin[apply](0, x);
-        y = mmin[apply](0, y);
-        return {
-            x: x,
-            y: y,
-            width: mmax[apply](0, w) - x,
-            height: mmax[apply](0, h) - y
-        };
-    };
-    setproto.clone = function (s) {
-        s = new Set;
-        for (var i = 0, ii = this.items.length; i < ii; i++) {
-            s.push(this.items[i].clone());
-        }
-        return s;
-    };
-    setproto.toString = function () {
-        return "Rapha\xebl\u2018s set";
-    };
-
-    
-    R.registerFont = function (font) {
-        if (!font.face) {
-            return font;
-        }
-        this.fonts = this.fonts || {};
-        var fontcopy = {
-                w: font.w,
-                face: {},
-                glyphs: {}
-            },
-            family = font.face["font-family"];
-        for (var prop in font.face) if (font.face[has](prop)) {
-            fontcopy.face[prop] = font.face[prop];
-        }
-        if (this.fonts[family]) {
-            this.fonts[family].push(fontcopy);
-        } else {
-            this.fonts[family] = [fontcopy];
-        }
-        if (!font.svg) {
-            fontcopy.face["units-per-em"] = toInt(font.face["units-per-em"], 10);
-            for (var glyph in font.glyphs) if (font.glyphs[has](glyph)) {
-                var path = font.glyphs[glyph];
-                fontcopy.glyphs[glyph] = {
-                    w: path.w,
-                    k: {},
-                    d: path.d && "M" + path.d.replace(/[mlcxtrv]/g, function (command) {
-                            return {l: "L", c: "C", x: "z", t: "m", r: "l", v: "c"}[command] || "M";
-                        }) + "z"
-                };
-                if (path.k) {
-                    for (var k in path.k) if (path[has](k)) {
-                        fontcopy.glyphs[glyph].k[k] = path.k[k];
-                    }
-                }
-            }
-        }
-        return font;
-    };
-    
-    paperproto.getFont = function (family, weight, style, stretch) {
-        stretch = stretch || "normal";
-        style = style || "normal";
-        weight = +weight || {normal: 400, bold: 700, lighter: 300, bolder: 800}[weight] || 400;
-        if (!R.fonts) {
-            return;
-        }
-        var font = R.fonts[family];
-        if (!font) {
-            var name = new RegExp("(^|\\s)" + family.replace(/[^\w\d\s+!~.:_-]/g, E) + "(\\s|$)", "i");
-            for (var fontName in R.fonts) if (R.fonts[has](fontName)) {
-                if (name.test(fontName)) {
-                    font = R.fonts[fontName];
-                    break;
-                }
-            }
-        }
-        var thefont;
-        if (font) {
-            for (var i = 0, ii = font.length; i < ii; i++) {
-                thefont = font[i];
-                if (thefont.face["font-weight"] == weight && (thefont.face["font-style"] == style || !thefont.face["font-style"]) && thefont.face["font-stretch"] == stretch) {
-                    break;
-                }
-            }
-        }
-        return thefont;
-    };
-    
-    paperproto.print = function (x, y, string, font, size, origin, letter_spacing) {
-        origin = origin || "middle"; // baseline|middle
-        letter_spacing = mmax(mmin(letter_spacing || 0, 1), -1);
-        var out = this.set(),
-            letters = Str(string)[split](E),
-            shift = 0,
-            path = E,
-            scale;
-        R.is(font, string) && (font = this.getFont(font));
-        if (font) {
-            scale = (size || 16) / font.face["units-per-em"];
-            var bb = font.face.bbox[split](separator),
-                top = +bb[0],
-                height = +bb[1] + (origin == "baseline" ? bb[3] - bb[1] + (+font.face.descent) : (bb[3] - bb[1]) / 2);
-            for (var i = 0, ii = letters.length; i < ii; i++) {
-                var prev = i && font.glyphs[letters[i - 1]] || {},
-                    curr = font.glyphs[letters[i]];
-                shift += i ? (prev.w || font.w) + (prev.k && prev.k[letters[i]] || 0) + (font.w * letter_spacing) : 0;
-                curr && curr.d && out.push(this.path(curr.d).attr({
-                    fill: "#000",
-                    stroke: "none",
-                    transform: [["t", shift * scale, 0]]
-                }));
-            }
-            out.transform(["...s", scale, scale, top, height, "t", (x - top) / scale, (y - height) / scale]);
-        }
-        return out;
-    };
-
-    
-    R.format = function (token, params) {
-        var args = R.is(params, array) ? [0][concat](params) : arguments;
-        token && R.is(token, string) && args.length - 1 && (token = token.replace(formatrg, function (str, i) {
-            return args[++i] == null ? E : args[i];
-        }));
-        return token || E;
-    };
-    
-    R.fullfill = (function () {
-        var tokenRegex = /\{([^\}]+)\}/g,
-            objNotationRegex = /(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g, // matches .xxxxx or ["xxxxx"] to run over object properties
-            replacer = function (all, key, obj) {
-                var res = obj;
-                key.replace(objNotationRegex, function (all, name, quote, quotedName, isFunc) {
-                    name = name || quotedName;
-                    if (res) {
-                        if (name in res) {
-                            res = res[name];
-                        }
-                        typeof res == "function" && isFunc && (res = res());
-                    }
-                });
-                res = (res == null || res == obj ? all : res) + "";
-                return res;
-            };
-        return function (str, obj) {
-            return String(str).replace(tokenRegex, function (all, key) {
-                return replacer(all, key, obj);
-            });
-        };
-    })();
-    
-    R.ninja = function () {
-        oldRaphael.was ? (g.win.Raphael = oldRaphael.is) : delete Raphael;
-        return R;
-    };
-    
-    R.st = setproto;
-    // Firefox <3.6 fix: http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html
-    (function (doc, loaded, f) {
-        if (doc.readyState == null && doc.addEventListener){
-            doc.addEventListener(loaded, f = function () {
-                doc.removeEventListener(loaded, f, false);
-                doc.readyState = "complete";
-            }, false);
-            doc.readyState = "loading";
-        }
-        function isLoaded() {
-            (/in/).test(doc.readyState) ? setTimeout(isLoaded, 9) : R.eve("DOMload");
-        }
-        isLoaded();
-    })(document, "DOMContentLoaded");
-
-    oldRaphael.was ? (g.win.Raphael = R) : (Raphael = R);
-    
-    eve.on("DOMload", function () {
-        loaded = true;
-    });
-})();
-
-// ┌─────────────────────────────────────────────────────────────────────┐ \\
-// │ Raphaël 2 - JavaScript Vector Library                               │ \\
-// ├─────────────────────────────────────────────────────────────────────┤ \\
-// │ SVG Module                                                          │ \\
-// ├─────────────────────────────────────────────────────────────────────┤ \\
-// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\
-// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\
-// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\
-// └─────────────────────────────────────────────────────────────────────┘ \\
-window.Raphael.svg && function (R) {
-    var has = "hasOwnProperty",
-        Str = String,
-        toFloat = parseFloat,
-        toInt = parseInt,
-        math = Math,
-        mmax = math.max,
-        abs = math.abs,
-        pow = math.pow,
-        separator = /[, ]+/,
-        eve = R.eve,
-        E = "",
-        S = " ";
-    var xlink = "http://www.w3.org/1999/xlink",
-        markers = {
-            block: "M5,0 0,2.5 5,5z",
-            classic: "M5,0 0,2.5 5,5 3.5,3 3.5,2z",
-            diamond: "M2.5,0 5,2.5 2.5,5 0,2.5z",
-            open: "M6,1 1,3.5 6,6",
-            oval: "M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"
-        },
-        markerCounter = {};
-    R.toString = function () {
-        return  "Your browser supports SVG.\nYou are running Rapha\xebl " + this.version;
-    };
-    var $ = function (el, attr) {
-        if (attr) {
-            if (typeof el == "string") {
-                el = $(el);
-            }
-            for (var key in attr) if (attr[has](key)) {
-                if (key.substring(0, 6) == "xlink:") {
-                    el.setAttributeNS(xlink, key.substring(6), Str(attr[key]));
-                } else {
-                    el.setAttribute(key, Str(attr[key]));
-                }
-            }
-        } else {
-            el = R._g.doc.createElementNS("http://www.w3.org/2000/svg", el);
-            el.style && (el.style.webkitTapHighlightColor = "rgba(0,0,0,0)");
-        }
-        return el;
-    },
-    gradients = {},
-    rgGrad = /^url\(#(.*)\)$/,
-    removeGradientFill = function (node, paper) {
-        var oid = node.getAttribute("fill");
-        oid = oid && oid.match(rgGrad);
-        if (oid && !--gradients[oid[1]]) {
-            delete gradients[oid[1]];
-            paper.defs.removeChild(R._g.doc.getElementById(oid[1]));
-        }
-    },
-    addGradientFill = function (element, gradient) {
-        var type = "linear",
-            id = element.id + gradient,
-            fx = .5, fy = .5,
-            o = element.node,
-            SVG = element.paper,
-            s = o.style,
-            el = R._g.doc.getElementById(id);
-        if (!el) {
-            gradient = Str(gradient).replace(R._radial_gradient, function (all, _fx, _fy) {
-                type = "radial";
-                if (_fx && _fy) {
-                    fx = toFloat(_fx);
-                    fy = toFloat(_fy);
-                    var dir = ((fy > .5) * 2 - 1);
-                    pow(fx - .5, 2) + pow(fy - .5, 2) > .25 &&
-                        (fy = math.sqrt(.25 - pow(fx - .5, 2)) * dir + .5) &&
-                        fy != .5 &&
-                        (fy = fy.toFixed(5) - 1e-5 * dir);
-                }
-                return E;
-            });
-            gradient = gradient.split(/\s*\-\s*/);
-            if (type == "linear") {
-                var angle = gradient.shift();
-                angle = -toFloat(angle);
-                if (isNaN(angle)) {
-                    return null;
-                }
-                var vector = [0, 0, math.cos(R.rad(angle)), math.sin(R.rad(angle))],
-                    max = 1 / (mmax(abs(vector[2]), abs(vector[3])) || 1);
-                vector[2] *= max;
-                vector[3] *= max;
-                if (vector[2] < 0) {
-                    vector[0] = -vector[2];
-                    vector[2] = 0;
-                }
-                if (vector[3] < 0) {
-                    vector[1] = -vector[3];
-                    vector[3] = 0;
-                }
-            }
-            var dots = R._parseDots(gradient);
-            if (!dots) {
-                return null;
-            }
-            if (element.gradient) {
-                SVG.defs.removeChild(element.gradient);
-                delete element.gradient;
-            }
-
-            id = id.replace(/[\(\)\s,\xb0#]/g, "-");
-            el = $(type + "Gradient", {id: id});
-            element.gradient = el;
-            $(el, type == "radial" ? {
-                fx: fx,
-                fy: fy
-            } : {
-                x1: vector[0],
-                y1: vector[1],
-                x2: vector[2],
-                y2: vector[3],
-                gradientTransform: element.matrix.invert()
-            });
-            SVG.defs.appendChild(el);
-            for (var i = 0, ii = dots.length; i < ii; i++) {
-                el.appendChild($("stop", {
-                    offset: dots[i].offset ? dots[i].offset : i ? "100%" : "0%",
-                    "stop-color": dots[i].color || "#fff"
-                }));
-            }
-        }
-        $(o, {
-            fill: "url(#" + id + ")",
-            opacity: 1,
-            "fill-opacity": 1
-        });
-        s.fill = E;
-        s.opacity = 1;
-        s.fillOpacity = 1;
-        return 1;
-    },
-    updatePosition = function (o) {
-        var bbox = o.getBBox(1);
-        $(o.pattern, {patternTransform: o.matrix.invert() + " translate(" + bbox.x + "," + bbox.y + ")"});
-    },
-    addArrow = function (o, value, isEnd) {
-        if (o.type == "path") {
-            var values = Str(value).toLowerCase().split("-"),
-                p = o.paper,
-                se = isEnd ? "end" : "start",
-                node = o.node,
-                attrs = o.attrs,
-                stroke = attrs["stroke-width"],
-                i = values.length,
-                type = "classic",
-                from,
-                to,
-                dx,
-                refX,
-                attr,
-                w = 3,
-                h = 3,
-                t = 5;
-            while (i--) {
-                switch (values[i]) {
-                    case "block":
-                    case "classic":
-                    case "oval":
-                    case "diamond":
-                    case "open":
-                    case "none":
-                        type = values[i];
-                        break;
-                    case "wide": h = 5; break;
-                    case "narrow": h = 2; break;
-                    case "long": w = 5; break;
-                    case "short": w = 2; break;
-                }
-            }
-            if (type == "open") {
-                w += 2;
-                h += 2;
-                t += 2;
-                dx = 1;
-                refX = isEnd ? 4 : 1;
-                attr = {
-                    fill: "none",
-                    stroke: attrs.stroke
-                };
-            } else {
-                refX = dx = w / 2;
-                attr = {
-                    fill: attrs.stroke,
-                    stroke: "none"
-                };
-            }
-            if (o._.arrows) {
-                if (isEnd) {
-                    o._.arrows.endPath && markerCounter[o._.arrows.endPath]--;
-                    o._.arrows.endMarker && markerCounter[o._.arrows.endMarker]--;
-                } else {
-                    o._.arrows.startPath && markerCounter[o._.arrows.startPath]--;
-                    o._.arrows.startMarker && markerCounter[o._.arrows.startMarker]--;
-                }
-            } else {
-                o._.arrows = {};
-            }
-            if (type != "none") {
-                var pathId = "raphael-marker-" + type,
-                    markerId = "raphael-marker-" + se + type + w + h;
-                if (!R._g.doc.getElementById(pathId)) {
-                    p.defs.appendChild($($("path"), {
-                        "stroke-linecap": "round",
-                        d: markers[type],
-                        id: pathId
-                    }));
-                    markerCounter[pathId] = 1;
-                } else {
-                    markerCounter[pathId]++;
-                }
-                var marker = R._g.doc.getElementById(markerId),
-                    use;
-                if (!marker) {
-                    marker = $($("marker"), {
-                        id: markerId,
-                        markerHeight: h,
-                        markerWidth: w,
-                        orient: "auto",
-                        refX: refX,
-                        refY: h / 2
-                    });
-                    use = $($("use"), {
-                        "xlink:href": "#" + pathId,
-                        transform: (isEnd ? " rotate(180 " + w / 2 + " " + h / 2 + ") " : S) + "scale(" + w / t + "," + h / t + ")",
-                        "stroke-width": 1 / ((w / t + h / t) / 2)
-                    });
-                    marker.appendChild(use);
-                    p.defs.appendChild(marker);
-                    markerCounter[markerId] = 1;
-                } else {
-                    markerCounter[markerId]++;
-                    use = marker.getElementsByTagName("use")[0];
-                }
-                $(use, attr);
-                var delta = dx * (type != "diamond" && type != "oval");
-                if (isEnd) {
-                    from = o._.arrows.startdx * stroke || 0;
-                    to = R.getTotalLength(attrs.path) - delta * stroke;
-                } else {
-                    from = delta * stroke;
-                    to = R.getTotalLength(attrs.path) - (o._.arrows.enddx * stroke || 0);
-                }
-                attr = {};
-                attr["marker-" + se] = "url(#" + markerId + ")";
-                if (to || from) {
-                    attr.d = Raphael.getSubpath(attrs.path, from, to);
-                }
-                $(node, attr);
-                o._.arrows[se + "Path"] = pathId;
-                o._.arrows[se + "Marker"] = markerId;
-                o._.arrows[se + "dx"] = delta;
-                o._.arrows[se + "Type"] = type;
-                o._.arrows[se + "String"] = value;
-            } else {
-                if (isEnd) {
-                    from = o._.arrows.startdx * stroke || 0;
-                    to = R.getTotalLength(attrs.path) - from;
-                } else {
-                    from = 0;
-                    to = R.getTotalLength(attrs.path) - (o._.arrows.enddx * stroke || 0);
-                }
-                o._.arrows[se + "Path"] && $(node, {d: Raphael.getSubpath(attrs.path, from, to)});
-                delete o._.arrows[se + "Path"];
-                delete o._.arrows[se + "Marker"];
-                delete o._.arrows[se + "dx"];
-                delete o._.arrows[se + "Type"];
-                delete o._.arrows[se + "String"];
-            }
-            for (attr in markerCounter) if (markerCounter[has](attr) && !markerCounter[attr]) {
-                var item = R._g.doc.getElementById(attr);
-                item && item.parentNode.removeChild(item);
-            }
-        }
-    },
-    dasharray = {
-        "": [0],
-        "none": [0],
-        "-": [3, 1],
-        ".": [1, 1],
-        "-.": [3, 1, 1, 1],
-        "-..": [3, 1, 1, 1, 1, 1],
-        ". ": [1, 3],
-        "- ": [4, 3],
-        "--": [8, 3],
-        "- .": [4, 3, 1, 3],
-        "--.": [8, 3, 1, 3],
-        "--..": [8, 3, 1, 3, 1, 3]
-    },
-    addDashes = function (o, value, params) {
-        value = dasharray[Str(value).toLowerCase()];
-        if (value) {
-            var width = o.attrs["stroke-width"] || "1",
-                butt = {round: width, square: width, butt: 0}[o.attrs["stroke-linecap"] || params["stroke-linecap"]] || 0,
-                dashes = [],
-                i = value.length;
-            while (i--) {
-                dashes[i] = value[i] * width + ((i % 2) ? 1 : -1) * butt;
-            }
-            $(o.node, {"stroke-dasharray": dashes.join(",")});
-        }
-    },
-    setFillAndStroke = function (o, params) {
-        var node = o.node,
-            attrs = o.attrs,
-            vis = node.style.visibility;
-        node.style.visibility = "hidden";
-        for (var att in params) {
-            if (params[has](att)) {
-                if (!R._availableAttrs[has](att)) {
-                    continue;
-                }
-                var value = params[att];
-                attrs[att] = value;
-                switch (att) {
-                    case "blur":
-                        o.blur(value);
-                        break;
-                    case "href":
-                    case "title":
-                    case "target":
-                        var pn = node.parentNode;
-                        if (pn.tagName.toLowerCase() != "a") {
-                            var hl = $("a");
-                            pn.insertBefore(hl, node);
-                            hl.appendChild(node);
-                            pn = hl;
-                        }
-                        if (att == "target" && value == "blank") {
-                            pn.setAttributeNS(xlink, "show", "new");
-                        } else {
-                            pn.setAttributeNS(xlink, att, value);
-                        }
-                        break;
-                    case "cursor":
-                        node.style.cursor = value;
-                        break;
-                    case "transform":
-                        o.transform(value);
-                        break;
-                    case "arrow-start":
-                        addArrow(o, value);
-                        break;
-                    case "arrow-end":
-                        addArrow(o, value, 1);
-                        break;
-                    case "clip-rect":
-                        var rect = Str(value).split(separator);
-                        if (rect.length == 4) {
-                            o.clip && o.clip.parentNode.parentNode.removeChild(o.clip.parentNode);
-                            var el = $("clipPath"),
-                                rc = $("rect");
-                            el.id = R.createUUID();
-                            $(rc, {
-                                x: rect[0],
-                                y: rect[1],
-                                width: rect[2],
-                                height: rect[3]
-                            });
-                            el.appendChild(rc);
-                            o.paper.defs.appendChild(el);
-                            $(node, {"clip-path": "url(#" + el.id + ")"});
-                            o.clip = rc;
-                        }
-                        if (!value) {
-                            var clip = R._g.doc.getElementById(node.getAttribute("clip-path").replace(/(^url\(#|\)$)/g, E));
-                            clip && clip.parentNode.removeChild(clip);
-                            $(node, {"clip-path": E});
-                            delete o.clip;
-                        }
-                    break;
-                    case "path":
-                        if (o.type == "path") {
-                            $(node, {d: value ? attrs.path = R._pathToAbsolute(value) : "M0,0"});
-                            o._.dirty = 1;
-                            if (o._.arrows) {
-                                "startString" in o._.arrows && addArrow(o, o._.arrows.startString);
-                                "endString" in o._.arrows && addArrow(o, o._.arrows.endString, 1);
-                            }
-                        }
-                        break;
-                    case "width":
-                        node.setAttribute(att, value);
-                        o._.dirty = 1;
-                        if (attrs.fx) {
-                            att = "x";
-                            value = attrs.x;
-                        } else {
-                            break;
-                        }
-                    case "x":
-                        if (attrs.fx) {
-                            value = -attrs.x - (attrs.width || 0);
-                        }
-                    case "rx":
-                        if (att == "rx" && o.type == "rect") {
-                            break;
-                        }
-                    case "cx":
-                        node.setAttribute(att, value);
-                        o.pattern && updatePosition(o);
-                        o._.dirty = 1;
-                        break;
-                    case "height":
-                        node.setAttribute(att, value);
-                        o._.dirty = 1;
-                        if (attrs.fy) {
-                            att = "y";
-                            value = attrs.y;
-                        } else {
-                            break;
-                        }
-                    case "y":
-                        if (attrs.fy) {
-                            value = -attrs.y - (attrs.height || 0);
-                        }
-                    case "ry":
-                        if (att == "ry" && o.type == "rect") {
-                            break;
-                        }
-                    case "cy":
-                        node.setAttribute(att, value);
-                        o.pattern && updatePosition(o);
-                        o._.dirty = 1;
-                        break;
-                    case "r":
-                        if (o.type == "rect") {
-                            $(node, {rx: value, ry: value});
-                        } else {
-                            node.setAttribute(att, value);
-                        }
-                        o._.dirty = 1;
-                        break;
-                    case "src":
-                        if (o.type == "image") {
-                            node.setAttributeNS(xlink, "href", value);
-                        }
-                        break;
-                    case "stroke-width":
-                        if (o._.sx != 1 || o._.sy != 1) {
-                            value /= mmax(abs(o._.sx), abs(o._.sy)) || 1;
-                        }
-                        if (o.paper._vbSize) {
-                            value *= o.paper._vbSize;
-                        }
-                        node.setAttribute(att, value);
-                        if (attrs["stroke-dasharray"]) {
-                            addDashes(o, attrs["stroke-dasharray"], params);
-                        }
-                        if (o._.arrows) {
-                            "startString" in o._.arrows && addArrow(o, o._.arrows.startString);
-                            "endString" in o._.arrows && addArrow(o, o._.arrows.endString, 1);
-                        }
-                        break;
-                    case "stroke-dasharray":
-                        addDashes(o, value, params);
-                        break;
-                    case "fill":
-                        var isURL = Str(value).match(R._ISURL);
-                        if (isURL) {
-                            el = $("pattern");
-                            var ig = $("image");
-                            el.id = R.createUUID();
-                            $(el, {x: 0, y: 0, patternUnits: "userSpaceOnUse", height: 1, width: 1});
-                            $(ig, {x: 0, y: 0, "xlink:href": isURL[1]});
-                            el.appendChild(ig);
-
-                            (function (el) {
-                                R._preload(isURL[1], function () {
-                                    var w = this.offsetWidth,
-                                        h = this.offsetHeight;
-                                    $(el, {width: w, height: h});
-                                    $(ig, {width: w, height: h});
-                                    o.paper.safari();
-                                });
-                            })(el);
-                            o.paper.defs.appendChild(el);
-                            node.style.fill = "url(#" + el.id + ")";
-                            $(node, {fill: "url(#" + el.id + ")"});
-                            o.pattern = el;
-                            o.pattern && updatePosition(o);
-                            break;
-                        }
-                        var clr = R.getRGB(value);
-                        if (!clr.error) {
-                            delete params.gradient;
-                            delete attrs.gradient;
-                            !R.is(attrs.opacity, "undefined") &&
-                                R.is(params.opacity, "undefined") &&
-                                $(node, {opacity: attrs.opacity});
-                            !R.is(attrs["fill-opacity"], "undefined") &&
-                                R.is(params["fill-opacity"], "undefined") &&
-                                $(node, {"fill-opacity": attrs["fill-opacity"]});
-                        } else if ((o.type == "circle" || o.type == "ellipse" || Str(value).charAt() != "r") && addGradientFill(o, value)) {
-                            if ("opacity" in attrs || "fill-opacity" in attrs) {
-                                var gradient = R._g.doc.getElementById(node.getAttribute("fill").replace(/^url\(#|\)$/g, E));
-                                if (gradient) {
-                                    var stops = gradient.getElementsByTagName("stop");
-                                    $(stops[stops.length - 1], {"stop-opacity": ("opacity" in attrs ? attrs.opacity : 1) * ("fill-opacity" in attrs ? attrs["fill-opacity"] : 1)});
-                                }
-                            }
-                            attrs.gradient = value;
-                            attrs.fill = "none";
-                            break;
-                        }
-                        clr[has]("opacity") && $(node, {"fill-opacity": clr.opacity > 1 ? clr.opacity / 100 : clr.opacity});
-                    case "stroke":
-                        clr = R.getRGB(value);
-                        node.setAttribute(att, clr.hex);
-                        att == "stroke" && clr[has]("opacity") && $(node, {"stroke-opacity": clr.opacity > 1 ? clr.opacity / 100 : clr.opacity});
-                        if (att == "stroke" && o._.arrows) {
-                            "startString" in o._.arrows && addArrow(o, o._.arrows.startString);
-                            "endString" in o._.arrows && addArrow(o, o._.arrows.endString, 1);
-                        }
-                        break;
-                    case "gradient":
-                        (o.type == "circle" || o.type == "ellipse" || Str(value).charAt() != "r") && addGradientFill(o, value);
-                        break;
-                    case "opacity":
-                        if (attrs.gradient && !attrs[has]("stroke-opacity")) {
-                            $(node, {"stroke-opacity": value > 1 ? value / 100 : value});
-                        }
-                        // fall
-                    case "fill-opacity":
-                        if (attrs.gradient) {
-                            gradient = R._g.doc.getElementById(node.getAttribute("fill").replace(/^url\(#|\)$/g, E));
-                            if (gradient) {
-                                stops = gradient.getElementsByTagName("stop");
-                                $(stops[stops.length - 1], {"stop-opacity": value});
-                            }
-                            break;
-                        }
-                    default:
-                        att == "font-size" && (value = toInt(value, 10) + "px");
-                        var cssrule = att.replace(/(\-.)/g, function (w) {
-                            return w.substring(1).toUpperCase();
-                        });
-                        node.style[cssrule] = value;
-                        o._.dirty = 1;
-                        node.setAttribute(att, value);
-                        break;
-                }
-            }
-        }
-
-        tuneText(o, params);
-        node.style.visibility = vis;
-    },
-    leading = 1.2,
-    tuneText = function (el, params) {
-        if (el.type != "text" || !(params[has]("text") || params[has]("font") || params[has]("font-size") || params[has]("x") || params[has]("y"))) {
-            return;
-        }
-        var a = el.attrs,
-            node = el.node,
-            fontSize = node.firstChild ? toInt(R._g.doc.defaultView.getComputedStyle(node.firstChild, E).getPropertyValue("font-size"), 10) : 10;
-
-        if (params[has]("text")) {
-            a.text = params.text;
-            while (node.firstChild) {
-                node.removeChild(node.firstChild);
-            }
-            var texts = Str(params.text).split("\n"),
-                tspans = [],
-                tspan;
-            for (var i = 0, ii = texts.length; i < ii; i++) {
-                tspan = $("tspan");
-                i && $(tspan, {dy: fontSize * leading, x: a.x});
-                tspan.appendChild(R._g.doc.createTextNode(texts[i]));
-                node.appendChild(tspan);
-                tspans[i] = tspan;
-            }
-        } else {
-            tspans = node.getElementsByTagName("tspan");
-            for (i = 0, ii = tspans.length; i < ii; i++) if (i) {
-                $(tspans[i], {dy: fontSize * leading, x: a.x});
-            } else {
-                $(tspans[0], {dy: 0});
-            }
-        }
-        $(node, {x: a.x, y: a.y});
-        el._.dirty = 1;
-        var bb = el._getBBox(),
-            dif = a.y - (bb.y + bb.height / 2);
-        dif && R.is(dif, "finite") && $(tspans[0], {dy: dif});
-    },
-    Element = function (node, svg) {
-        var X = 0,
-            Y = 0;
-        
-        this[0] = this.node = node;
-        
-        node.raphael = true;
-        
-        this.id = R._oid++;
-        node.raphaelid = this.id;
-        this.matrix = R.matrix();
-        this.realPath = null;
-        
-        this.paper = svg;
-        this.attrs = this.attrs || {};
-        this._ = {
-            transform: [],
-            sx: 1,
-            sy: 1,
-            deg: 0,
-            dx: 0,
-            dy: 0,
-            dirty: 1
-        };
-        !svg.bottom && (svg.bottom = this);
-        
-        this.prev = svg.top;
-        svg.top && (svg.top.next = this);
-        svg.top = this;
-        
-        this.next = null;
-    },
-    elproto = R.el;
-
-    Element.prototype = elproto;
-    elproto.constructor = Element;
-
-    R._engine.path = function (pathString, SVG) {
-        var el = $("path");
-        SVG.canvas && SVG.canvas.appendChild(el);
-        var p = new Element(el, SVG);
-        p.type = "path";
-        setFillAndStroke(p, {
-            fill: "none",
-            stroke: "#000",
-            path: pathString
-        });
-        return p;
-    };
-    
-    elproto.rotate = function (deg, cx, cy) {
-        if (this.removed) {
-            return this;
-        }
-        deg = Str(deg).split(separator);
-        if (deg.length - 1) {
-            cx = toFloat(deg[1]);
-            cy = toFloat(deg[2]);
-        }
-        deg = toFloat(deg[0]);
-        (cy == null) && (cx = cy);
-        if (cx == null || cy == null) {
-            var bbox = this.getBBox(1);
-            cx = bbox.x + bbox.width / 2;
-            cy = bbox.y + bbox.height / 2;
-        }
-        this.transform(this._.transform.concat([["r", deg, cx, cy]]));
-        return this;
-    };
-    
-    elproto.scale = function (sx, sy, cx, cy) {
-        if (this.removed) {
-            return this;
-        }
-        sx = Str(sx).split(separator);
-        if (sx.length - 1) {
-            sy = toFloat(sx[1]);
-            cx = toFloat(sx[2]);
-            cy = toFloat(sx[3]);
-        }
-        sx = toFloat(sx[0]);
-        (sy == null) && (sy = sx);
-        (cy == null) && (cx = cy);
-        if (cx == null || cy == null) {
-            var bbox = this.getBBox(1);
-        }
-        cx = cx == null ? bbox.x + bbox.width / 2 : cx;
-        cy = cy == null ? bbox.y + bbox.height / 2 : cy;
-        this.transform(this._.transform.concat([["s", sx, sy, cx, cy]]));
-        return this;
-    };
-    
-    elproto.translate = function (dx, dy) {
-        if (this.removed) {
-            return this;
-        }
-        dx = Str(dx).split(separator);
-        if (dx.length - 1) {
-            dy = toFloat(dx[1]);
-        }
-        dx = toFloat(dx[0]) || 0;
-        dy = +dy || 0;
-        this.transform(this._.transform.concat([["t", dx, dy]]));
-        return this;
-    };
-    
-    elproto.transform = function (tstr) {
-        var _ = this._;
-        if (tstr == null) {
-            return _.transform;
-        }
-        R._extractTransform(this, tstr);
-
-        this.clip && $(this.clip, {transform: this.matrix.invert()});
-        this.pattern && updatePosition(this);
-        this.node && $(this.node, {transform: this.matrix});
-    
-        if (_.sx != 1 || _.sy != 1) {
-            var sw = this.attrs[has]("stroke-width") ? this.attrs["stroke-width"] : 1;
-            this.attr({"stroke-width": sw});
-        }
-
-        return this;
-    };
-    
-    elproto.hide = function () {
-        !this.removed && this.paper.safari(this.node.style.display = "none");
-        return this;
-    };
-    
-    elproto.show = function () {
-        !this.removed && this.paper.safari(this.node.style.display = "");
-        return this;
-    };
-    
-    elproto.remove = function () {
-        if (this.removed) {
-            return;
-        }
-        this.paper.__set__ && this.paper.__set__.exclude(this);
-        eve.unbind("*.*." + this.id);
-        R._tear(this, this.paper);
-        this.node.parentNode.removeChild(this.node);
-        for (var i in this) {
-            delete this[i];
-        }
-        this.removed = true;
-    };
-    elproto._getBBox = function () {
-        if (this.node.style.display == "none") {
-            this.show();
-            var hide = true;
-        }
-        var bbox = {};
-        try {
-            bbox = this.node.getBBox();
-        } catch(e) {
-            // Firefox 3.0.x plays badly here
-        } finally {
-            bbox = bbox || {};
-        }
-        hide && this.hide();
-        return bbox;
-    };
-    
-    elproto.attr = function (name, value) {
-        if (this.removed) {
-            return this;
-        }
-        if (name == null) {
-            var res = {};
-            for (var a in this.attrs) if (this.attrs[has](a)) {
-                res[a] = this.attrs[a];
-            }
-            res.gradient && res.fill == "none" && (res.fill = res.gradient) && delete res.gradient;
-            res.transform = this._.transform;
-            return res;
-        }
-        if (value == null && R.is(name, "string")) {
-            if (name == "fill" && this.attrs.fill == "none" && this.attrs.gradient) {
-                return this.attrs.gradient;
-            }
-            if (name == "transform") {
-                return this._.transform;
-            }
-            var names = name.split(separator),
-                out = {};
-            for (var i = 0, ii = names.length; i < ii; i++) {
-                name = names[i];
-                if (name in this.attrs) {
-                    out[name] = this.attrs[name];
-                } else if (R.is(this.paper.customAttributes[name], "function")) {
-                    out[name] = this.paper.customAttributes[name].def;
-                } else {
-                    out[name] = R._availableAttrs[name];
-                }
-            }
-            return ii - 1 ? out : out[names[0]];
-        }
-        if (value == null && R.is(name, "array")) {
-            out = {};
-            for (i = 0, ii = name.length; i < ii; i++) {
-                out[name[i]] = this.attr(name[i]);
-            }
-            return out;
-        }
-        if (value != null) {
-            var params = {};
-            params[name] = value;
-        } else if (name != null && R.is(name, "object")) {
-            params = name;
-        }
-        for (var key in params) {
-            eve("attr." + key + "." + this.id, this, params[key]);
-        }
-        for (key in this.paper.customAttributes) if (this.paper.customAttributes[has](key) && params[has](key) && R.is(this.paper.customAttributes[key], "function")) {
-            var par = this.paper.customAttributes[key].apply(this, [].concat(params[key]));
-            this.attrs[key] = params[key];
-            for (var subkey in par) if (par[has](subkey)) {
-                params[subkey] = par[subkey];
-            }
-        }
-        setFillAndStroke(this, params);
-        return this;
-    };
-    
-    elproto.toFront = function () {
-        if (this.removed) {
-            return this;
-        }
-        this.node.parentNode.appendChild(this.node);
-        var svg = this.paper;
-        svg.top != this && R._tofront(this, svg);
-        return this;
-    };
-    
-    elproto.toBack = function () {
-        if (this.removed) {
-            return this;
-        }
-        if (this.node.parentNode.firstChild != this.node) {
-            this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild);
-            R._toback(this, this.paper);
-            var svg = this.paper;
-        }
-        return this;
-    };
-    
-    elproto.insertAfter = function (element) {
-        if (this.removed) {
-            return this;
-        }
-        var node = element.node || element[element.length - 1].node;
-        if (node.nextSibling) {
-            node.parentNode.insertBefore(this.node, node.nextSibling);
-        } else {
-            node.parentNode.appendChild(this.node);
-        }
-        R._insertafter(this, element, this.paper);
-        return this;
-    };
-    
-    elproto.insertBefore = function (element) {
-        if (this.removed) {
-            return this;
-        }
-        var node = element.node || element[0].node;
-        node.parentNode.insertBefore(this.node, node);
-        R._insertbefore(this, element, this.paper);
-        return this;
-    };
-    elproto.blur = function (size) {
-        // Experimental. No Safari support. Use it on your own risk.
-        var t = this;
-        if (+size !== 0) {
-            var fltr = $("filter"),
-                blur = $("feGaussianBlur");
-            t.attrs.blur = size;
-            fltr.id = R.createUUID();
-            $(blur, {stdDeviation: +size || 1.5});
-            fltr.appendChild(blur);
-            t.paper.defs.appendChild(fltr);
-            t._blur = fltr;
-            $(t.node, {filter: "url(#" + fltr.id + ")"});
-        } else {
-            if (t._blur) {
-                t._blur.parentNode.removeChild(t._blur);
-                delete t._blur;
-                delete t.attrs.blur;
-            }
-            t.node.removeAttribute("filter");
-        }
-    };
-    R._engine.circle = function (svg, x, y, r) {
-        var el = $("circle");
-        svg.canvas && svg.canvas.appendChild(el);
-        var res = new Element(el, svg);
-        res.attrs = {cx: x, cy: y, r: r, fill: "none", stroke: "#000"};
-        res.type = "circle";
-        $(el, res.attrs);
-        return res;
-    };
-    R._engine.rect = function (svg, x, y, w, h, r) {
-        var el = $("rect");
-        svg.canvas && svg.canvas.appendChild(el);
-        var res = new Element(el, svg);
-        res.attrs = {x: x, y: y, width: w, height: h, r: r || 0, rx: r || 0, ry: r || 0, fill: "none", stroke: "#000"};
-        res.type = "rect";
-        $(el, res.attrs);
-        return res;
-    };
-    R._engine.ellipse = function (svg, x, y, rx, ry) {
-        var el = $("ellipse");
-        svg.canvas && svg.canvas.appendChild(el);
-        var res = new Element(el, svg);
-        res.attrs = {cx: x, cy: y, rx: rx, ry: ry, fill: "none", stroke: "#000"};
-        res.type = "ellipse";
-        $(el, res.attrs);
-        return res;
-    };
-    R._engine.image = function (svg, src, x, y, w, h) {
-        var el = $("image");
-        $(el, {x: x, y: y, width: w, height: h, preserveAspectRatio: "none"});
-        el.setAttributeNS(xlink, "href", src);
-        svg.canvas && svg.canvas.appendChild(el);
-        var res = new Element(el, svg);
-        res.attrs = {x: x, y: y, width: w, height: h, src: src};
-        res.type = "image";
-        return res;
-    };
-    R._engine.text = function (svg, x, y, text) {
-        var el = $("text");
-        // $(el, {x: x, y: y, "text-anchor": "middle"});
-        svg.canvas && svg.canvas.appendChild(el);
-        var res = new Element(el, svg);
-        res.attrs = {
-            x: x,
-            y: y,
-            "text-anchor": "middle",
-            text: text,
-            font: R._availableAttrs.font,
-            stroke: "none",
-            fill: "#000"
-        };
-        res.type = "text";
-        setFillAndStroke(res, res.attrs);
-        return res;
-    };
-    R._engine.setSize = function (width, height) {
-        this.width = width || this.width;
-        this.height = height || this.height;
-        this.canvas.setAttribute("width", this.width);
-        this.canvas.setAttribute("height", this.height);
-        if (this._viewBox) {
-            this.setViewBox.apply(this, this._viewBox);
-        }
-        return this;
-    };
-    R._engine.create = function () {
-        var con = R._getContainer.apply(0, arguments),
-            container = con && con.container,
-            x = con.x,
-            y = con.y,
-            width = con.width,
-            height = con.height;
-        if (!container) {
-            throw new Error("SVG container not found.");
-        }
-        var cnvs = $("svg"),
-            css = "overflow:hidden;",
-            isFloating;
-        x = x || 0;
-        y = y || 0;
-        width = width || 512;
-        height = height || 342;
-        $(cnvs, {
-            height: height,
-            version: 1.1,
-            width: width,
-            xmlns: "http://www.w3.org/2000/svg"
-        });
-        if (container == 1) {
-            cnvs.style.cssText = css + "position:absolute;left:" + x + "px;top:" + y + "px";
-            R._g.doc.body.appendChild(cnvs);
-            isFloating = 1;
-        } else {
-            cnvs.style.cssText = css + "position:relative";
-            if (container.firstChild) {
-                container.insertBefore(cnvs, container.firstChild);
-            } else {
-                container.appendChild(cnvs);
-            }
-        }
-        container = new R._Paper;
-        container.width = width;
-        container.height = height;
-        container.canvas = cnvs;
-        // plugins.call(container, container, R.fn);
-        container.clear();
-        container._left = container._top = 0;
-        isFloating && (container.renderfix = function () {});
-        container.renderfix();
-        return container;
-    };
-    R._engine.setViewBox = function (x, y, w, h, fit) {
-        eve("setViewBox", this, this._viewBox, [x, y, w, h, fit]);
-        var size = mmax(w / this.width, h / this.height),
-            top = this.top,
-            aspectRatio = fit ? "meet" : "xMinYMin",
-            vb,
-            sw;
-        if (x == null) {
-            if (this._vbSize) {
-                size = 1;
-            }
-            delete this._vbSize;
-            vb = "0 0 " + this.width + S + this.height;
-        } else {
-            this._vbSize = size;
-            vb = x + S + y + S + w + S + h;
-        }
-        $(this.canvas, {
-            viewBox: vb,
-            preserveAspectRatio: aspectRatio
-        });
-        while (size && top) {
-            sw = "stroke-width" in top.attrs ? top.attrs["stroke-width"] : 1;
-            top.attr({"stroke-width": sw});
-            top._.dirty = 1;
-            top._.dirtyT = 1;
-            top = top.prev;
-        }
-        this._viewBox = [x, y, w, h, !!fit];
-        return this;
-    };
-    
-    R.prototype.renderfix = function () {
-        var cnvs = this.canvas,
-            s = cnvs.style,
-            pos = cnvs.getScreenCTM() || cnvs.createSVGMatrix(),
-            left = -pos.e % 1,
-            top = -pos.f % 1;
-        if (left || top) {
-            if (left) {
-                this._left = (this._left + left) % 1;
-                s.left = this._left + "px";
-            }
-            if (top) {
-                this._top = (this._top + top) % 1;
-                s.top = this._top + "px";
-            }
-        }
-    };
-    
-    R.prototype.clear = function () {
-        R.eve("clear", this);
-        var c = this.canvas;
-        while (c.firstChild) {
-            c.removeChild(c.firstChild);
-        }
-        this.bottom = this.top = null;
-        (this.desc = $("desc")).appendChild(R._g.doc.createTextNode("Created with Rapha\xebl " + R.version));
-        c.appendChild(this.desc);
-        c.appendChild(this.defs = $("defs"));
-    };
-    
-    R.prototype.remove = function () {
-        eve("remove", this);
-        this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas);
-        for (var i in this) {
-            this[i] = removed(i);
-        }
-    };
-    var setproto = R.st;
-    for (var method in elproto) if (elproto[has](method) && !setproto[has](method)) {
-        setproto[method] = (function (methodname) {
-            return function () {
-                var arg = arguments;
-                return this.forEach(function (el) {
-                    el[methodname].apply(el, arg);
-                });
-            };
-        })(method);
-    }
-}(window.Raphael);
-
-// ┌─────────────────────────────────────────────────────────────────────┐ \\
-// │ Raphaël 2 - JavaScript Vector Library                               │ \\
-// ├─────────────────────────────────────────────────────────────────────┤ \\
-// │ VML Module                                                          │ \\
-// ├─────────────────────────────────────────────────────────────────────┤ \\
-// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\
-// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\
-// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\
-// └─────────────────────────────────────────────────────────────────────┘ \\
-window.Raphael.vml && function (R) {
-    var has = "hasOwnProperty",
-        Str = String,
-        toFloat = parseFloat,
-        math = Math,
-        round = math.round,
-        mmax = math.max,
-        mmin = math.min,
-        abs = math.abs,
-        fillString = "fill",
-        separator = /[, ]+/,
-        eve = R.eve,
-        ms = " progid:DXImageTransform.Microsoft",
-        S = " ",
-        E = "",
-        map = {M: "m", L: "l", C: "c", Z: "x", m: "t", l: "r", c: "v", z: "x"},
-        bites = /([clmz]),?([^clmz]*)/gi,
-        blurregexp = / progid:\S+Blur\([^\)]+\)/g,
-        val = /-?[^,\s-]+/g,
-        cssDot = "position:absolute;left:0;top:0;width:1px;height:1px",
-        zoom = 21600,
-        pathTypes = {path: 1, rect: 1, image: 1},
-        ovalTypes = {circle: 1, ellipse: 1},
-        path2vml = function (path) {
-            var total =  /[ahqstv]/ig,
-                command = R._pathToAbsolute;
-            Str(path).match(total) && (command = R._path2curve);
-            total = /[clmz]/g;
-            if (command == R._pathToAbsolute && !Str(path).match(total)) {
-                var res = Str(path).replace(bites, function (all, command, args) {
-                    var vals = [],
-                        isMove = command.toLowerCase() == "m",
-                        res = map[command];
-                    args.replace(val, function (value) {
-                        if (isMove && vals.length == 2) {
-                            res += vals + map[command == "m" ? "l" : "L"];
-                            vals = [];
-                        }
-                        vals.push(round(value * zoom));
-                    });
-                    return res + vals;
-                });
-                return res;
-            }
-            var pa = command(path), p, r;
-            res = [];
-            for (var i = 0, ii = pa.length; i < ii; i++) {
-                p = pa[i];
-                r = pa[i][0].toLowerCase();
-                r == "z" && (r = "x");
-                for (var j = 1, jj = p.length; j < jj; j++) {
-                    r += round(p[j] * zoom) + (j != jj - 1 ? "," : E);
-                }
-                res.push(r);
-            }
-            return res.join(S);
-        },
-        compensation = function (deg, dx, dy) {
-            var m = R.matrix();
-            m.rotate(-deg, .5, .5);
-            return {
-                dx: m.x(dx, dy),
-                dy: m.y(dx, dy)
-            };
-        },
-        setCoords = function (p, sx, sy, dx, dy, deg) {
-            var _ = p._,
-                m = p.matrix,
-                fillpos = _.fillpos,
-                o = p.node,
-                s = o.style,
-                y = 1,
-                flip = "",
-                dxdy,
-                kx = zoom / sx,
-                ky = zoom / sy;
-            s.visibility = "hidden";
-            if (!sx || !sy) {
-                return;
-            }
-            o.coordsize = abs(kx) + S + abs(ky);
-            s.rotation = deg * (sx * sy < 0 ? -1 : 1);
-            if (deg) {
-                var c = compensation(deg, dx, dy);
-                dx = c.dx;
-                dy = c.dy;
-            }
-            sx < 0 && (flip += "x");
-            sy < 0 && (flip += " y") && (y = -1);
-            s.flip = flip;
-            o.coordorigin = (dx * -kx) + S + (dy * -ky);
-            if (fillpos || _.fillsize) {
-                var fill = o.getElementsByTagName(fillString);
-                fill = fill && fill[0];
-                o.removeChild(fill);
-                if (fillpos) {
-                    c = compensation(deg, m.x(fillpos[0], fillpos[1]), m.y(fillpos[0], fillpos[1]));
-                    fill.position = c.dx * y + S + c.dy * y;
-                }
-                if (_.fillsize) {
-                    fill.size = _.fillsize[0] * abs(sx) + S + _.fillsize[1] * abs(sy);
-                }
-                o.appendChild(fill);
-            }
-            s.visibility = "visible";
-        };
-    R.toString = function () {
-        return  "Your browser doesn\u2019t support SVG. Falling down to VML.\nYou are running Rapha\xebl " + this.version;
-    };
-    addArrow = function (o, value, isEnd) {
-        var values = Str(value).toLowerCase().split("-"),
-            se = isEnd ? "end" : "start",
-            i = values.length,
-            type = "classic",
-            w = "medium",
-            h = "medium";
-        while (i--) {
-            switch (values[i]) {
-                case "block":
-                case "classic":
-                case "oval":
-                case "diamond":
-                case "open":
-                case "none":
-                    type = values[i];
-                    break;
-                case "wide":
-                case "narrow": h = values[i]; break;
-                case "long":
-                case "short": w = values[i]; break;
-            }
-        }
-        var stroke = o.node.getElementsByTagName("stroke")[0];
-        stroke[se + "arrow"] = type;
-        stroke[se + "arrowlength"] = w;
-        stroke[se + "arrowwidth"] = h;
-    };
-    setFillAndStroke = function (o, params) {
-        // o.paper.canvas.style.display = "none";
-        o.attrs = o.attrs || {};
-        var node = o.node,
-            a = o.attrs,
-            s = node.style,
-            xy,
-            newpath = pathTypes[o.type] && (params.x != a.x || params.y != a.y || params.width != a.width || params.height != a.height || params.cx != a.cx || params.cy != a.cy || params.rx != a.rx || params.ry != a.ry || params.r != a.r),
-            isOval = ovalTypes[o.type] && (a.cx != params.cx || a.cy != params.cy || a.r != params.r || a.rx != params.rx || a.ry != params.ry),
-            res = o;
-
-
-        for (var par in params) if (params[has](par)) {
-            a[par] = params[par];
-        }
-        if (newpath) {
-            a.path = R._getPath[o.type](o);
-            o._.dirty = 1;
-        }
-        params.href && (node.href = params.href);
-        params.title && (node.title = params.title);
-        params.target && (node.target = params.target);
-        params.cursor && (s.cursor = params.cursor);
-        "blur" in params && o.blur(params.blur);
-        if (params.path && o.type == "path" || newpath) {
-            node.path = path2vml(~Str(a.path).toLowerCase().indexOf("r") ? R._pathToAbsolute(a.path) : a.path);
-            if (o.type == "image") {
-                o._.fillpos = [a.x, a.y];
-                o._.fillsize = [a.width, a.height];
-                setCoords(o, 1, 1, 0, 0, 0);
-            }
-        }
-        "transform" in params && o.transform(params.transform);
-        if (isOval) {
-            var cx = +a.cx,
-                cy = +a.cy,
-                rx = +a.rx || +a.r || 0,
-                ry = +a.ry || +a.r || 0;
-            node.path = R.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x", round((cx - rx) * zoom), round((cy - ry) * zoom), round((cx + rx) * zoom), round((cy + ry) * zoom), round(cx * zoom));
-        }
-        if ("clip-rect" in params) {
-            var rect = Str(params["clip-rect"]).split(separator);
-            if (rect.length == 4) {
-                rect[2] = +rect[2] + (+rect[0]);
-                rect[3] = +rect[3] + (+rect[1]);
-                var div = node.clipRect || R._g.doc.createElement("div"),
-                    dstyle = div.style;
-                dstyle.clip = R.format("rect({1}px {2}px {3}px {0}px)", rect);
-                if (!node.clipRect) {
-                    dstyle.position = "absolute";
-                    dstyle.top = 0;
-                    dstyle.left = 0;
-                    dstyle.width = o.paper.width + "px";
-                    dstyle.height = o.paper.height + "px";
-                    node.parentNode.insertBefore(div, node);
-                    div.appendChild(node);
-                    node.clipRect = div;
-                }
-            }
-            if (!params["clip-rect"]) {
-                node.clipRect && (node.clipRect.style.clip = E);
-            }
-        }
-        if (o.textpath) {
-            var textpathStyle = o.textpath.style;
-            params.font && (textpathStyle.font = params.font);
-            params["font-family"] && (textpathStyle.fontFamily = '"' + params["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g, E) + '"');
-            params["font-size"] && (textpathStyle.fontSize = params["font-size"]);
-            params["font-weight"] && (textpathStyle.fontWeight = params["font-weight"]);
-            params["font-style"] && (textpathStyle.fontStyle = params["font-style"]);
-        }
-        if ("arrow-start" in params) {
-            addArrow(res, params["arrow-start"]);
-        }
-        if ("arrow-end" in params) {
-            addArrow(res, params["arrow-end"], 1);
-        }
-        if (params.opacity != null || 
-            params["stroke-width"] != null ||
-            params.fill != null ||
-            params.src != null ||
-            params.stroke != null ||
-            params["stroke-width"] != null ||
-            params["stroke-opacity"] != null ||
-            params["fill-opacity"] != null ||
-            params["stroke-dasharray"] != null ||
-            params["stroke-miterlimit"] != null ||
-            params["stroke-linejoin"] != null ||
-            params["stroke-linecap"] != null) {
-            var fill = node.getElementsByTagName(fillString),
-                newfill = false;
-            fill = fill && fill[0];
-            !fill && (newfill = fill = createNode(fillString));
-            if (o.type == "image" && params.src) {
-                fill.src = params.src;
-            }
-            params.fill && (fill.on = true);
-            if (fill.on == null || params.fill == "none" || params.fill === null) {
-                fill.on = false;
-            }
-            if (fill.on && params.fill) {
-                var isURL = Str(params.fill).match(R._ISURL);
-                if (isURL) {
-                    fill.parentNode == node && node.removeChild(fill);
-                    fill.rotate = true;
-                    fill.src = isURL[1];
-                    fill.type = "tile";
-                    var bbox = o.getBBox(1);
-                    fill.position = bbox.x + S + bbox.y;
-                    o._.fillpos = [bbox.x, bbox.y];
-
-                    R._preload(isURL[1], function () {
-                        o._.fillsize = [this.offsetWidth, this.offsetHeight];
-                    });
-                } else {
-                    fill.color = R.getRGB(params.fill).hex;
-                    fill.src = E;
-                    fill.type = "solid";
-                    if (R.getRGB(params.fill).error && (res.type in {circle: 1, ellipse: 1} || Str(params.fill).charAt() != "r") && addGradientFill(res, params.fill, fill)) {
-                        a.fill = "none";
-                        a.gradient = params.fill;
-                        fill.rotate = false;
-                    }
-                }
-            }
-            if ("fill-opacity" in params || "opacity" in params) {
-                var opacity = ((+a["fill-opacity"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1) * ((+R.getRGB(params.fill).o + 1 || 2) - 1);
-                opacity = mmin(mmax(opacity, 0), 1);
-                fill.opacity = opacity;
-                if (fill.src) {
-                    fill.color = "none";
-                }
-            }
-            node.appendChild(fill);
-            var stroke = (node.getElementsByTagName("stroke") && node.getElementsByTagName("stroke")[0]),
-            newstroke = false;
-            !stroke && (newstroke = stroke = createNode("stroke"));
-            if ((params.stroke && params.stroke != "none") ||
-                params["stroke-width"] ||
-                params["stroke-opacity"] != null ||
-                params["stroke-dasharray"] ||
-                params["stroke-miterlimit"] ||
-                params["stroke-linejoin"] ||
-                params["stroke-linecap"]) {
-                stroke.on = true;
-            }
-            (params.stroke == "none" || params.stroke === null || stroke.on == null || params.stroke == 0 || params["stroke-width"] == 0) && (stroke.on = false);
-            var strokeColor = R.getRGB(params.stroke);
-            stroke.on && params.stroke && (stroke.color = strokeColor.hex);
-            opacity = ((+a["stroke-opacity"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1) * ((+strokeColor.o + 1 || 2) - 1);
-            var width = (toFloat(params["stroke-width"]) || 1) * .75;
-            opacity = mmin(mmax(opacity, 0), 1);
-            params["stroke-width"] == null && (width = a["stroke-width"]);
-            params["stroke-width"] && (stroke.weight = width);
-            width && width < 1 && (opacity *= width) && (stroke.weight = 1);
-            stroke.opacity = opacity;
-        
-            params["stroke-linejoin"] && (stroke.joinstyle = params["stroke-linejoin"] || "miter");
-            stroke.miterlimit = params["stroke-miterlimit"] || 8;
-            params["stroke-linecap"] && (stroke.endcap = params["stroke-linecap"] == "butt" ? "flat" : params["stroke-linecap"] == "square" ? "square" : "round");
-            if (params["stroke-dasharray"]) {
-                var dasharray = {
-                    "-": "shortdash",
-                    ".": "shortdot",
-                    "-.": "shortdashdot",
-                    "-..": "shortdashdotdot",
-                    ". ": "dot",
-                    "- ": "dash",
-                    "--": "longdash",
-                    "- .": "dashdot",
-                    "--.": "longdashdot",
-                    "--..": "longdashdotdot"
-                };
-                stroke.dashstyle = dasharray[has](params["stroke-dasharray"]) ? dasharray[params["stroke-dasharray"]] : E;
-            }
-            newstroke && node.appendChild(stroke);
-        }
-        if (res.type == "text") {
-            res.paper.canvas.style.display = E;
-            var span = res.paper.span,
-                m = 100,
-                fontSize = a.font && a.font.match(/\d+(?:\.\d*)?(?=px)/);
-            s = span.style;
-            a.font && (s.font = a.font);
-            a["font-family"] && (s.fontFamily = a["font-family"]);
-            a["font-weight"] && (s.fontWeight = a["font-weight"]);
-            a["font-style"] && (s.fontStyle = a["font-style"]);
-            fontSize = toFloat(fontSize ? fontSize[0] : a["font-size"]);
-            s.fontSize = fontSize * m + "px";
-            res.textpath.string && (span.innerHTML = Str(res.textpath.string).replace(/</g, "&#60;").replace(/&/g, "&#38;").replace(/\n/g, "<br>"));
-            var brect = span.getBoundingClientRect();
-            res.W = a.w = (brect.right - brect.left) / m;
-            res.H = a.h = (brect.bottom - brect.top) / m;
-            // res.paper.canvas.style.display = "none";
-            res.X = a.x;
-            res.Y = a.y + res.H / 2;
-
-            ("x" in params || "y" in params) && (res.path.v = R.format("m{0},{1}l{2},{1}", round(a.x * zoom), round(a.y * zoom), round(a.x * zoom) + 1));
-            var dirtyattrs = ["x", "y", "text", "font", "font-family", "font-weight", "font-style", "font-size"];
-            for (var d = 0, dd = dirtyattrs.length; d < dd; d++) if (dirtyattrs[d] in params) {
-                res._.dirty = 1;
-                break;
-            }
-        
-            // text-anchor emulation
-            switch (a["text-anchor"]) {
-                case "start":
-                    res.textpath.style["v-text-align"] = "left";
-                    res.bbx = res.W / 2;
-                break;
-                case "end":
-                    res.textpath.style["v-text-align"] = "right";
-                    res.bbx = -res.W / 2;
-                break;
-                default:
-                    res.textpath.style["v-text-align"] = "center";
-                    res.bbx = 0;
-                break;
-            }
-            res.textpath.style["v-text-kern"] = true;
-        }
-        // res.paper.canvas.style.display = E;
-    };
-    addGradientFill = function (o, gradient, fill) {
-        o.attrs = o.attrs || {};
-        var attrs = o.attrs,
-            pow = Math.pow,
-            opacity,
-            oindex,
-            type = "linear",
-            fxfy = ".5 .5";
-        o.attrs.gradient = gradient;
-        gradient = Str(gradient).replace(R._radial_gradient, function (all, fx, fy) {
-            type = "radial";
-            if (fx && fy) {
-                fx = toFloat(fx);
-                fy = toFloat(fy);
-                pow(fx - .5, 2) + pow(fy - .5, 2) > .25 && (fy = math.sqrt(.25 - pow(fx - .5, 2)) * ((fy > .5) * 2 - 1) + .5);
-                fxfy = fx + S + fy;
-            }
-            return E;
-        });
-        gradient = gradient.split(/\s*\-\s*/);
-        if (type == "linear") {
-            var angle = gradient.shift();
-            angle = -toFloat(angle);
-            if (isNaN(angle)) {
-                return null;
-            }
-        }
-        var dots = R._parseDots(gradient);
-        if (!dots) {
-            return null;
-        }
-        o = o.shape || o.node;
-        if (dots.length) {
-            o.removeChild(fill);
-            fill.on = true;
-            fill.method = "none";
-            fill.color = dots[0].color;
-            fill.color2 = dots[dots.length - 1].color;
-            var clrs = [];
-            for (var i = 0, ii = dots.length; i < ii; i++) {
-                dots[i].offset && clrs.push(dots[i].offset + S + dots[i].color);
-            }
-            fill.colors = clrs.length ? clrs.join() : "0% " + fill.color;
-            if (type == "radial") {
-                fill.type = "gradientTitle";
-                fill.focus = "100%";
-                fill.focussize = "0 0";
-                fill.focusposition = fxfy;
-                fill.angle = 0;
-            } else {
-                // fill.rotate= true;
-                fill.type = "gradient";
-                fill.angle = (270 - angle) % 360;
-            }
-            o.appendChild(fill);
-        }
-        return 1;
-    };
-    Element = function (node, vml) {
-        this[0] = this.node = node;
-        node.raphael = true;
-        this.id = R._oid++;
-        node.raphaelid = this.id;
-        this.X = 0;
-        this.Y = 0;
-        this.attrs = {};
-        this.paper = vml;
-        this.matrix = R.matrix();
-        this._ = {
-            transform: [],
-            sx: 1,
-            sy: 1,
-            dx: 0,
-            dy: 0,
-            deg: 0,
-            dirty: 1,
-            dirtyT: 1
-        };
-        !vml.bottom && (vml.bottom = this);
-        this.prev = vml.top;
-        vml.top && (vml.top.next = this);
-        vml.top = this;
-        this.next = null;
-    };
-    var elproto = R.el;
-
-    Element.prototype = elproto;
-    elproto.constructor = Element;
-    elproto.transform = function (tstr) {
-        if (tstr == null) {
-            return this._.transform;
-        }
-        var vbs = this.paper._viewBoxShift,
-            vbt = vbs ? "s" + [vbs.scale, vbs.scale] + "-1-1t" + [vbs.dx, vbs.dy] : E,
-            oldt;
-        if (vbs) {
-            oldt = tstr = Str(tstr).replace(/\.{3}|\u2026/g, this._.transform || E);
-        }
-        R._extractTransform(this, vbt + tstr);
-        var matrix = this.matrix.clone(),
-            skew = this.skew,
-            o = this.node,
-            split,
-            isGrad = ~Str(this.attrs.fill).indexOf("-"),
-            isPatt = !Str(this.attrs.fill).indexOf("url(");
-        matrix.translate(-.5, -.5);
-        if (isPatt || isGrad || this.type == "image") {
-            skew.matrix = "1 0 0 1";
-            skew.offset = "0 0";
-            split = matrix.split();
-            if ((isGrad && split.noRotation) || !split.isSimple) {
-                o.style.filter = matrix.toFilter();
-                var bb = this.getBBox(),
-                    bbt = this.getBBox(1),
-                    dx = bb.x - bbt.x,
-                    dy = bb.y - bbt.y;
-                o.coordorigin = (dx * -zoom) + S + (dy * -zoom);
-                setCoords(this, 1, 1, dx, dy, 0);
-            } else {
-                o.style.filter = E;
-                setCoords(this, split.scalex, split.scaley, split.dx, split.dy, split.rotate);
-            }
-        } else {
-            o.style.filter = E;
-            skew.matrix = Str(matrix);
-            skew.offset = matrix.offset();
-        }
-        oldt && (this._.transform = oldt);
-        return this;
-    };
-    elproto.rotate = function (deg, cx, cy) {
-        if (this.removed) {
-            return this;
-        }
-        if (deg == null) {
-            return;
-        }
-        deg = Str(deg).split(separator);
-        if (deg.length - 1) {
-            cx = toFloat(deg[1]);
-            cy = toFloat(deg[2]);
-        }
-        deg = toFloat(deg[0]);
-        (cy == null) && (cx = cy);
-        if (cx == null || cy == null) {
-            var bbox = this.getBBox(1);
-            cx = bbox.x + bbox.width / 2;
-            cy = bbox.y + bbox.height / 2;
-        }
-        this._.dirtyT = 1;
-        this.transform(this._.transform.concat([["r", deg, cx, cy]]));
-        return this;
-    };
-    elproto.translate = function (dx, dy) {
-        if (this.removed) {
-            return this;
-        }
-        dx = Str(dx).split(separator);
-        if (dx.length - 1) {
-            dy = toFloat(dx[1]);
-        }
-        dx = toFloat(dx[0]) || 0;
-        dy = +dy || 0;
-        if (this._.bbox) {
-            this._.bbox.x += dx;
-            this._.bbox.y += dy;
-        }
-        this.transform(this._.transform.concat([["t", dx, dy]]));
-        return this;
-    };
-    elproto.scale = function (sx, sy, cx, cy) {
-        if (this.removed) {
-            return this;
-        }
-        sx = Str(sx).split(separator);
-        if (sx.length - 1) {
-            sy = toFloat(sx[1]);
-            cx = toFloat(sx[2]);
-            cy = toFloat(sx[3]);
-            isNaN(cx) && (cx = null);
-            isNaN(cy) && (cy = null);
-        }
-        sx = toFloat(sx[0]);
-        (sy == null) && (sy = sx);
-        (cy == null) && (cx = cy);
-        if (cx == null || cy == null) {
-            var bbox = this.getBBox(1);
-        }
-        cx = cx == null ? bbox.x + bbox.width / 2 : cx;
-        cy = cy == null ? bbox.y + bbox.height / 2 : cy;
-    
-        this.transform(this._.transform.concat([["s", sx, sy, cx, cy]]));
-        this._.dirtyT = 1;
-        return this;
-    };
-    elproto.hide = function () {
-        !this.removed && (this.node.style.display = "none");
-        return this;
-    };
-    elproto.show = function () {
-        !this.removed && (this.node.style.display = E);
-        return this;
-    };
-    elproto._getBBox = function () {
-        if (this.removed) {
-            return {};
-        }
-        if (this.type == "text") {
-            return {
-                x: this.X + (this.bbx || 0) - this.W / 2,
-                y: this.Y - this.H,
-                width: this.W,
-                height: this.H
-            };
-        } else {
-            return pathDimensions(this.attrs.path);
-        }
-    };
-    elproto.remove = function () {
-        if (this.removed) {
-            return;
-        }
-        this.paper.__set__ && this.paper.__set__.exclude(this);
-        R.eve.unbind("*.*." + this.id);
-        R._tear(this, this.paper);
-        this.node.parentNode.removeChild(this.node);
-        this.shape && this.shape.parentNode.removeChild(this.shape);
-        for (var i in this) {
-            delete this[i];
-        }
-        this.removed = true;
-    };
-    elproto.attr = function (name, value) {
-        if (this.removed) {
-            return this;
-        }
-        if (name == null) {
-            var res = {};
-            for (var a in this.attrs) if (this.attrs[has](a)) {
-                res[a] = this.attrs[a];
-            }
-            res.gradient && res.fill == "none" && (res.fill = res.gradient) && delete res.gradient;
-            res.transform = this._.transform;
-            return res;
-        }
-        if (value == null && R.is(name, "string")) {
-            if (name == fillString && this.attrs.fill == "none" && this.attrs.gradient) {
-                return this.attrs.gradient;
-            }
-            var names = name.split(separator),
-                out = {};
-            for (var i = 0, ii = names.length; i < ii; i++) {
-                name = names[i];
-                if (name in this.attrs) {
-                    out[name] = this.attrs[name];
-                } else if (R.is(this.paper.customAttributes[name], "function")) {
-                    out[name] = this.paper.customAttributes[name].def;
-                } else {
-                    out[name] = R._availableAttrs[name];
-                }
-            }
-            return ii - 1 ? out : out[names[0]];
-        }
-        if (this.attrs && value == null && R.is(name, "array")) {
-            out = {};
-            for (i = 0, ii = name.length; i < ii; i++) {
-                out[name[i]] = this.attr(name[i]);
-            }
-            return out;
-        }
-        var params;
-        if (value != null) {
-            params = {};
-            params[name] = value;
-        }
-        value == null && R.is(name, "object") && (params = name);
-        for (var key in params) {
-            eve("attr." + key + "." + this.id, this, params[key]);
-        }
-        if (params) {
-            for (key in this.paper.customAttributes) if (this.paper.customAttributes[has](key) && params[has](key) && R.is(this.paper.customAttributes[key], "function")) {
-                var par = this.paper.customAttributes[key].apply(this, [].concat(params[key]));
-                this.attrs[key] = params[key];
-                for (var subkey in par) if (par[has](subkey)) {
-                    params[subkey] = par[subkey];
-                }
-            }
-            // this.paper.canvas.style.display = "none";
-            if (params.text && this.type == "text") {
-                this.textpath.string = params.text;
-            }
-            setFillAndStroke(this, params);
-            // this.paper.canvas.style.display = E;
-        }
-        return this;
-    };
-    elproto.toFront = function () {
-        !this.removed && this.node.parentNode.appendChild(this.node);
-        this.paper && this.paper.top != this && R._tofront(this, this.paper);
-        return this;
-    };
-    elproto.toBack = function () {
-        if (this.removed) {
-            return this;
-        }
-        if (this.node.parentNode.firstChild != this.node) {
-            this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild);
-            R._toback(this, this.paper);
-        }
-        return this;
-    };
-    elproto.insertAfter = function (element) {
-        if (this.removed) {
-            return this;
-        }
-        if (element.constructor == R.st.constructor) {
-            element = element[element.length - 1];
-        }
-        if (element.node.nextSibling) {
-            element.node.parentNode.insertBefore(this.node, element.node.nextSibling);
-        } else {
-            element.node.parentNode.appendChild(this.node);
-        }
-        R._insertafter(this, element, this.paper);
-        return this;
-    };
-    elproto.insertBefore = function (element) {
-        if (this.removed) {
-            return this;
-        }
-        if (element.constructor == R.st.constructor) {
-            element = element[0];
-        }
-        element.node.parentNode.insertBefore(this.node, element.node);
-        R._insertbefore(this, element, this.paper);
-        return this;
-    };
-    elproto.blur = function (size) {
-        var s = this.node.runtimeStyle,
-            f = s.filter;
-        f = f.replace(blurregexp, E);
-        if (+size !== 0) {
-            this.attrs.blur = size;
-            s.filter = f + S + ms + ".Blur(pixelradius=" + (+size || 1.5) + ")";
-            s.margin = R.format("-{0}px 0 0 -{0}px", round(+size || 1.5));
-        } else {
-            s.filter = f;
-            s.margin = 0;
-            delete this.attrs.blur;
-        }
-    };
-
-    R._engine.path = function (pathString, vml) {
-        var el = createNode("shape");
-        el.style.cssText = cssDot;
-        el.coordsize = zoom + S + zoom;
-        el.coordorigin = vml.coordorigin;
-        var p = new Element(el, vml),
-            attr = {fill: "none", stroke: "#000"};
-        pathString && (attr.path = pathString);
-        p.type = "path";
-        p.path = [];
-        p.Path = E;
-        setFillAndStroke(p, attr);
-        vml.canvas.appendChild(el);
-        var skew = createNode("skew");
-        skew.on = true;
-        el.appendChild(skew);
-        p.skew = skew;
-        p.transform(E);
-        return p;
-    };
-    R._engine.rect = function (vml, x, y, w, h, r) {
-        var path = R._rectPath(x, y, w, h, r),
-            res = vml.path(path),
-            a = res.attrs;
-        res.X = a.x = x;
-        res.Y = a.y = y;
-        res.W = a.width = w;
-        res.H = a.height = h;
-        a.r = r;
-        a.path = path;
-        res.type = "rect";
-        return res;
-    };
-    R._engine.ellipse = function (vml, x, y, rx, ry) {
-        var res = vml.path(),
-            a = res.attrs;
-        res.X = x - rx;
-        res.Y = y - ry;
-        res.W = rx * 2;
-        res.H = ry * 2;
-        res.type = "ellipse";
-        setFillAndStroke(res, {
-            cx: x,
-            cy: y,
-            rx: rx,
-            ry: ry
-        });
-        return res;
-    };
-    R._engine.circle = function (vml, x, y, r) {
-        var res = vml.path(),
-            a = res.attrs;
-        res.X = x - r;
-        res.Y = y - r;
-        res.W = res.H = r * 2;
-        res.type = "circle";
-        setFillAndStroke(res, {
-            cx: x,
-            cy: y,
-            r: r
-        });
-        return res;
-    };
-    R._engine.image = function (vml, src, x, y, w, h) {
-        var path = R._rectPath(x, y, w, h),
-            res = vml.path(path).attr({stroke: "none"}),
-            a = res.attrs,
-            node = res.node,
-            fill = node.getElementsByTagName(fillString)[0];
-        a.src = src;
-        res.X = a.x = x;
-        res.Y = a.y = y;
-        res.W = a.width = w;
-        res.H = a.height = h;
-        a.path = path;
-        res.type = "image";
-        fill.parentNode == node && node.removeChild(fill);
-        fill.rotate = true;
-        fill.src = src;
-        fill.type = "tile";
-        res._.fillpos = [x, y];
-        res._.fillsize = [w, h];
-        node.appendChild(fill);
-        setCoords(res, 1, 1, 0, 0, 0);
-        return res;
-    };
-    R._engine.text = function (vml, x, y, text) {
-        var el = createNode("shape"),
-            path = createNode("path"),
-            o = createNode("textpath");
-        x = x || 0;
-        y = y || 0;
-        text = text || "";
-        path.v = R.format("m{0},{1}l{2},{1}", round(x * zoom), round(y * zoom), round(x * zoom) + 1);
-        path.textpathok = true;
-        o.string = Str(text);
-        o.on = true;
-        el.style.cssText = cssDot;
-        el.coordsize = zoom + S + zoom;
-        el.coordorigin = "0 0";
-        var p = new Element(el, vml),
-            attr = {
-                fill: "#000",
-                stroke: "none",
-                font: R._availableAttrs.font,
-                text: text
-            };
-        p.shape = el;
-        p.path = path;
-        p.textpath = o;
-        p.type = "text";
-        p.attrs.text = Str(text);
-        p.attrs.x = x;
-        p.attrs.y = y;
-        p.attrs.w = 1;
-        p.attrs.h = 1;
-        setFillAndStroke(p, attr);
-        el.appendChild(o);
-        el.appendChild(path);
-        vml.canvas.appendChild(el);
-        var skew = createNode("skew");
-        skew.on = true;
-        el.appendChild(skew);
-        p.skew = skew;
-        p.transform(E);
-        return p;
-    };
-    R._engine.setSize = function (width, height) {
-        var cs = this.canvas.style;
-        this.width = width;
-        this.height = height;
-        width == +width && (width += "px");
-        height == +height && (height += "px");
-        cs.width = width;
-        cs.height = height;
-        cs.clip = "rect(0 " + width + " " + height + " 0)";
-        if (this._viewBox) {
-            setViewBox.apply(this, this._viewBox);
-        }
-        return this;
-    };
-    R._engine.setViewBox = function (x, y, w, h, fit) {
-        R.eve("setViewBox", this, this._viewBox, [x, y, w, h, fit]);
-        var width = this.width,
-            height = this.height,
-            size = 1 / mmax(w / width, h / height),
-            H, W;
-        if (fit) {
-            H = height / h;
-            W = width / w;
-            if (w * H < width) {
-                x -= (width - w * H) / 2 / H;
-            }
-            if (h * W < height) {
-                y -= (height - h * W) / 2 / W;
-            }
-        }
-        this._viewBox = [x, y, w, h, !!fit];
-        this._viewBoxShift = {
-            dx: -x,
-            dy: -y,
-            scale: size
-        };
-        this.forEach(function (el) {
-            el.transform("...");
-        });
-        return this;
-    };
-    var createNode,
-        initWin = function (win) {
-            var doc = win.document;
-            doc.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)");
-            try {
-                !doc.namespaces.rvml && doc.namespaces.add("rvml", "urn:schemas-microsoft-com:vml");
-                createNode = function (tagName) {
-                    return doc.createElement('<rvml:' + tagName + ' class="rvml">');
-                };
-            } catch (e) {
-                createNode = function (tagName) {
-                    return doc.createElement('<' + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');
-                };
-            }
-        };
-    initWin(R._g.win);
-    R._engine.create = function () {
-        var con = R._getContainer.apply(0, arguments),
-            container = con.container,
-            height = con.height,
-            s,
-            width = con.width,
-            x = con.x,
-            y = con.y;
-        if (!container) {
-            throw new Error("VML container not found.");
-        }
-        var res = new R._Paper,
-            c = res.canvas = R._g.doc.createElement("div"),
-            cs = c.style;
-        x = x || 0;
-        y = y || 0;
-        width = width || 512;
-        height = height || 342;
-        res.width = width;
-        res.height = height;
-        width == +width && (width += "px");
-        height == +height && (height += "px");
-        res.coordsize = zoom * 1e3 + S + zoom * 1e3;
-        res.coordorigin = "0 0";
-        res.span = R._g.doc.createElement("span");
-        res.span.style.cssText = "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;";
-        c.appendChild(res.span);
-        cs.cssText = R.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden", width, height);
-        if (container == 1) {
-            R._g.doc.body.appendChild(c);
-            cs.left = x + "px";
-            cs.top = y + "px";
-            cs.position = "absolute";
-        } else {
-            if (container.firstChild) {
-                container.insertBefore(c, container.firstChild);
-            } else {
-                container.appendChild(c);
-            }
-        }
-        // plugins.call(res, res, R.fn);
-        res.renderfix = function () {};
-        return res;
-    };
-    R.prototype.clear = function () {
-        R.eve("clear", this);
-        this.canvas.innerHTML = E;
-        this.span = R._g.doc.createElement("span");
-        this.span.style.cssText = "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";
-        this.canvas.appendChild(this.span);
-        this.bottom = this.top = null;
-    };
-    R.prototype.remove = function () {
-        R.eve("remove", this);
-        this.canvas.parentNode.removeChild(this.canvas);
-        for (var i in this) {
-            this[i] = removed(i);
-        }
-        return true;
-    };
-
-    var setproto = R.st;
-    for (var method in elproto) if (elproto[has](method) && !setproto[has](method)) {
-        setproto[method] = (function (methodname) {
-            return function () {
-                var arg = arguments;
-                return this.forEach(function (el) {
-                    el[methodname].apply(el, arg);
-                });
-            };
-        })(method);
-    }
-}(window.Raphael);
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/js/libs/swfobject.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-/*	SWFObject v2.2 <http://code.google.com/p/swfobject/> 
-	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
-*/
-var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/js/libs/tracemanager.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,512 +0,0 @@
-/*
- * Modelled Trace API
- */
-IriSP.TraceManager = function($) {
-     // If there are more than MAX_FAILURE_COUNT synchronisation
-     // failures, then disable synchronisation
-     MAX_FAILURE_COUNT = 20;
-
-     // If there are more than MAX_BUFFER_SIZE obsels in the buffer,
-     // then "compress" them as a single "ktbsFullBuffer"
-     MAX_BUFFER_SIZE = 500;
-
-     var BufferedService_prototype = {
-         /*
-          *  Buffered service for traces
-          */
-         // url: "",
-         // buffer: [],
-         // isReady: false,
-         // timer: null,
-         // failureCount: 0,
-
-         /* Flush buffer */
-         flush: function() {
-             // FIXME: add mutex on this.buffer
-             if (! this.isReady)
-             {
-                 if (window.console) window.console.log("Sync service not ready");
-             } else if (this.failureCount > MAX_FAILURE_COUNT)
-             {
-                 // Disable synchronisation
-                 this.set_sync_mode('none');
-             } else if (this.buffer.length) {
-                 var temp = this.buffer;
-                 this.buffer = [];
-
-                 if (this.mode == 'GET')
-                 {
-                     // GET mode: do some data mangline. We mark the
-                     // "compressed" nature of the generated JSON by
-                     // prefixing it with c
-                     var data = 'c' + JSON.stringify(temp.map(function (o) { return o.toCompactJSON(); }));
-                     // Swap " (very frequent, which will be
-                     // serialized into %22) and ; (rather rare), this
-                     // saves some bytes
-                     data = data.replace(/[;"]/g, function(s){ return s == ';' ? '"' : ';'; }).replace(/#/g, '%23');
-                     // FIXME: check data length (< 2K is safe)
-                     var request=$('<img />').error( function() { this.failureCount += 1; })
-                         .load( function() { this.failureCount = 0; })
-                         .attr('src', this.url + 'trace/?data=' + data);
-                 }
-                 else
-                 {
-                     $.ajax({ url: this.url + 'trace/',
-                              type: 'POST',
-                              contentType: 'application/json',
-                              data: JSON.stringify(temp.map(function (o) { return o.toJSON(); })),
-                              processData: false,
-                              // Type of the returned data.
-                              dataType: "html",
-                              error: function(jqXHR, textStatus, errorThrown) {
-                                  if (window.console) window.console.log("Error when sending buffer:", textStatus);
-                                  this.failureCount += 1;
-                              },
-                              success: function(data, textStatus, jqXHR) {
-                                  // Reset failureCount to 0 as soon as there is 1 valid answer
-                                  this.failureCount = 0;
-                              }
-                            });
-                 }
-             }
-         },
-
-         /* Sync mode: delayed, sync (immediate sync), none (no
-          * synchronisation with server, the trace has to be explicitly saved
-          * if needed */
-         set_sync_mode: function(mode) {
-             this.sync_mode = mode;
-             if (! this.isReady && mode !== "none")
-                 this.init();
-             if (mode == 'delayed') {
-                 this.start_timer();
-             } else {
-                 this.stop_timer();
-             }
-         },
-
-         /* Enqueue an obsel */
-         enqueue: function(obsel) {
-             if (this.buffer.length > MAX_BUFFER_SIZE)
-             {
-                 obsel = new Obsel('ktbsFullBuffer', this.buffer[0].begin,
-                                   this.buffer[this.buffer.length - 1].end, this.buffer[0].subject);
-                 obsel.trace = this.buffer[0].trace;
-                 this.buffer = [];
-             }
-             this.buffer.push(obsel);
-             if (this.sync_mode === 'sync') {
-                 // Immediate sync of the obsel.
-                 this.flush();
-             }
-         },
-
-         start_timer: function() {
-             var self = this;
-             if (this.timer === null) {
-                 this.timer = window.setInterval(function() {
-                                                     self.flush();
-                                                 }, this.timeOut);
-             }
-         },
-
-         stop_timer: function() {
-             if (this.timer !== null) {
-                 window.clearInterval(this.timer);
-                 this.timer = null;
-             }
-         },
-
-         /*
-          * Initialize the sync service
-          */
-         init: function() {
-             var self = this;
-             if (this.isReady)
-                 /* Already initialized */
-                 return;
-             if (this.mode == 'GET')
-             {
-                 var request=$('<img/>').attr('src', this.url + 'login?userinfo={"name":"ktbs4js"}');
-                 // Do not wait for the return, assume it is
-                 // initialized. This assumption will not work anymore
-                 // if login returns some necessary information
-                 this.isReady = true;
-             }
-             else
-             {
-                 $.ajax({ url: this.url + 'login',
-                          type: 'POST',
-                          data: 'userinfo={"name":"ktbs4js"}',
-                          success: function(data, textStatus, jqXHR) {
-                              self.isReady = true;
-                              if (self.buffer.length) {
-                                  self.flush();
-                              }
-                          }
-                        });
-             }
-         }
-     };
-     var BufferedService = function(url, mode) {
-         this.url = url;
-         this.buffer = [];
-         this.isReady = false;
-         this.timer = null;
-         this.failureCount = 0;
-         // sync_mode is either "none", "sync" or "buffered"
-         this.sync_mode = "none";
-         /* mode can be either POST or GET */
-         if (mode == 'POST' || mode == 'GET')
-             this.mode = mode;
-         else
-             this.mode = 'POST';
-         /* Flush buffer every timeOut ms if the sync_mode is delayed */
-         this.timeOut = 2000;
-     };
-     BufferedService.prototype = BufferedService_prototype;
-
-     var Trace_prototype = {
-         /* FIXME: We could/should use a sorted list such as
-          http://closure-library.googlecode.com/svn/docs/class_goog_structs_AvlTree.html
-          to speed up queries based on time */
-         obsels: [],
-         /* Trace URI */
-         uri: "",
-         default_subject: "",
-         /* baseuri is used as the base URI to resolve relative
-          * attribute-type names in obsels. Strictly speaking, this
-          * should rather be expressed as a reference to model, or
-          * more generically, as a qname/URI dict */
-         baseuri: "",
-         /* Mapping of obsel type or property name to a compact
-          * representation (shorthands).
-          */
-         shorthands: null,
-         syncservice: null,
-
-         /* Define the trace URI */
-         set_uri: function(uri) {
-             this.uri = uri;
-         },
-
-         /* Sync mode: delayed, sync (immediate sync), none (no
-          * synchronisation with server, the trace has to be explicitly saved
-          * if needed */
-         set_sync_mode: function(mode) {
-             if (this.syncservice !== null) {
-                 this.syncservice.set_sync_mode(mode);
-             }
-         },
-
-         /*
-          * Return a list of the obsels of this trace matching the parameters
-          */
-         list_obsels: function(_begin, _end, _reverse) {
-             var res;
-             if (typeof _begin !== 'undefined' || typeof _end !== 'undefined') {
-                 /*
-                  * Not optimized yet.
-                  */
-                 res = [];
-                 var l = this.obsels.length;
-                 for (var i = 0; i < l; i++) {
-                     var o = this.obsels[i];
-                     if ((typeof _begin !== 'undefined' && o.begin > _begin) && (typeof _end !== 'undefined' && o.end < _end)) {
-                         res.push(o);
-                     }
-                 }
-             }
-
-             if (typeof _reverse !== 'undefined') {
-                 if (res !== undefined) {
-                     /* Should reverse the whole list. Make a copy. */
-                     res = this.obsels.slice(0);
-                 }
-                 res.sort(function(a, b) { return b.begin - a.begin; });
-                 return res;
-             }
-
-             if (res === undefined) {
-                 res = this.obsels;
-             }
-             return res;
-
-         },
-
-         /*
-          * Return the obsel of this trace identified by the URI, or undefined
-          */
-         get_obsel: function(id) {
-             for (var i = 0; i < this.obsels.length; i++) {
-                 /* FIXME: should check against variations of id/uri, take this.baseuri into account */
-                 if (this.obsels[i].uri === id) {
-                     return this.obsels[i];
-                 }
-             }
-             return undefined;
-         },
-
-         set_default_subject: function(subject) {
-             this.default_subject = subject;
-         },
-
-         get_default_subject: function() {
-             return this.default_subject;
-         },
-
-         /* (type:ObselType, begin:int, end:int?, subject:str?, attributes:[AttributeType=>any]?) */
-         /* Create a new obsel and add it to the trace */
-         create_obsel: function(type, begin, end, subject, _attributes) {
-             var o = new Obsel(type, begin, end, subject);
-             if (typeof _attributes !== 'undefined') {
-                 o.attributes = _attributes;
-             }
-             o.trace = this;
-             this.obsels.push(o);
-             if (this.syncservice !== null)
-                 this.syncservice.enqueue(o);
-         },
-
-         /* Helper methods */
-
-         /* Create a new obsel with the given attributes */
-         trace: function(type, _attributes, _begin, _end, _subject) {
-             var t = (new Date()).getTime();
-             if (typeof begin === 'undefined') {
-                 _begin = t;
-             }
-             if (typeof end === 'undefined') {
-                 _end = _begin;
-             }
-             if (typeof subject === 'undefined') {
-                 _subject = this.default_subject;
-             }
-             if (typeof _attributes === 'undefined') {
-                 _attributes = {};
-             }
-             return this.create_obsel(type, _begin, _end, _subject, _attributes);
-         }
-     };
-
-     var Trace = function(uri, requestmode) {
-         /* FIXME: We could/should use a sorted list such as
-          http://closure-library.googlecode.com/svn/docs/class_goog_structs_AvlTree.html
-          to speed up queries based on time */
-         this.obsels = [];
-         /* Trace URI */
-         if (uri === undefined)
-             uri = "";
-         this.uri = uri;
-         this.sync_mode = "none";
-         this.default_subject = "";
-         this.shorthands = {};
-         /* baseuri is used a the base URI to resolve relative attribute names in obsels */
-         this.baseuri = "";
-
-         this.syncservice = new BufferedService(uri, requestmode);
-         $(window).unload( function () {
-                               if (this.syncservice && this.sync_mode !== 'none') {
-                                   this.syncservice.flush();
-                                   this.syncservice.stop_timer();
-                               }
-                           });
-     };
-     Trace.prototype = Trace_prototype;
-
-     var Obsel_prototype = {
-         /* The following attributes are here for documentation
-          * purposes. They MUST be defined in the constructor
-          * function. */
-         trace: undefined,
-         type: undefined,
-         begin: undefined,
-         end: undefined,
-         subject: undefined,
-         /* Dictionary indexed by ObselType URIs */
-         attributes: {},
-
-         /* Method definitions */
-         get_trace: function() {
-             return this.trace;
-         },
-
-         get_obsel_type: function() {
-             return this.type;
-         },
-         get_begin: function() {
-             return this.begin;
-         },
-         get_end: function() {
-             return this.end;
-         },
-         get_subject: function() {
-             return this.subject;
-         },
-
-         list_attribute_types: function() {
-             var result = [];
-             for (var prop in this.attributes) {
-                 if (this.hasOwnProperty(prop))
-                     result.push(prop);
-             }
-             /* FIXME: we return URIs here instead of AttributeType elements */
-             return result;
-         },
-
-         list_relation_types: function() {
-             /* FIXME: not implemented yet */
-         },
-
-         list_related_obsels: function (rt) {
-             /* FIXME: not implemented yet */
-         },
-         list_inverse_relation_types: function () {
-             /* FIXME: not implemented yet */
-         },
-         list_relating_obsels: function (rt) {
-             /* FIXME: not implemented yet */
-         },
-         /*
-          * Return the value of the given attribute type for this obsel
-          */
-         get_attribute_value: function(at) {
-             if (typeof at === "string")
-                 /* It is a URI */
-                 return this.attributes[at];
-             else
-                 /* FIXME: check that at is instance of AttributeType */
-                 return this.attributes[at.uri];
-         },
-
-
-         /* obsel modification (trace amendment) */
-
-         set_attribute_value: function(at, value) {
-             if (typeof at === "string")
-                 /* It is a URI */
-                 this.attributes[at] = value;
-             /* FIXME: check that at is instance of AttributeType */
-             else
-                 this.attributes[at.uri] = value;
-         },
-
-         del_attribute_value: function(at) {
-             if (typeof at === "string")
-                 /* It is a URI */
-                 delete this.attributes[at];
-             /* FIXME: check that at is instance of AttributeType */
-             else
-                 delete this.attributes[at.uri];
-         },
-
-         add_related_obsel: function(rt, value) {
-             /* FIXME: not implemented yet */
-         },
-
-         del_related_obsel: function(rt, value) {
-             /* FIXME: not implemented yet */
-         },
-
-         /*
-          * Return a JSON representation of the obsel
-          */
-         toJSON: function() {
-             var r = {
-                 "@id": this.id,
-                 "@type": this.type,
-                 "begin": this.begin,
-                 "end": this.end,
-                 "subject": this.subject
-             };
-             for (var prop in this.attributes) {
-                 if (this.hasOwnProperty(prop))
-                     r[prop] = this.attributes[prop];
-             }
-             return r;
-         },
-
-         /*
-          * Return a compact JSON representation of the obsel.
-          * Use predefined + custom shorthands for types/properties
-          */
-         toCompactJSON: function() {
-             var r = {
-                 "@i": this.id,
-                 "@t": (this.trace.shorthands.hasOwnProperty(this.type) ? this.trace.shorthands[this.type] : this.type),
-                 "@b": this.begin,
-                 "@s": this.subject
-             };
-             // Store duration (to save some bytes) and only if it is non-null
-             if (this.begin !== this.end)
-                 r["@d"] = this.end - this.begin;
-
-             for (var prop in this.attributes) {
-                 if (this.hasOwnProperty(prop))
-                 {
-                     var v = this.attributes[prop];
-                     r[prop] = this.trace.shorthands.hasOwnProperty(v) ? this.trace.shorthands[v] : v;
-                 }
-             }
-             return r;
-         },
-
-         toJSONstring: function() {
-             return JSON.stringify(this.toJSON());
-         }
-     };
-
-     var Obsel = function(type, begin, end, subject, attributes) {
-         this.trace = undefined;
-         this.uri = "";
-         this.id = "";
-         this.type = type;
-         this.begin = begin;
-         this.end = end;
-         this.subject = subject;
-         /* Is the obsel synched with the server ? */
-         this.sync_status = false;
-         /* Dictionary indexed by ObselType URIs */
-         this.attributes = {};
-     };
-     Obsel.prototype = Obsel_prototype;
-
-     var TraceManager_prototype = {
-         traces: [],
-         /*
-          * Return the trace with id name
-          * If it was not registered, return undefined.
-          */
-         get_trace: function(name) {
-             return this.traces[name];
-         },
-
-         /*
-          * Explicitly create and initialize a new trace with the given name.
-          * The optional uri parameter allows to initialize the trace URI.
-          *
-          * If another existed with the same name before, then it is replaced by a new one.
-          */
-         init_trace: function(name, params)
-         {
-             if (window.console) window.console.log("init_trace", params);
-             url = params.url ? params.url : "";
-             requestmode = params.requestmode ? params.requestmode : "POST";
-             syncmode = params.syncmode ? params.syncmode : "none";
-             default_subject = params.default_subject ? params.default_subject : "default";
-             var t = new Trace(url, requestmode);
-             t.set_sync_mode(syncmode);
-             t.set_default_subject(default_subject);
-             this.traces[name] = t;
-             return t;
-         }
-     };
-
-     var TraceManager = function() {
-         this.traces = {};
-     };
-     TraceManager.prototype = TraceManager_prototype;
-
-     var tracemanager  = new TraceManager();
-     return tracemanager;
- };
--- a/test/integration/allocine_dossier_independant/js/libs/underscore.js	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-// Underscore.js 1.2.3
-// (c) 2009-2011 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the MIT license.
-// Portions of Underscore are inspired or borrowed from Prototype,
-// Oliver Steele's Functional, and John Resig's Micro-Templating.
-// For all details and documentation:
-// http://documentcloud.github.com/underscore
-(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==
-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,
-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"&&
-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,
-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,
-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,
-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,
-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,
-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=
-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-
-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},
-[]);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,
-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};
-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,
-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:
-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=
-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,
-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===
-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)==
-"[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,
-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,
-"'")+",'"}).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,
-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);
--- a/test/integration/allocine_dossier_independant/json_examples/annotations.json	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-{
-    "format": "http:\/\/advene.org\/ns\/cinelab\/",
-    "imports": [
-        {
-            "id": "cinecast",
-            "url": "http:\/\/festival.cinecast.fr\/configuration.json"
-        }, {
-            "id": "medias",
-            "url": "http:\/\/festival.cinecast.fr\/medias.json"
-        }, {
-            "id": "extracts",
-            "url": "http:\/\/festival.cinecast.fr\/movie-extracts.json"
-        }
-    ],
-    "meta": {
-        "creator": "Vodkaster",
-        "created": "2012-04-04T16:21:02+02:00"
-    },
-    "annotations": [
-        {
-            "id": "ac-12",
-            "type": "cinecast:UserAnnotation",
-            "media": "cinecast-bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34956\/25592566-2-fre-FR\/34956-Des-chiffres-africains-calamiteux1_reference.jpg",
-                "creator": "login",
-                "created": "2012-03-09T16:21:28+01:00",
-                "extract": "789820"
-            },
-            "begin": 678000,
-            "end": 678000,
-            "content": {
-                "data": "eeeee"
-            }
-        }, {
-            "id": "ac-13",
-            "type": "cinecast:UserAnnotation",
-            "media": "cinecast-bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34954\/25592478-3-fre-FR\/34954-Fin-du-spectacle-et-reprise-de-l-audience1_reference.jpg",
-                "creator": "login",
-                "created": "2012-03-09T16:31:43+01:00",
-                "extract": "789816"
-            },
-            "begin": 519000,
-            "end": 519000,
-            "content": {
-                "data": "8minute38 #mot-clef"
-            }
-        }, {
-            "id": "ac-21",
-            "type": "cinecast:UserAnnotation",
-            "media": "cinecast-bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34961\/25593042-2-fre-FR\/34961-Standby1_reference.jpg",
-                "creator": "login",
-                "created": "2012-03-09T18:09:22+01:00",
-                "extract": "789849"
-            },
-            "begin": 177000,
-            "end": 177000,
-            "content": {
-                "data": "addadad #faux-raccord #mot-clef"
-            }
-        }, {
-            "id": "ac-22",
-            "type": "cinecast:UserAnnotation",
-            "media": "cinecast-bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34961\/25593042-2-fre-FR\/34961-Standby1_reference.jpg",
-                "creator": "login",
-                "created": "2012-03-12T10:31:04+01:00",
-                "extract": "789849"
-            },
-            "begin": 177000,
-            "end": 177000,
-            "content": {
-                "data": "ddddddddddddd"
-            }
-        }, {
-            "id": "ac-6",
-            "type": "cinecast:UserAnnotation",
-            "media": "cinecast-bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34952\/25592345-4-fre-FR\/34952-Generique-de-debut-et-preparation-a-l-audience1_reference.jpg",
-                "creator": "login",
-                "created": "2012-03-09T15:19:25+01:00",
-                "extract": "789808"
-            },
-            "begin": 7000,
-            "end": 7000,
-            "content": {
-                "data": "aaaa #mot-clef"
-            }
-        }, {
-            "id": "ac-7",
-            "type": "cinecast:UserAnnotation",
-            "media": "cinecast-bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34952\/25592345-4-fre-FR\/34952-Generique-de-debut-et-preparation-a-l-audience1_reference.jpg",
-                "creator": "login",
-                "created": "2012-03-09T15:35:35+01:00",
-                "extract": "789808"
-            },
-            "begin": 120000,
-            "end": 120000,
-            "content": {
-                "data": "test"
-            }
-        }, {
-            "id": "ac-8",
-            "type": "cinecast:UserAnnotation",
-            "media": "cinecast-bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34952\/25592345-4-fre-FR\/34952-Generique-de-debut-et-preparation-a-l-audience1_reference.jpg",
-                "creator": "login",
-                "created": "2012-03-09T15:42:35+01:00",
-                "extract": "789808"
-            },
-            "begin": 64000,
-            "end": 64000,
-            "content": {
-                "data": "test 1"
-            }
-        }, {
-            "id": "vk-11",
-            "type": "cinecast:UserAnnotation",
-            "media": "cinecast-bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/entre-les-murs\/13226\/19768606-6-fre-FR\/13226-Rentree-des-classes1_reference.jpg",
-                "creator": "hugo",
-                "created": "2012-04-01T00:00:00+02:00",
-                "extract": "246390"
-            },
-            "begin": 335189,
-            "end": 335189,
-            "content": {
-                "data": " #europe"
-            }
-        }
-    ]
-}
--- a/test/integration/allocine_dossier_independant/json_examples/extracts.json	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,705 +0,0 @@
-{
-    "format": "http:\/\/advene.org\/ns\/cinelab\/",
-    "imports": [
-        {
-            "id": "cinecast",
-            "url": "http:\/\/festival.cinecast.fr\/configuration.json"
-        }, {
-            "id": "medias",
-            "url": "http:\/\/festival.cinecast.fr\/medias.json"
-        }
-    ],
-    "meta": {
-        "creator": "Vodkaster",
-        "created": "2012-04-04T16:21:41+02:00"
-    },
-    "annotations": [
-        {
-            "id": "789808",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34952\/25592345-4-fre-FR\/34952-Generique-de-debut-et-preparation-a-l-audience1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 0,
-            "end": 180000,
-            "content": {
-                "data": "G\u00e9n\u00e9rique de d\u00e9but et pr\u00e9paration \u00e0 l'audience"
-            }
-        }, {
-            "id": "789812",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34953\/25592424-3-fre-FR\/34953-Debut-de-l-audience1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 180000,
-            "end": 284000,
-            "content": {
-                "data": "D\u00e9but de l'audience"
-            }
-        }, {
-            "id": "789816",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34954\/25592478-3-fre-FR\/34954-Fin-du-spectacle-et-reprise-de-l-audience1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 404000,
-            "end": 579000,
-            "content": {
-                "data": "Fin du spectacle et reprise de l'audience"
-            }
-        }, {
-            "id": "789818",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34955\/25592528-3-fre-FR\/34955-Corruption-et-seduction1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 579000,
-            "end": 676000,
-            "content": {
-                "data": "Corruption et s\u00e9duction"
-            }
-        }, {
-            "id": "789820",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34956\/25592566-2-fre-FR\/34956-Des-chiffres-africains-calamiteux1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 676000,
-            "end": 797000,
-            "content": {
-                "data": "Des chiffres africains calamiteux"
-            }
-        }, {
-            "id": "789822",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34957\/25592606-3-fre-FR\/34957-Un-ideal-de-societe-inadaptee1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 797000,
-            "end": 977000,
-            "content": {
-                "data": "Un id\u00e9al de soci\u00e9t\u00e9 inadapt\u00e9e"
-            }
-        }, {
-            "id": "789824",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34958\/25592668-2-fre-FR\/34958-Supercherie-du-G81_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 977000,
-            "end": 1143000,
-            "content": {
-                "data": "\"Supercherie\" du G8 ?"
-            }
-        }, {
-            "id": "789825",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34959\/25592703-2-fre-FR\/34959-C-est-un-debat-qui-depasse-l-Afrique1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 1143000,
-            "end": 1276000,
-            "content": {
-                "data": "C'est un d\u00e9bat qui d\u00e9passe l'Afrique"
-            }
-        }, {
-            "id": "789839",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34960\/25592937-2-fre-FR\/34960-Ce-monde-est-ouvert-aux-blancs-mais-pas-aux-noirs1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 1276000,
-            "end": 1456000,
-            "content": {
-                "data": "Ce monde est ouvert aux blancs mais pas aux noirs"
-            }
-        }, {
-            "id": "789849",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34961\/25593042-2-fre-FR\/34961-Standby1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 1456000,
-            "end": 1590000,
-            "content": {
-                "data": "Standby"
-            }
-        }, {
-            "id": "789854",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34963\/25593121-2-fre-FR\/34963-Expose-du-periple1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 1590000,
-            "end": 1761000,
-            "content": {
-                "data": "Expos\u00e9 du p\u00e9riple"
-            }
-        }, {
-            "id": "789874",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34967\/25593375-2-fre-FR\/34967-Expose-du-periple-21_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 1761000,
-            "end": 1901000,
-            "content": {
-                "data": "Expos\u00e9 du p\u00e9riple 2"
-            }
-        }, {
-            "id": "789878",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34968\/25593421-2-fre-FR\/34968-L-audience-est-suspendue1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 1901000,
-            "end": 2081000,
-            "content": {
-                "data": "L'audience est suspendue"
-            }
-        }, {
-            "id": "789880",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34969\/25593461-2-fre-FR\/34969-Activites-et-problemes-du-soir1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 2081000,
-            "end": 2134000,
-            "content": {
-                "data": "Activit\u00e9s et probl\u00e8mes du soir"
-            }
-        }, {
-            "id": "789884",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34970\/25593533-4-fre-FR\/34970-Death-in-Tumbuktu-11_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 2134000,
-            "end": 2301000,
-            "content": {
-                "data": "Death in Tumbuktu 1"
-            }
-        }, {
-            "id": "789888",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34971\/25593579-2-fre-FR\/34971-Death-in-Tumbuktu-21_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 2301000,
-            "end": 2457000,
-            "content": {
-                "data": "Death in Tumbuktu 2"
-            }
-        }, {
-            "id": "789891",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34972\/25593626-3-fre-FR\/34972-Une-vie-et-un-couple-precaires1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 2457000,
-            "end": 2624000,
-            "content": {
-                "data": "Une vie et un couple pr\u00e9caires"
-            }
-        }, {
-            "id": "789896",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34973\/25593677-3-fre-FR\/34973-Un-mariage-interrompt-l-audience1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 2624000,
-            "end": 2763000,
-            "content": {
-                "data": "Un mariage interrompt l'audience"
-            }
-        }, {
-            "id": "789901",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34974\/25593734-2-fre-FR\/34974-L-Afrique-n-a-t-elle-plus-aucun-moyen-financier1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 2763000,
-            "end": 2903000,
-            "content": {
-                "data": "L'Afrique n'a-t-elle plus aucun moyen financier ?"
-            }
-        }, {
-            "id": "789904",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34975\/25593779-2-fre-FR\/34975-BM-ET-FMI-les-seuls-coupables1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 2903000,
-            "end": 3056000,
-            "content": {
-                "data": "BM ET FMI : les seuls coupables ?"
-            }
-        }, {
-            "id": "789906",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34976\/25593821-2-fre-FR\/34976-Reflexion-sur-le-role-des-banques1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 3056000,
-            "end": 3110000,
-            "content": {
-                "data": "R\u00e9flexion sur le r\u00f4le des banques"
-            }
-        }, {
-            "id": "789911",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34978\/25593906-2-fre-FR\/34978-Absence-d-ambassade-d-Israel-preuve-de-l-anti-developpement1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 3110000,
-            "end": 3202000,
-            "content": {
-                "data": "Absence d'ambassade d'Isra\u00ebl = preuve de l'anti-d\u00e9veloppement ?"
-            }
-        }, {
-            "id": "789914",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34979\/25593951-2-fre-FR\/34979-Colonialisme-latent1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 3202000,
-            "end": 3359000,
-            "content": {
-                "data": "Colonialisme latent"
-            }
-        }, {
-            "id": "789917",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34981\/25594026-2-fre-FR\/34981-Colonialisme-latent-21_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 3359000,
-            "end": 3411000,
-            "content": {
-                "data": "Colonialisme latent 2"
-            }
-        }, {
-            "id": "789919",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34982\/25594093-2-fre-FR\/34982-Colonialisme-latent-31_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 3522000,
-            "end": 3573000,
-            "content": {
-                "data": "Colonialisme latent 3"
-            }
-        }, {
-            "id": "789921",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34983\/25594133-2-fre-FR\/34983-Sermon-du-pasteur1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 3573000,
-            "end": 3722000,
-            "content": {
-                "data": "Sermon du pasteur"
-            }
-        }, {
-            "id": "789925",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34985\/25594213-2-fre-FR\/34985-Standby-21_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 3722000,
-            "end": 3807000,
-            "content": {
-                "data": "Standby 2"
-            }
-        }, {
-            "id": "789927",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34986\/25594280-2-fre-FR\/34986-Samba-Diakite1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 3807000,
-            "end": 3981000,
-            "content": {
-                "data": "Samba Diakit\u00e9"
-            }
-        }, {
-            "id": "789928",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34987\/25594315-2-fre-FR\/34987-Audience-et-contre-audience1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 3981000,
-            "end": 4033000,
-            "content": {
-                "data": "Audience et contre-audience"
-            }
-        }, {
-            "id": "789929",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34988\/25594350-3-fre-FR\/34988-Theorie-du-complot1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 4033000,
-            "end": 4197000,
-            "content": {
-                "data": "Th\u00e9orie du complot"
-            }
-        }, {
-            "id": "789931",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34989\/25594417-3-fre-FR\/34989-Reponse-a-la-theorie-du-complot1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 4197000,
-            "end": 4358000,
-            "content": {
-                "data": "R\u00e9ponse \u00e0 la th\u00e9orie du complot"
-            }
-        }, {
-            "id": "789933",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34990\/25594484-2-fre-FR\/34990-Recit-d-un-reve1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 4358000,
-            "end": 4443000,
-            "content": {
-                "data": "R\u00e9cit d'un r\u00eave"
-            }
-        }, {
-            "id": "789934",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34991\/25594519-2-fre-FR\/34991-Aucune-preuve-qui-soutienne-la-theorie-du-complot1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 4443000,
-            "end": 4545000,
-            "content": {
-                "data": "Aucune preuve qui soutienne la th\u00e9orie du complot"
-            }
-        }, {
-            "id": "789940",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34992\/25594575-2-fre-FR\/34992-Triste-soiree1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 4545000,
-            "end": 4620000,
-            "content": {
-                "data": "Triste soir\u00e9e"
-            }
-        }, {
-            "id": "789941",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34993\/25594610-2-fre-FR\/34993-Le-tissu-social-est-il-detruit1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 4620000,
-            "end": 4729000,
-            "content": {
-                "data": "Le tissu social est-il d\u00e9truit ?"
-            }
-        }, {
-            "id": "789945",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34994\/25594660-2-fre-FR\/34994-Plaidoirie-de-Maitre-Rappaport1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 4729000,
-            "end": 4908000,
-            "content": {
-                "data": "Plaidoirie de Ma\u00eetre Rappaport"
-            }
-        }, {
-            "id": "790160",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35018\/25597011-3-fre-FR\/35018-Plaidoirie-de-Maitre-Rappaport-21_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 4908000,
-            "end": 5081000,
-            "content": {
-                "data": "Plaidoirie de Ma\u00eetre Rappaport 2"
-            }
-        }, {
-            "id": "790173",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35020\/25597155-2-fre-FR\/35020-Chanter-pour-se-faire-entendre1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 5082000,
-            "end": 5262000,
-            "content": {
-                "data": "Chanter pour se faire entendre"
-            }
-        }, {
-            "id": "790194",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35021\/25597543-3-fre-FR\/35021-Plaidoirie-de-Maitre-William-Bourdon1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 5262000,
-            "end": 5434000,
-            "content": {
-                "data": "Plaidoirie de Ma\u00eetre William Bourdon"
-            }
-        }, {
-            "id": "790201",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35022\/25597618-3-fre-FR\/35022-Plaidoirie-de-Maitre-William-Bourdon-21_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 5434000,
-            "end": 5588000,
-            "content": {
-                "data": "Plaidoirie de Ma\u00eetre William Bourdon 2"
-            }
-        }, {
-            "id": "790207",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35023\/25597704-3-fre-FR\/35023-Plaidoirie-de-Wiliam-Bourdon-41_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 5768000,
-            "end": 5824000,
-            "content": {
-                "data": "Plaidoirie de Wiliam Bourdon 4"
-            }
-        }, {
-            "id": "790210",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35024\/25597774-3-fre-FR\/35024-Plaidoirie-de-Aissata-Tall-Sall1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 5824000,
-            "end": 5985000,
-            "content": {
-                "data": "Plaidoirie de A\u00efssata Tall Sall"
-            }
-        }, {
-            "id": "790212",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35025\/25597812-3-fre-FR\/35025-Plaidoirie-de-Aissata-Tall-Sall-21_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 5985000,
-            "end": 6081000,
-            "content": {
-                "data": "Plaidoirie de A\u00efssata Tall Sall 2"
-            }
-        }, {
-            "id": "790215",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35026\/25597857-3-fre-FR\/35026-Interlude-musical1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 6081000,
-            "end": 6245000,
-            "content": {
-                "data": "Interlude musical"
-            }
-        }, {
-            "id": "790217",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35027\/25597895-2-fre-FR\/35027-SPOILER-Suicide1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 6245000,
-            "end": 6311000,
-            "content": {
-                "data": "SPOILER - Suicide"
-            }
-        }, {
-            "id": "790218",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35028\/25597930-2-fre-FR\/35028-Funerailles1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 6311000,
-            "end": 6430000,
-            "content": {
-                "data": "Fun\u00e9railles"
-            }
-        }, {
-            "id": "790219",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35029\/25597965-2-fre-FR\/35029-Documentaire-sur-les-funerailles1_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 6430000,
-            "end": 6539000,
-            "content": {
-                "data": "Documentaire sur les fun\u00e9railles"
-            }
-        }, {
-            "id": "790220",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35030\/25598000-2-fre-FR\/35030-Generique-de-fin-11_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 6539000,
-            "end": 6659000,
-            "content": {
-                "data": "G\u00e9n\u00e9rique de fin 1"
-            }
-        }, {
-            "id": "790221",
-            "type": "cinecast:MovieExtract",
-            "media": "medias:bamako",
-            "meta": {
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35031\/25598035-2-fre-FR\/35031-Generique-de-fin-21_reference.jpg",
-                "creator": "Vodkaster",
-                "created": "1970-01-01T01:00:00+01:00"
-            },
-            "begin": 6659000,
-            "end": 6725000,
-            "content": {
-                "data": "G\u00e9n\u00e9rique de fin 2"
-            }
-        }
-    ]
-}
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/json_examples/media.json	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-{
-    "format": "http:\/\/advene.org\/ns\/cinelab\/",
-    "imports": [
-        {
-            "id": "cinecast",
-            "url": "http:\/\/festival.cinecast.fr\/configuration.json"
-        }
-    ],
-    "medias": [
-        {
-            "id": "bamako",
-            "url": "rtmpe:\/\/cp41629.edgefcs.net\/ondemand\/mp4:ondemand\/nmedia\/cinecast\/Bamako700.m4v",
-            "meta": {
-                "title": "Bamako",
-                "duration": 6725000,
-                "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/42851-1-fre-FR\/Bamako3_reference.jpg",
-                "directors": "Abderrahmane Sissako",
-                "actors": "A\u00efssa Ma\u00efga, Ti\u00e9coura Traor\u00e9, Ma\u00efmouna H\u00e9l\u00e8ne Diarra",
-                "nationalities": "FR",
-                "production_year": "2006",
-                "version": "VOST",
-                "synopsis": "Mel\u00e9 est une chanteuse de bar et son mari, Chaka, au ch\u00f4mage s'enfonce dans le silence. Malgr\u00e9 une fille qui les unit, leur couple s'\u00e9miette petit \u00e0 petit. Ils vivent dans une maison qu'ils partagent avec plusieurs familles. Dans la cour, se tient un \u00e9tonnant \u00e9v\u00e9nement\u00a0: le proc\u00e8s de la soci\u00e9t\u00e9 civile africaine contre la Banque mondiale et le FMI\u00a0!"
-            }
-        }
-    ]
-}
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/json_examples/movie32.json	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1607 +0,0 @@
-{
-    "medias": [
-        {
-            "id": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "url": "rtmpe://cp41629.edgefcs.net/ondemand/mp4:ondemand/nmedia/cinecast/C_Est_Dur_D_Etre_Aime_Par_Des_Cons700.m4v",
-            "meta": {
-                "mediaid": 32,
-                "actors": ["Philippe Val", "Elisabeth Badinter", "François Bayrou"],
-                "directors": ["Daniel Leconte"],
-                "nationalities": ["FR"],
-                "duration": 6140000,
-                "productionYear": "2008",
-                "synopsis": "Pour avoir reproduit les douze caricatures danoises ayant déclenché la colère des musulmans aux quatre coins du monde, Philippe Val, le patron de Charlie Hebdo, journal satirique français, est assigné en justice. Un procès hors norme que Daniel Leconte suit en temps réel.",
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/17519400-1-fre-FR/C-est-dur-d-etre-aime-par-des-cons_reference.jpg",
-                "title": "C\u0027est dur d\u0027être aimé par des cons",
-                "version": "VOST"
-            }
-        }
-    ],
-    "annotation_types": {
-        "id": "UserAnnotation",
-        "meta": {
-            "description": "Annotation made during the Cinecast Festival."
-        }
-    },
-    "annotations": [
-        {
-            "id": "cinecast:785050",
-            "begin": 0,
-            "end": 144000,
-            "content": {
-                "data": "Postulat"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34390/25528462-2-fre-FR/34390-Postulat1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785052",
-            "begin": 144000,
-            "end": 201000,
-            "content": {
-                "data": "Licenciement. Charlie Hebdo prend le relais"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34391/25528502-4-fre-FR/34391-Licenciement.-Charlie-Hebdo-prend-le-relais1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:250895",
-            "begin": 201000,
-            "end": 284000,
-            "content": {
-                "data": "Le fameux dessin"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/13800/19810874-5-fre-FR/13800-Le-fameux-dessin1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785081",
-            "begin": 284000,
-            "end": 450000,
-            "content": {
-                "data": "Denis Jeambar"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34394/25528804-2-fre-FR/34394-Denis-Jeambar1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785082",
-            "begin": 450000,
-            "end": 482000,
-            "content": {
-                "data": "Mosquée de Paris contre Charlie Hebdo"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34395/25528839-2-fre-FR/34395-Mosquee-de-Paris-contre-Charlie-Hebdo1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785086",
-            "begin": 482000,
-            "end": 561000,
-            "content": {
-                "data": "Générique"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34396/25528916-2-fre-FR/34396-Generique1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785092",
-            "begin": 561000,
-            "end": 685000,
-            "content": {
-                "data": "Proposition de débat"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34397/25529005-3-fre-FR/34397-Proposition-de-debat1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785095",
-            "begin": 685000,
-            "end": 761000,
-            "content": {
-                "data": "Annonce du procès"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34398/25529048-3-fre-FR/34398-Annonce-du-proces1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785099",
-            "begin": 761000,
-            "end": 936000,
-            "content": {
-                "data": "Les témoins de Charlie Hebdo"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34399/25529108-3-fre-FR/34399-Les-temoins-de-Charlie-Hebdo1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785101",
-            "begin": 936000,
-            "end": 973000,
-            "content": {
-                "data": "Le témoin mystère"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34400/25529146-3-fre-FR/34400-Le-temoin-mystere1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:246119",
-            "begin": 973000,
-            "end": 1075000,
-            "content": {
-                "data": "Ce procès est une insulte raciste"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/13181/19766309-7-fre-FR/13181-Ce-proces-est-une-insulte-raciste1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785106",
-            "begin": 1075000,
-            "end": 1132000,
-            "content": {
-                "data": "Rire de tout"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34403/25529269-2-fre-FR/34403-Rire-de-tout1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785109",
-            "begin": 1132000,
-            "end": 1275000,
-            "content": {
-                "data": "La Une"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34405/25529346-3-fre-FR/34405-La-Une1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:289950",
-            "begin": 1275000,
-            "end": 1341000,
-            "content": {
-                "data": "Exercer son droit"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/18268/20232789-7-fre-FR/18268-Exercer-son-droit1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785113",
-            "begin": 1341000,
-            "end": 1438000,
-            "content": {
-                "data": "Les enjeux"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34407/25529451-3-fre-FR/34407-Les-enjeux1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785118",
-            "begin": 1438000,
-            "end": 1562000,
-            "content": {
-                "data": "JT 13h"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34409/25529562-3-fre-FR/34409-JT-13h1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9040725+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:738531",
-            "begin": 1562000,
-            "end": 1640000,
-            "content": {
-                "data": "Interview à la radio avant le procès"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30193/24841522-3-fre-FR/30193-Interview-a-la-radio-avant-le-proces1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785125",
-            "begin": 1640000,
-            "end": 1787000,
-            "content": {
-                "data": "Le jour du procès"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34410/25529650-3-fre-FR/34410-Le-jour-du-proces1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785129",
-            "begin": 1787000,
-            "end": 1954000,
-            "content": {
-                "data": "Audition de Philippe Val"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34412/25529728-3-fre-FR/34412-Audition-de-Philippe-Val1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785134",
-            "begin": 1954000,
-            "end": 2128000,
-            "content": {
-                "data": "Audition de Philipe Val 2ème partie"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34414/25529836-4-fre-FR/34414-Audition-de-Philipe-Val-2eme-partie1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785138",
-            "begin": 2128000,
-            "end": 2246000,
-            "content": {
-                "data": "L\u0027arrivée du fax"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34416/25529912-3-fre-FR/34416-L-arrivee-du-fax1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:250520",
-            "begin": 2246000,
-            "end": 2344000,
-            "content": {
-                "data": "Lettre de soutien"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/13759/19808000-6-fre-FR/13759-Lettre-de-soutien1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785142",
-            "begin": 2344000,
-            "end": 2430000,
-            "content": {
-                "data": "La presse n\u0027en fera pas état"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34418/25530017-3-fre-FR/34418-La-presse-n-en-fera-pas-etat1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785144",
-            "begin": 2430000,
-            "end": 2564000,
-            "content": {
-                "data": "Dissolution du CFCM"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34419/25530055-3-fre-FR/34419-Dissolution-du-CFCM1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:738542",
-            "begin": 2564000,
-            "end": 2692000,
-            "content": {
-                "data": "Mahomet : fossé d\u0027interprétation"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30196/24841689-3-fre-FR/30196-Mahomet-fosse-d-interpretation1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785147",
-            "begin": 2692000,
-            "end": 2732000,
-            "content": {
-                "data": "1er retour"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34420/25530120-3-fre-FR/34420-1er-retour1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785149",
-            "begin": 2732000,
-            "end": 2892000,
-            "content": {
-                "data": "Une autre voix musulmane"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34421/25530158-3-fre-FR/34421-Une-autre-voix-musulmane1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:738538",
-            "begin": 2892000,
-            "end": 2973000,
-            "content": {
-                "data": "La salle des pas perdus"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30195/24841622-2-fre-FR/30195-La-salle-des-pas-perdus1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785153",
-            "begin": 2973000,
-            "end": 3144000,
-            "content": {
-                "data": "Audition du Père Lelong"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34423/25530246-3-fre-FR/34423-Audition-du-Pere-Lelong1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785156",
-            "begin": 3144000,
-            "end": 3177000,
-            "content": {
-                "data": "Un débat juridique ?"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34424/25530311-2-fre-FR/34424-Un-debat-juridique1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:289961",
-            "begin": 3177000,
-            "end": 3342000,
-            "content": {
-                "data": "L\u0027audition de François Hollande"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/18270/20232882-6-fre-FR/18270-L-audition-de-Francois-Hollande1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785158",
-            "begin": 3342000,
-            "end": 3396000,
-            "content": {
-                "data": "Vous gênez là"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34426/25530381-2-fre-FR/34426-Vous-genez-la1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785160",
-            "begin": 3396000,
-            "end": 3556000,
-            "content": {
-                "data": "Audition de Denis Jeambar"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34428/25530451-3-fre-FR/34428-Audition-de-Denis-Jeambar1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785163",
-            "begin": 3556000,
-            "end": 3617000,
-            "content": {
-                "data": "Ils m\u0027ont torturé parce que j\u0027étais musulman"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34429/25530496-2-fre-FR/34429-Ils-m-ont-torture-parce-que-j-etais-musulman1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:289942",
-            "begin": 3617000,
-            "end": 3772000,
-            "content": {
-                "data": "L\u0027agonie de la liberté"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/18267/20232735-8-fre-FR/18267-L-agonie-de-la-liberte1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785166",
-            "begin": 3772000,
-            "end": 3895000,
-            "content": {
-                "data": "Les nouveaux arrivants"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34432/25530601-4-fre-FR/34432-Les-nouveaux-arrivants1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:258487",
-            "begin": 3895000,
-            "end": 3956000,
-            "content": {
-                "data": "La liberté de cracher"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/14525/19878658-7-fre-FR/14525-La-liberte-de-cracher1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785171",
-            "begin": 3956000,
-            "end": 4100000,
-            "content": {
-                "data": "L\u0027arrivée de Claude Lanzmann"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34434/25530709-2-fre-FR/34434-L-arrivee-de-Claude-Lanzmann1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785183",
-            "begin": 4100000,
-            "end": 4269000,
-            "content": {
-                "data": "Audition de François Bayrou"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34436/25530817-3-fre-FR/34436-Audition-de-Francois-Bayrou1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785189",
-            "begin": 4269000,
-            "end": 4326000,
-            "content": {
-                "data": "Vous dites un mensonge"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34438/25530899-2-fre-FR/34438-Vous-dites-un-mensonge1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785191",
-            "begin": 4326000,
-            "end": 4426000,
-            "content": {
-                "data": "Audition de Mohamed Sifaoui 1"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34439/25530949-2-fre-FR/34439-Audition-de-Mohamed-Sifaoui-11_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785194",
-            "begin": 4426000,
-            "end": 4602000,
-            "content": {
-                "data": "Audition de Mohamed Sifaoui 2"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34440/25530994-2-fre-FR/34440-Audition-de-Mohamed-Sifaoui-21_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785198",
-            "begin": 4602000,
-            "end": 4779000,
-            "content": {
-                "data": "Audition de Mohamed Sifaoui 3"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34441/25531046-2-fre-FR/34441-Audition-de-Mohamed-Sifaoui-31_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:738533",
-            "begin": 4779000,
-            "end": 4943000,
-            "content": {
-                "data": "Les caricatures de Mahomet en question"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30194/24841560-2-fre-FR/30194-Les-caricatures-de-Mahomet-en-question1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785308",
-            "begin": 4943000,
-            "end": 5003000,
-            "content": {
-                "data": "La République se donne raison à elle-même"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34447/25532130-3-fre-FR/34447-La-Republique-se-donne-raison-a-elle-meme1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785310",
-            "begin": 5003000,
-            "end": 5076000,
-            "content": {
-                "data": "Il est mort pour la France mon grand-père"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34448/25532168-2-fre-FR/34448-Il-est-mort-pour-la-France-mon-grand-pere1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785315",
-            "begin": 5076000,
-            "end": 5217000,
-            "content": {
-                "data": "Plaidoirie des avocats des plaignants"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34450/25532297-2-fre-FR/34450-Plaidoirie-des-avocats-des-plaignants1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785320",
-            "begin": 5217000,
-            "end": 5279000,
-            "content": {
-                "data": "Caroline Fourest contre Francis Szpiner"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34451/25532383-2-fre-FR/34451-Caroline-Fourest-contre-Francis-Szpiner1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785324",
-            "begin": 5279000,
-            "end": 5336000,
-            "content": {
-                "data": "Plaidoirie de Richard Malka"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34452/25532445-3-fre-FR/34452-Plaidoirie-de-Richard-Malka1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785330",
-            "begin": 5336000,
-            "end": 5494000,
-            "content": {
-                "data": "Vous voulez une égalité de traitement ?"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34454/25532565-3-fre-FR/34454-Vous-voulez-une-egalite-de-traitement1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9050491+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:738550",
-            "begin": 5494000,
-            "end": 5564000,
-            "content": {
-                "data": "L\u0027Islam : un sort particulier"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30199/24841820-2-fre-FR/30199-L-Islam-un-sort-particulier1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9060257+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785336",
-            "begin": 5564000,
-            "end": 5633000,
-            "content": {
-                "data": "Un grand moment de théâtre"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34455/25532651-3-fre-FR/34455-Un-grand-moment-de-theatre1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9060257+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785339",
-            "begin": 5633000,
-            "end": 5750000,
-            "content": {
-                "data": "Plaidoirie de Georges Kiejman"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34456/25532692-3-fre-FR/34456-Plaidoirie-de-Georges-Kiejman1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9060257+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785343",
-            "begin": 5750000,
-            "end": 5877000,
-            "content": {
-                "data": "Alors parle et meurs"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34457/25532767-3-fre-FR/34457-Alors-parle-et-meurs1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9060257+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:738544",
-            "begin": 5877000,
-            "end": 6020000,
-            "content": {
-                "data": "Spoiler - Le jour du verdict"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30197/24841727-2-fre-FR/30197-Spoiler-Le-jour-du-verdict1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9060257+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "cinecast:785348",
-            "begin": 6020000,
-            "end": 6137000,
-            "content": {
-                "data": "Générique de fin"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "type": "cinecast:MovieExtract",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34458/25532820-2-fre-FR/34458-Generique-de-fin1_reference.jpg",
-                "created": "2012-04-05T12:11:33.9060257+02:00",
-                "creator": "Allociné"
-            }
-        }, {
-            "id": "ac-145",
-            "begin": 5813,
-            "end": 5813,
-            "content": {
-                "data": "Antiocho mittat est Apollonius non coepit contingere navis est amet consensit cellula rei exultant deo adoptavit cum."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34457/25532767-3-fre-FR/34457-Alors-parle-et-meurs1_reference.jpg",
-                "extract": "785343",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/145",
-                "created": "2012-04-02T12:07:44.0570000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-154",
-            "begin": 3833,
-            "end": 3833,
-            "content": {
-                "data": "Curro vicina profundum item filiam sunt forma non solutionem invenerunt."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34432/25530601-4-fre-FR/34432-Les-nouveaux-arrivants1_reference.jpg",
-                "extract": "785166",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/154",
-                "created": "2012-04-02T12:07:44.1300000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-160",
-            "begin": 1870,
-            "end": 1870,
-            "content": {
-                "data": "Tunc agitans diam nostra paupercula possunt in fuerat se sed eu fugiens laudo in modo cavendum es."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34412/25529728-3-fre-FR/34412-Audition-de-Philippe-Val1_reference.jpg",
-                "extract": "785129",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/160",
-                "created": "2012-04-02T12:07:44.1800000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-162",
-            "begin": 2812,
-            "end": 2812,
-            "content": {
-                "data": "Reflexionis Respondens sed quod eam in rei finibus veteres hoc."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34421/25530158-3-fre-FR/34421-Une-autre-voix-musulmane1_reference.jpg",
-                "extract": "785149",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/162",
-                "created": "2012-04-02T12:07:44.1970000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-184",
-            "begin": 3694,
-            "end": 3694,
-            "content": {
-                "data": "Item filiam sunt amore meam celebrabantur Apollonius eius non potentiae Apollonium sit Mariae Bone de tuae infami cum magna."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/18267/20232735-8-fre-FR/18267-L-agonie-de-la-liberte1_reference.jpg",
-                "extract": "289942",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/184",
-                "created": "2012-04-02T12:07:44.4000000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-215",
-            "begin": 3694,
-            "end": 3694,
-            "content": {
-                "data": "Ipsam ei Taliarchum in deinde cupis ei auri in lucem genero nomine Hesterna."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/18267/20232735-8-fre-FR/18267-L-agonie-de-la-liberte1_reference.jpg",
-                "extract": "289942",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/215",
-                "created": "2012-04-02T12:07:44.6600000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-220",
-            "begin": 1601,
-            "end": 1601,
-            "content": {
-                "data": "Scelerata nunc eius est amet coram regis iam insulam quod ait est amet constanter approximavit te finis puellam materia eam eos. Volentes mihi Tyrum ad nomine."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30193/24841522-3-fre-FR/30193-Interview-a-la-radio-avant-le-proces1_reference.jpg",
-                "extract": "738531",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/220",
-                "created": "2012-04-02T12:07:44.7000000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-240",
-            "begin": 1024,
-            "end": 1024,
-            "content": {
-                "data": "Ipsam ei Taliarchum in deinde cupis ei auri in lucem genero nomine Hesterna."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/13181/19766309-7-fre-FR/13181-Ce-proces-est-une-insulte-raciste1_reference.jpg",
-                "extract": "246119",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/240",
-                "created": "2012-04-02T12:08:51.6030000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-248",
-            "begin": 1870,
-            "end": 1870,
-            "content": {
-                "data": "Scelerata nunc eius est amet coram regis iam insulam quod ait est amet constanter approximavit te finis puellam materia eam eos. Volentes mihi Tyrum ad nomine."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34412/25529728-3-fre-FR/34412-Audition-de-Philippe-Val1_reference.jpg",
-                "extract": "785129",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/248",
-                "created": "2012-04-02T12:08:51.6700000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-249",
-            "begin": 3925,
-            "end": 3925,
-            "content": {
-                "data": "Vobis si quod tamen adnuente rediens eam in rei exultant deo adoptavit cum magna Dianam."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/14525/19878658-7-fre-FR/14525-La-liberte-de-cracher1_reference.jpg",
-                "extract": "258487",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/249",
-                "created": "2012-04-02T12:08:51.6800000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-263",
-            "begin": 5415,
-            "end": 5415,
-            "content": {
-                "data": "Filiae Hellenicus ut diem obiecti aliud ait est se est se sed."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34454/25532565-3-fre-FR/34454-Vous-voulez-une-egalite-de-traitement1_reference.jpg",
-                "extract": "785330",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/263",
-                "created": "2012-04-02T12:08:51.7970000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-281",
-            "begin": 2932,
-            "end": 2932,
-            "content": {
-                "data": "Dabo potest contremiscunt pater ostendit sibi afflictione magnam clamantem in deinde cepit roseo."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30195/24841622-2-fre-FR/30195-La-salle-des-pas-perdus1_reference.jpg",
-                "extract": "738538",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/281",
-                "created": "2012-04-02T12:08:51.9670000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-291",
-            "begin": 1500,
-            "end": 1500,
-            "content": {
-                "data": "Ipsum ait regem Ardalio nos in lucem."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34409/25529562-3-fre-FR/34409-JT-13h1_reference.jpg",
-                "extract": "785118",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/291",
-                "created": "2012-04-02T12:08:52.0500000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-293",
-            "begin": 2041,
-            "end": 2041,
-            "content": {
-                "data": "Curro vicina profundum item filiam sunt forma non solutionem invenerunt."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34414/25529836-4-fre-FR/34414-Audition-de-Philipe-Val-2eme-partie1_reference.jpg",
-                "extract": "785134",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/293",
-                "created": "2012-04-02T12:08:52.0670000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-294",
-            "begin": 466,
-            "end": 466,
-            "content": {
-                "data": "Iusto opes mihi esse more filiam, deponiturque itaque cum autem Apolloni ex hic."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34395/25528839-2-fre-FR/34395-Mosquee-de-Paris-contre-Charlie-Hebdo1_reference.jpg",
-                "extract": "785082",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/294",
-                "created": "2012-04-02T12:08:52.0770000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-308",
-            "begin": 3160,
-            "end": 3160,
-            "content": {
-                "data": "Filiae Hellenicus ut diem obiecti aliud ait est se est se sed."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": ["#deferunt", "#mihi"],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34424/25530311-2-fre-FR/34424-Un-debat-juridique1_reference.jpg",
-                "extract": "785156",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/308",
-                "created": "2012-04-02T12:08:52.1930000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-348",
-            "begin": 1103,
-            "end": 1103,
-            "content": {
-                "data": "Dabo potest contremiscunt pater ostendit sibi afflictione magnam clamantem in deinde cepit roseo."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34403/25529269-2-fre-FR/34403-Rire-de-tout1_reference.jpg",
-                "extract": "785106",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/348",
-                "created": "2012-04-02T12:09:35.1400000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-369",
-            "begin": 466,
-            "end": 466,
-            "content": {
-                "data": "Quem est amet constanter determinatio vestes."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34395/25528839-2-fre-FR/34395-Mosquee-de-Paris-contre-Charlie-Hebdo1_reference.jpg",
-                "extract": "785082",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/369",
-                "created": "2012-04-02T12:09:36.7330000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-375",
-            "begin": 5248,
-            "end": 5248,
-            "content": {
-                "data": "Reflexionis Respondens sed quod eam in rei finibus veteres hoc."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34451/25532383-2-fre-FR/34451-Caroline-Fourest-contre-Francis-Szpiner1_reference.jpg",
-                "extract": "785320",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/375",
-                "created": "2012-04-02T12:09:36.9500000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-388",
-            "begin": 2812,
-            "end": 2812,
-            "content": {
-                "data": "Item filiam sunt amore meam celebrabantur Apollonius eius non potentiae Apollonium sit Mariae Bone de tuae infami cum magna."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34421/25530158-3-fre-FR/34421-Une-autre-voix-musulmane1_reference.jpg",
-                "extract": "785149",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/388",
-                "created": "2012-04-02T12:09:37.5600000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-390",
-            "begin": 1713,
-            "end": 1713,
-            "content": {
-                "data": "Scelerata nunc eius est amet coram regis iam insulam quod ait est amet constanter approximavit te finis puellam materia eam eos. Volentes mihi Tyrum ad nomine."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34410/25529650-3-fre-FR/34410-Le-jour-du-proces1_reference.jpg",
-                "extract": "785125",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/390",
-                "created": "2012-04-02T12:09:37.6330000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-405",
-            "begin": 1308,
-            "end": 1308,
-            "content": {
-                "data": "Cyrenaeorum tertia navigavit volente in fuerat accidens suos ut libertatem adhuc. Priapum avarus videret quo sanctis venias in fuerat, solum ad te in deinde cupis auras sed."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": ["#puer", "#illum"],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/18268/20232789-7-fre-FR/18268-Exercer-son-droit1_reference.jpg",
-                "extract": "289950",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/405",
-                "created": "2012-04-02T12:09:38.2730000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-416",
-            "begin": 4861,
-            "end": 4861,
-            "content": {
-                "data": "Filiae Hellenicus ut diem obiecti aliud ait est se est se sed."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30194/24841560-2-fre-FR/30194-Les-caricatures-de-Mahomet-en-question1_reference.jpg",
-                "extract": "738533",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/416",
-                "created": "2012-04-02T12:09:38.7330000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-434",
-            "begin": 5813,
-            "end": 5813,
-            "content": {
-                "data": "Vobis si quod tamen adnuente rediens eam in rei exultant deo adoptavit cum magna Dianam."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34457/25532767-3-fre-FR/34457-Alors-parle-et-meurs1_reference.jpg",
-                "extract": "785343",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/434",
-                "created": "2012-04-02T12:09:58.8570000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-435",
-            "begin": 2187,
-            "end": 2187,
-            "content": {
-                "data": "Audito claudi in fuerat accidens suos alloquitur hanc cuius iuvenis eum est in fuerat construeret in modo."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34416/25529912-3-fre-FR/34416-L-arrivee-du-fax1_reference.jpg",
-                "extract": "785138",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/435",
-                "created": "2012-04-02T12:09:58.8670000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-441",
-            "begin": 3586,
-            "end": 3586,
-            "content": {
-                "data": "Ipsam ei Taliarchum in deinde cupis ei auri in lucem genero nomine Hesterna."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34429/25530496-2-fre-FR/34429-Ils-m-ont-torture-parce-que-j-etais-musulman1_reference.jpg",
-                "extract": "785163",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/441",
-                "created": "2012-04-02T12:09:58.9230000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-442",
-            "begin": 4184,
-            "end": 4184,
-            "content": {
-                "data": "Mansione sed esse haec in modo."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34436/25530817-3-fre-FR/34436-Audition-de-Francois-Bayrou1_reference.jpg",
-                "extract": "785183",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/442",
-                "created": "2012-04-02T12:09:58.9400000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-446",
-            "begin": 5415,
-            "end": 5415,
-            "content": {
-                "data": "Quem est amet constanter determinatio vestes."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34454/25532565-3-fre-FR/34454-Vous-voulez-une-egalite-de-traitement1_reference.jpg",
-                "extract": "785330",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/446",
-                "created": "2012-04-02T12:09:58.9730000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-450",
-            "begin": 4376,
-            "end": 4376,
-            "content": {
-                "data": "Sui coniungens in rei exultant deo adiuves finem imponunt hoc ait regem Ardalio nos filiae."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34439/25530949-2-fre-FR/34439-Audition-de-Mohamed-Sifaoui-11_reference.jpg",
-                "extract": "785191",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/450",
-                "created": "2012-04-02T12:09:59.0170000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-473",
-            "begin": 2812,
-            "end": 2812,
-            "content": {
-                "data": "Iusto opes mihi esse more filiam, deponiturque itaque cum autem Apolloni ex hic."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34421/25530158-3-fre-FR/34421-Une-autre-voix-musulmane1_reference.jpg",
-                "extract": "785149",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/473",
-                "created": "2012-04-02T12:09:59.2830000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-477",
-            "begin": 5529,
-            "end": 5529,
-            "content": {
-                "data": "Iuvenem ut sua in fuerat construeret cena reges undis effugere quod ait regem adventu nihil."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30199/24841820-2-fre-FR/30199-L-Islam-un-sort-particulier1_reference.jpg",
-                "extract": "738550",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/477",
-                "created": "2012-04-02T12:09:59.3330000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-499",
-            "begin": 4184,
-            "end": 4184,
-            "content": {
-                "data": "Innumera patris super color est in rei civibus corporis optime Verena amica ripam fluxa in lucem exempli paupers."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": ["#rex!", "#ea", "#dolores"],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34436/25530817-3-fre-FR/34436-Audition-de-Francois-Bayrou1_reference.jpg",
-                "extract": "785183",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/499",
-                "created": "2012-04-02T12:09:59.5670000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-500",
-            "begin": 2712,
-            "end": 2712,
-            "content": {
-                "data": "Filiae Hellenicus ut diem obiecti aliud ait est se est se sed."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34420/25530120-3-fre-FR/34420-1er-retour1_reference.jpg",
-                "extract": "785147",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/500",
-                "created": "2012-04-02T12:09:59.5830000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-507",
-            "begin": 4690,
-            "end": 4690,
-            "content": {
-                "data": "Curro vicina profundum item filiam sunt forma non solutionem invenerunt."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34441/25531046-2-fre-FR/34441-Audition-de-Mohamed-Sifaoui-31_reference.jpg",
-                "extract": "785198",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/507",
-                "created": "2012-04-02T12:10:00.4330000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-510",
-            "begin": 1024,
-            "end": 1024,
-            "content": {
-                "data": "Famuli curvus in lucem concitaverunt in."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/13181/19766309-7-fre-FR/13181-Ce-proces-est-une-insulte-raciste1_reference.jpg",
-                "extract": "246119",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/510",
-                "created": "2012-04-02T12:10:01.8330000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-511",
-            "begin": 4028,
-            "end": 4028,
-            "content": {
-                "data": "Cyrenaeorum tertia navigavit volente in fuerat accidens suos ut libertatem adhuc. Priapum avarus videret quo sanctis venias in fuerat, solum ad te in deinde cupis auras sed."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": ["#servitute"],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34434/25530709-2-fre-FR/34434-L-arrivee-de-Claude-Lanzmann1_reference.jpg",
-                "extract": "785171",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/511",
-                "created": "2012-04-02T12:10:01.8500000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-520",
-            "begin": 1601,
-            "end": 1601,
-            "content": {
-                "data": "Antiocho mittat est Apollonius non coepit contingere navis est amet consensit cellula rei exultant deo adoptavit cum."
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30193/24841522-3-fre-FR/30193-Interview-a-la-radio-avant-le-proces1_reference.jpg",
-                "extract": "738531",
-                "status": "active",
-                "creator_name": "Cyril Rabaux",
-                "url": "/Annotation/520",
-                "created": "2012-04-02T12:10:01.9830000",
-                "creator": "ac-108"
-            }
-        }, {
-            "id": "ac-542",
-            "begin": 2732978,
-            "end": 2732978,
-            "content": {
-                "data": "123354 rdan"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34421/25530158-3-fre-FR/34421-Une-autre-voix-musulmane1_reference.jpg",
-                "extract": "785149",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/542",
-                "created": "2012-04-03T12:45:23.9770000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-543",
-            "begin": 2732978,
-            "end": 2732978,
-            "content": {
-                "data": "123354 rdan"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34421/25530158-3-fre-FR/34421-Une-autre-voix-musulmane1_reference.jpg",
-                "extract": "785149",
-                "status": "active",
-                "creator_name": "login",
-                "url": "/Annotation/543",
-                "created": "2012-04-03T12:45:28.6170000",
-                "creator": "ac-285"
-            }
-        }, {
-            "id": "ac-549",
-            "begin": 942869,
-            "end": 942869,
-            "content": {
-                "data": "c\u0027est vraiment très intéressant hein #Racisme #Manifestation #Justice sociale"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": ["#racisme", "#manifestation", "#justice", "manifestation", "racisme", "justice sociale"],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34400/25529146-3-fre-FR/34400-Le-temoin-mystere1_reference.jpg",
-                "extract": "785101",
-                "status": "active",
-                "creator_name": "Partner CineCast",
-                "url": "/Annotation/549",
-                "created": "2012-04-04T09:43:51.6370000",
-                "creator": "ac-519"
-            }
-        }, {
-            "id": "ac-550",
-            "begin": 1353783,
-            "end": 1353783,
-            "content": {
-                "data": "test"
-            },
-            "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
-            "tags": [],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34407/25529451-3-fre-FR/34407-Les-enjeux1_reference.jpg",
-                "extract": "785113",
-                "status": "active",
-                "creator_name": "Partner CineCast",
-                "url": "/Annotation/550",
-                "created": "2012-04-04T10:22:32.9370000",
-                "creator": "ac-519"
-            }
-        }
-    ],
-    "meta": {
-        "id": "medias:c-est-dur-d-etre-aime-par-des-cons",
-        "created": "2012-04-05T12:11:33.9079789+02:00",
-        "creator": "AlloCiné"
-    },
-    "format": "http://advene.org/ns/cinelab/",
-    "imports": [
-        {
-            "id": "cinecast",
-            "url": "http://cinecast.fr/festival/configuration.json"
-        }, {
-            "id": "medias",
-            "url": "http://cinecast.fr/festival/medias.json"
-        }
-    ]
-}
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/json_examples/posted_annotations.json	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-{
-    "format": "http://advene.org/ns/cinelab/",
-    "imports": [
-        {
-            "id": "cinecast",
-            "url": "http://festival.cinecast.fr/configuration.json"
-        }
-    ],
-    "annotations": [
-        {
-            "media": "cinecast:Bamako",
-            "begin": 0,
-            "end": 0,
-            "type": "cinecast:UserAnnotation",
-            "type_title": "Contributions",
-            "content": {
-                "data": "Hello, #world !"
-            },
-            "tags": ["cinecast:world"]
-        }
-    ],
-    "meta": {
-        "creator": "user_name_or_id",
-        "created": "Wed Mar 21 2012 15:30:20 GMT+0100"
-    }
-}
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/json_examples/return_after_post.json	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-{
-    "annotations": [
-        {
-            "id": "ac:new",
-            "begin": 10000,
-            "end": 10000,
-            "timecode": 0,
-            "content": {
-                "data": "Ma nouvelle Annotation"
-            },
-            "media": "cinecast:Bamako",
-            "tags": ["#vodkaster", "#allocine", "#universcine"],
-            "type": "cinecast:UserAnnotation",
-            "meta": {
-                "mediaid": 1,
-                "thumbnail": "/users/02/7/7/4/Z20110103142031450307477/img/0tyw3myh.cce.jpg",
-                "extract": "789849",
-                "status": "active",
-                "timestamp": 12999,
-                "created": "2012-08-16T11:14:14.7930000",
-                "creator": "ac:495",
-                "creator_name": "Moi",
-                "url": "http:\/\/www.allocine.com/mon_annotation"
-            }
-        }
-    ]
-}
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/test-allocine.htm	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html dir="ltr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml" lang="fr">
-    <head>
-        <title>Metadataplayer - Polemic tweet integration test</title>
-    </head>
-    <body style="background: #222222; color: #ff00ff;">
-        <div style="width:650px;">
-            <h1>MetaDataPlayer</h1>
-            Integration test - ALLOCINE PLAYER
-        </div>
-        <!-- START Integration  ###################################### -->
-        <!-- SIMPLE PLAYER EXPERIMENTATION -->
-        <script type="text/javascript" src="js/LdtPlayer-release.js" type="text/javascript"></script>
-        <div id="video"></div>
-        <div id="LdtPlayer" style="float: left;"></div>
-        <div id="Sparkline"></div>
-        <script  type="text/javascript">
-            var json_url = 'json_examples/movie32.json';
-            
-            IriSP.user = {
-                name : 'awesome_user_name',
-                avatar : 'allocine_test/avatar.png'
-            };
-            IriSP.libFiles.defaultDir = "/metadataplayer/src/js/libs/";
-
-            var config = {
-                gui : {
-                    width : 610,
-                    height : 900,
-                    container : 'LdtPlayer',
-                    css : 'css/LdtPlayer.css',
-                    default_options : {
-                        width: 610,
-                        cinecast_version: true,
-                        metadata : {
-                            format : 'cinelab',
-                            src : json_url,
-                            type : 'json'
-                        }
-                    },
-                    widgets : [{
-                        type : "AnnotationsListWidget",
-                        container : "MyListContainer", // div dans lequel sera affiché "Annotations Liées"
-                        ajax_mode : false, // nécessaire pour des raisons historiques
-                        refresh_interval : 15 * 60 * 1000 // 15 minutes
-                    }, {
-                        type : "SparklineWidget",
-                        height : 50,
-                        lineColor: "#ffffff",
-                        fillColor: "#999999"
-                    }, {
-                        type : "SegmentsWidget",
-                        requires : [{
-                            type : "TooltipWidget",
-                            width : 180,
-                            height : 160,
-                        }]
-                    }, {
-                        type : "createAnnotationWidget",
-                        polemic_mode : false,
-                        remote_tags :  {
-                            id : "cinecast",
-                            url : "http://festival.cinecast.fr/configuration.json",
-                            alias : 'http://festival.cinecast.fr/configuration.jsonp?jsonp=?'
-                        },
-                        random_tags : 3,
-                        disable_share: true,
-                        api_endpoint_template : "json_examples/return_after_post.json", //"endpoint/{{id}}.json",
-                        api_method : 'POST'
-                    }, /* {
-                        type: "TraceWidget",
-                     //   js_console : true,
-                        url: "http://traces.advene.org:5000/",
-                        requestmode: 'GET',
-                        syncmode: "sync"
-                    } */ ]
-                },
-                player : {
-                    type : 'allocine', // player type
-                    height : 300,
-                    width : 610,
-                    acPlayerUrl : "allocine_test/AcPlayer_v3.0_new.swf",
-                    autoPlay : "true",
-                    urlAcData : "allocine_test/data_cinecast_new.xml"
-                },
-                modules : [{
-                    type : "MediaFragment",
-                    metadata : {
-                        format : 'cinelab',
-                        src : json_url,
-                        type : 'json'
-                    }
-                }]
-
-            };
-
-            IriSP.initPlayer(config, json_url);
-
-        </script>
-    <div id="MyListContainer" style="float: left; width: 400px;"></div>
-    </body>
-</html>
--- a/test/integration/allocine_dossier_independant/test-vodkaster.htm	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html dir="ltr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml" lang="fr">
-    <head>
-        <title>Metadataplayer - Polemic tweet integration test</title>
-    </head>
-    <body style="background: #222222; color: #ff00ff;">
-        <div style="width:650px;">
-            <h1>MetaDataPlayer</h1>
-            Integration test - ALLOCINE PLAYER
-        </div>
-        <!-- START Integration  ###################################### -->
-        <!-- SIMPLE PLAYER EXPERIMENTATION -->
-        <script type="text/javascript" src="js/LdtPlayer-release.js" type="text/javascript"></script>
-        <div id="video"></div>
-        <div id="LdtPlayer" style="float: left;"></div>
-        <div id="Sparkline"></div>
-        <script  type="text/javascript">
-            var json_urls = {
-                'media' : 'json_examples/media.json', // http://cinecastdev.vodkaster.com/api/medias/cinecast-bamako/
-                'extracts' : 'json_examples/extracts.json', // http://cinecastdev.vodkaster.com/api/medias/cinecast-bamako/extracts
-                'annotations' : 'json_examples/annotations.json' // http://cinecastdev.vodkaster.com/api/medias/cinecast-bamako/annotations
-            }
-            
-            IriSP.user = {
-                name : 'awesome_user_name',
-                avatar : 'allocine_test/avatar.png'
-            };
-            IriSP.libFiles.defaultDir = "/metadataplayer/src/js/libs/";
-            
-            var config = {
-                gui : {
-                    width : 610,
-                    height : 900,
-                    container : 'LdtPlayer',
-                    css : 'css/LdtPlayer.css',
-                    default_options : {
-                        width: 610,
-                        cinecast_version: true,
-                        metadata : {
-                            format : 'cinelab',
-                            src : json_urls['annotations'],
-                            type : 'json'
-                        }
-                    },
-                    widgets : [{
-                        type : "AnnotationsListWidget",
-                        container : "MyListContainer", // div dans lequel sera affiché "Annotations Liées"
-                        ajax_mode : false, // nécessaire pour des raisons historiques
-                        refresh_interval : 15 *60 * 1000 // 15 minutes
-                    }, {
-                        type : "SparklineWidget",
-                        height : 50,
-                        lineColor: "#ffffff",
-                        fillColor: "#999999"
-                    }, {
-                        type : "SegmentsWidget",
-                        metadata : {
-                            format : 'cinelab',
-                            src : json_urls['extracts'],
-                            type : 'json'
-                        },
-                        requires : [{
-                            type : "TooltipWidget",
-                            width : 180,
-                            height : 160,
-                        }]
-                    }, {
-                        type : "createAnnotationWidget",
-                        polemic_mode : false,
-                        remote_tags : {
-                            id : "cinecast",
-                            url : "http://festival.cinecast.fr/configuration.json",
-                            alias : 'http://festival.cinecast.fr/configuration.jsonp?jsonp=?'
-                        },
-                        random_tags : 3,
-                        disable_share: true,
-                        api_endpoint_template : "endpoint/{{id}}.json",
-                        api_method : 'POST'
-                    }, {
-                        type: "TraceWidget",
-                     //   js_console : true,
-                        url: "http://traces.advene.org:5000/",
-                        requestmode: 'GET',
-                        syncmode: "sync"
-                    } ]
-                },
-                player : {
-                    type : 'allocine', // player type
-                    height : 300,
-                    width : 610,
-                    acPlayerUrl : "allocine_test/AcPlayer_v3.0_new.swf",
-                    autoPlay : "true",
-                    urlAcData : "allocine_test/data_cinecast_new.xml"
-                },
-                modules : [{
-                    type : "MediaFragment",
-                    metadata : {
-                        format : 'cinelab',
-                        src : json_urls['media'],
-                        type : 'json'
-                    }
-                }]
-
-            };
-
-            IriSP.initPlayer(config, json_urls['media']);
-
-        </script>
-    <div id="MyListContainer" style="float: left; width: 400px;"></div>
-    </body>
-</html>
--- a/test/integration/polemic.htm	Fri Apr 27 19:18:21 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html dir="ltr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml" lang="fr">
-
-<head>
-<title>Metadataplayer - Polemic tweet integration test</title>
-</head>
-
-<body>
-
-  <div style="width:650px;font-family: 'Trebuchet MS', 'Helvetica', 'Arial',  'Verdana', 'sans-serif';">
-  <h1>MetaDataPlayer</h1>
-  Polemic tweet integration test - using Popcorn, jwplayer and the <a href="http://polemictweet.com">PolemicTweet</a> widget.<br>
-  </div>
-  
-  
- <!-- START Integration  ###################################### -->
- <!-- SIMPLE PLAYER EXPERIMENTATION -->
-  <script type="text/javascript" src="../../build/LdtPlayer-core.js" type="text/javascript"></script>   
-  
-  <div id="video"></div>
-  <div id="LdtPlayer"></div>
-  
-  <script  type="text/javascript">
-  IriSP.libFiles.defaultDir = "/metadataplayer/src/js/libs/";
-  IriSP.widgetsDir = "/metadataplayer/src/widgets"
-IriSP.jwplayer_swf_path = "../libs/player.swf";
-    var _metadata = {
-        url: 'http://ldt.iri.centrepompidou.fr/ldtplatform/ldt/cljson/id/13b0aa52-336b-11e0-b233-00145ea49a02?callback=?',
-        format: 'ldt'
-    };
-    var _config = {            
-        gui: {
-            width:640,
-            height:800,
-            container:'LdtPlayer',
-			default_options: {
-				metadata: _metadata
-			},
-            css:'../../src/css/LdtPlayer-release.css',
-            widgets: [
- /*           {type: "PolemicWidget",
-             width: 640,
-             height: 50,              
-             requires: [{
-              type: "TooltipWidget",
-              width: 180,
-              height: 160,
-             }],
-            }, 
-            {type: "StackGraphWidget",
-             height: 150,
-            streamgraph: true,
-             requires: [{
-              type: "TooltipWidget",
-              width: 180,
-              height: 160,
-             }],
-            },
-            {type: "SparklineWidget",
-             width: 640,
-             height: 50},
-            {type: "PlayerWidget"},
-            {type: "SegmentsWidget",
-             requires: [{
-              type: "TooltipWidget",
-			  width: 180,
-              heigh: 160,
-              }],
-            },            
-            {type: "SliceWidget"},            
-            {type: "ArrowWidget"},
-            {type: "AnnotationsWidget"},
-            {type: "TweetsWidget"},
-            {type: "createAnnotationWidget"},
-            {type: "TagCloudWidget",
-            excludeWords: ['#museoweb']},, */
-//            {type: "TraceWidget"}
-                {
-                    type: "Sparkline"
-                },
-                {
-                    type: "Slider"
-                },
-                {
-                    type: "Controller"
-                },
-                {
-                    type: "Polemic"
-                },
-                {
-                    type: "Segments"
-                },
-                {
-                    type: "Slice"
-                },
-                {
-                    type: "Arrow"
-                },
-                {
-                    type: "Annotation"
-                },
-                {
-                    type: "Tweet"
-                },
-                {
-                    type: "Tagcloud"
-                },
-                {
-                    type: "AnnotationsList",
-                    //ajax_url : "http://ldt.iri.centrepompidou.fr/ldtplatform/api/ldt/segments/{{media}}/{{begin}}/{{end}}?callback=?", 
-                    foreign_url : "http://ldt.iri.centrepompidou.fr/ldtplatform/ldt/front/player/{{media}}/{{project}}/{{annotationType}}#id={{annotation}}",
-                    annotation_type : "tweet",
-                    container: "AnnotationsListContainer"
-                },
-                { type: "Mediafragment"}
-            ]
-        },
-      player:{
-          type:'jwplayer', // player type
-          live: true, 
-          height: 300, 
-          width: 640, 
-          provider: "rtmp" 
-      },
-      modules: [
-           /*    { type: "MediaFragment",
-                            metadata:{
-                           format:'cinelab',
-                             src:file,
-                             type:'json'}
-                        }*/]
-
-    };
-    
-    var _myPlayer = new IriSP.Metadataplayer(_config, _metadata);
-  </script>
-  
-  
- </body>
- <div id="AnnotationsListContainer" style="position: absolute; width: 400px; left: 660px; top: 105px;"></div>
- </html>
Binary file test/libs/player.swf has changed
Binary file test/player.swf has changed