web/rsln-opendata/res/metadataplayer/test/interface 1.2/source/carousel.js
author Samuel Huron <samuel.huron@centrepompidou.fr>
Tue, 15 Mar 2011 13:46:46 +0100
changeset 66 8a382087127f
permissions -rw-r--r--
rsln-opendata
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
66
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     1
/**
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     2
 * Interface Elements for jQuery
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     3
 * 3D Carousel
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     4
 * 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     5
 * http://interface.eyecon.ro
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     6
 * 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     7
 * Copyright (c) 2006 Stefan Petre
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     8
 * Dual licensed under the MIT (MIT-LICENSE.txt) 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     9
 * and GPL (GPL-LICENSE.txt) licenses.
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    10
 *
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    11
 */
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    12
/**
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    13
 * Created a 3D Carousel from a list of images, with reflections and animated by mouse position
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    14
 * 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    15
 * @example window.onload = 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    16
 *			function()
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    17
 *			{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    18
 *				$('#carousel').Carousel(
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    19
 *					{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    20
 *						itemWidth: 110,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    21
 *						itemHeight: 62,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    22
 *						itemMinWidth: 50,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    23
 *						items: 'a',
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    24
 *						reflections: .5,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    25
 *						rotationSpeed: 1.8
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    26
 *					}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    27
 *				);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    28
 *			}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    29
 * HTML
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    30
 *			<div id="carousel">
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    31
 *				<a href="" title=""><img src="" width="100%" /></a>
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    32
 *				<a href="" title=""><img src="" width="100%" /></a>
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    33
 *				<a href="" title=""><img src="" width="100%" /></a>
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    34
 *				<a href="" title=""><img src="" width="100%" /></a>
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    35
 *				<a href="" title=""><img src="" width="100%" /></a>
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    36
 *			</div>
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    37
 * CSS
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    38
 *			#carousel
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    39
 *			{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    40
 *				width: 700px;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    41
 *				height: 150px;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    42
 *				background-color: #111;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    43
 *				position: absolute;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    44
 *				top: 200px;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    45
 *				left: 100px;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    46
 *			}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    47
 *			#carousel a
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    48
 *			{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    49
 *				position: absolute;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    50
 *				width: 110px;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    51
 *			}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    52
 *
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    53
 * @desc Creates a 3D carousel from all images inside div tag with id 'carousel'
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    54
 *
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    55
 *
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    56
 * @name 3D Carousel
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    57
 * @description Created a 3D Carousel from a list of images, with reflections and animated by mouse position
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    58
 * @param Hash hash A hash of parameters
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    59
 * @option String items items selection
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    60
 * @option Integer itemWidth the max width for each item
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    61
 * @option Integer itemHeight the max height for each item
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    62
 * @option Integer itemMinWidth the minimum width for each item, the height is automaticaly calculated to keep proportions
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    63
 * @option Float rotationSpeed the speed for rotation animation
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    64
 * @option Float reflectionSize the reflection size a fraction from items' height
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    65
 *
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    66
 * @type jQuery
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    67
 * @cat Plugins/Interface
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    68
 * @author Stefan Petre
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    69
 */
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    70
jQuery.iCarousel = {
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    71
	
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    72
	build : function(options)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    73
	{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    74
		return this.each(
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    75
			function()
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    76
			{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    77
				var el = this;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    78
				var increment = 2*Math.PI/360;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    79
				var maxRotation = 2*Math.PI;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    80
				if(jQuery(el).css('position') != 'relative' && jQuery(el).css('position') != 'absolute') {
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    81
					jQuery(el).css('position', 'relative');
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    82
				}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    83
				el.carouselCfg = {
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    84
					items : jQuery(options.items, this),
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    85
					itemWidth : options.itemWidth,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    86
					itemHeight : options.itemHeight,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    87
					itemMinWidth : options.itemMinWidth,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    88
					maxRotation : maxRotation,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    89
					size : jQuery.iUtil.getSize(this),
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    90
					position : jQuery.iUtil.getPosition(this),
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    91
					start : Math.PI/2,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    92
					rotationSpeed : options.rotationSpeed,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    93
					reflectionSize : options.reflections,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    94
					reflections : [],
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    95
					protectRotation : false,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    96
					increment: 2*Math.PI/360
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    97
				};
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    98
				el.carouselCfg.radiusX = (el.carouselCfg.size.w - el.carouselCfg.itemWidth)/2;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    99
				el.carouselCfg.radiusY =  (el.carouselCfg.size.h - el.carouselCfg.itemHeight - el.carouselCfg.itemHeight * el.carouselCfg.reflectionSize)/2;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   100
				el.carouselCfg.step =  2*Math.PI/el.carouselCfg.items.size();
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   101
				el.carouselCfg.paddingX = el.carouselCfg.size.w/2;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   102
				el.carouselCfg.paddingY = el.carouselCfg.size.h/2 - el.carouselCfg.itemHeight * el.carouselCfg.reflectionSize;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   103
				var reflexions = document.createElement('div');
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   104
				jQuery(reflexions)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   105
					.css(
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   106
						{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   107
							position: 'absolute',
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   108
							zIndex: 1,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   109
							top: 0,
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   110
							left: 0
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   111
						}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   112
					);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   113
				jQuery(el).append(reflexions);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   114
				el.carouselCfg.items
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   115
					.each(
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   116
						function(nr)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   117
						{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   118
							image = jQuery('img', this).get(0);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   119
							height = parseInt(el.carouselCfg.itemHeight*el.carouselCfg.reflectionSize);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   120
							if (jQuery.browser.msie) {
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   121
								canvas = document.createElement('img');
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   122
								jQuery(canvas).css('position', 'absolute');
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   123
								canvas.src = image.src;				
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   124
								canvas.style.filter = 'flipv progid:DXImageTransform.Microsoft.Alpha(opacity=60, style=1, finishOpacity=0, startx=0, starty=0, finishx=0)';
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   125
					
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   126
							} else {
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   127
								canvas = document.createElement('canvas');
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   128
								if (canvas.getContext) {
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   129
									context = canvas.getContext("2d");
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   130
									canvas.style.position = 'absolute';
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   131
									canvas.style.height = height +'px';
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   132
									canvas.style.width = el.carouselCfg.itemWidth+'px';
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   133
									canvas.height = height;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   134
									canvas.width = el.carouselCfg.itemWidth;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   135
									context.save();
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   136
						
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   137
									context.translate(0,height);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   138
									context.scale(1,-1);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   139
									
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   140
									context.drawImage(
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   141
										image, 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   142
										0, 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   143
										0, 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   144
										el.carouselCfg.itemWidth, 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   145
										height
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   146
									);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   147
					
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   148
									context.restore();
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   149
									
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   150
									context.globalCompositeOperation = "destination-out";
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   151
									var gradient = context.createLinearGradient(
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   152
										0, 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   153
										0, 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   154
										0, 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   155
										height
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   156
									);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   157
									
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   158
									gradient.addColorStop(1, "rgba(255, 255, 255, 1)");
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   159
									gradient.addColorStop(0, "rgba(255, 255, 255, 0.6)");
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   160
						
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   161
									context.fillStyle = gradient;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   162
									if (navigator.appVersion.indexOf('WebKit') != -1) {
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   163
										context.fill();
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   164
									} else {
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   165
										context.fillRect(
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   166
											0, 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   167
											0, 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   168
											el.carouselCfg.itemWidth, 
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   169
											height
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   170
										);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   171
									}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   172
								}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   173
							}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   174
							
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   175
							el.carouselCfg.reflections[nr] = canvas;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   176
							jQuery(reflexions).append(canvas);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   177
						}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   178
					)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   179
					.bind(
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   180
						'mouseover',
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   181
						function(e)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   182
						{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   183
							el.carouselCfg.protectRotation = true;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   184
							el.carouselCfg.speed = el.carouselCfg.increment*0.1 * el.carouselCfg.speed / Math.abs(el.carouselCfg.speed);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   185
							return false;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   186
						}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   187
					)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   188
					.bind(
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   189
						'mouseout',
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   190
						function(e)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   191
						{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   192
							el.carouselCfg.protectRotation = false;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   193
							return false;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   194
						}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   195
					);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   196
				jQuery.iCarousel.positionItems(el);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   197
				el.carouselCfg.speed = el.carouselCfg.increment*0.2;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   198
				el.carouselCfg.rotationTimer = window.setInterval(
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   199
					function()
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   200
					{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   201
						el.carouselCfg.start += el.carouselCfg.speed;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   202
						if (el.carouselCfg.start > maxRotation)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   203
							el.carouselCfg.start = 0;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   204
						jQuery.iCarousel.positionItems(el);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   205
					},
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   206
					20
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   207
				);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   208
				jQuery(el)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   209
					.bind(
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   210
						'mouseout',
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   211
						function()
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   212
						{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   213
							el.carouselCfg.speed = el.carouselCfg.increment*0.2 * el.carouselCfg.speed / Math.abs(el.carouselCfg.speed);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   214
						}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   215
					)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   216
					.bind(
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   217
						'mousemove',
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   218
						function(e)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   219
						{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   220
							if (el.carouselCfg.protectRotation == false) {
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   221
								pointer = jQuery.iUtil.getPointer(e);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   222
								mousex =  el.carouselCfg.size.w - pointer.x + el.carouselCfg.position.x;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   223
								el.carouselCfg.speed = el.carouselCfg.rotationSpeed * el.carouselCfg.increment * (el.carouselCfg.size.w/2 - mousex) / (el.carouselCfg.size.w/2);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   224
							}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   225
						}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   226
					);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   227
			}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   228
		);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   229
	},
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   230
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   231
	positionItems : function(el)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   232
	{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   233
		el.carouselCfg.items.each(
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   234
			function (nr)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   235
			{
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   236
				angle = el.carouselCfg.start+nr*el.carouselCfg.step;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   237
				x = el.carouselCfg.radiusX*Math.cos(angle);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   238
				y = el.carouselCfg.radiusY*Math.sin(angle) ;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   239
				itemZIndex = parseInt(100*(el.carouselCfg.radiusY+y)/(2*el.carouselCfg.radiusY));
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   240
				parte = (el.carouselCfg.radiusY+y)/(2*el.carouselCfg.radiusY);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   241
				
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   242
				width = parseInt((el.carouselCfg.itemWidth - el.carouselCfg.itemMinWidth) * parte + el.carouselCfg.itemMinWidth);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   243
				height = parseInt(width * el.carouselCfg.itemHeight / el.carouselCfg.itemWidth);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   244
				this.style.top = el.carouselCfg.paddingY + y - height/2 + "px";
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   245
	     		this.style.left = el.carouselCfg.paddingX + x - width/2 + "px";
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   246
	     		this.style.width = width + "px";
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   247
	     		this.style.height = height + "px";
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   248
	     		this.style.zIndex = itemZIndex;
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   249
				el.carouselCfg.reflections[nr].style.top = parseInt(el.carouselCfg.paddingY + y + height - 1 - height/2) + "px";
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   250
				el.carouselCfg.reflections[nr].style.left = parseInt(el.carouselCfg.paddingX + x - width/2) + "px";
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   251
				el.carouselCfg.reflections[nr].style.width = width + "px";
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   252
				el.carouselCfg.reflections[nr].style.height = parseInt(height * el.carouselCfg.reflectionSize) + "px";
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   253
			}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   254
		);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   255
	}
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   256
};
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
   257
jQuery.fn.Carousel = jQuery.iCarousel.build;