front_idill/src/mosaic/js/zoomInteractions.js
author bastiena
Mon, 09 Jul 2012 14:24:42 +0200
changeset 47 4e1ee94d70b1
parent 45 0e29ae4568a0
child 52 277c94533395
permissions -rw-r--r--
Front IDILL: Help adapted to screen size & mouse interactions
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
     1
/*
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
     2
 * Zoom sur la position d'une image, 1ère partie. Durant le laps de temps de time ms, l'utilisateur a le choix de zoomer sur une autre image.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
     3
 * Après ce laps de temps, l'image zoom complétement et il n'est plus possible de sélectionner une autre image par pointage.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
     4
 */
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
     5
mosaic.prototype.preZoom = function(snapshot)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
     6
{
47
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
     7
	if(this.currentMode == "NO-USER" || this.currentMode.indexOf("INCOMING") > -1 || snapshot == null || this.helpDisplayed || this.isMosaicFiltering || this.isSearchByCurvesOn || this.gestureDelRequested)
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
     8
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
     9
		return;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    10
	}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    11
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    12
    if(this.fullscreen)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    13
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    14
        return;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    15
	}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    16
	this.preUnzoom();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    17
	//On enlève les notifications initiales si elles existent.
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
    18
	// this.removeSelectionSearchMosaicFull();
47
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
    19
	this.removeNotifications();
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    20
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    21
    //Mosaïque.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    22
    var _this = this;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    23
    //Dimensions de la mosaïque.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    24
    var h = this.height, w = this.width;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    25
    //Longueur en images, nombre d'images et taille de bordure de la mosaïque.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    26
    var len = this.config['length'], imgs = this.config['imagesToShow'], margin = this.marginWidth;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    27
    //Dimensions et position d'un snapshot dans la mosaïque.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    28
    var snHeight = this.snapshotHeight, snWidth = this.snapshotWidth;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    29
    var sTop = snapshot.position().top, sLeft = snapshot.position().left;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    30
    var prezoomPercentage = this.config['prezoomPercentage'];
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    31
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    32
    //ID de l'image actuelle.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    33
    var currentId = $('img', snapshot).attr('id');
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    34
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    35
    //Si un zoom est déjà en cours, on ne zoom sur rien d'autre en attendant que ce snapshot ai dézoomé en cas de mouseleave.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    36
    if(this.zoomed)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    37
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    38
		/*var currentSN = this.pointerPositionToSN(pointerX, pointerY);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    39
		if(currentSN != null && currentSN.attr('id') != snapshot.attr('id'))
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    40
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    41
			this.preUnzoom();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    42
		}*/
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    43
        // if($('#preZoomContainer-' + currentId) != $(this) && this.previousZoomedSN != '' && this.previousId != '')
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    44
        /*if(this.previousZoomedSN.attr('id') !== snapshot.attr('id'))
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    45
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    46
            this.preUnzoom();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    47
		}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    48
        else
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    49
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    50
            return;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    51
		}*/
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    52
		this.preUnzoom();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    53
		// return;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    54
	}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    55
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    56
    //On indique qu'on a zoomé et on spécifie le snapshot sur lequel on a zoomé.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    57
    this.zoomed = true;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    58
    this.previousZoomedSN = snapshot;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    59
    this.previousId = currentId;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    60
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    61
    //On récupère les attributs de l'image.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    62
    var fakeImg = $('img', snapshot);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    63
    //On forme la balise de la fausse image et on passe son url pour les grands snapshots.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    64
    fakeImg = '<img id="fake-' + currentId + '" class="snapshots" src="' + fakeImg.attr('src').replace('-little/', '/') + '" />';
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    65
    //On génère un faux snapshot identique au précédent et qu'on va coller dessus.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    66
    var fakeSnapshot = '<div id="prezoomContainer-' + currentId + '" class="prezoomContainers"><div id="prezoomSnapshot-' + currentId + '" class="snapshotDivs">' + fakeImg + '</div></div>';
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    67
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    68
    //On l'ajoute à la mosaïque.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    69
    $('#mainPanel').append(fakeSnapshot);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    70
    //On modifie ses attributs.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    71
	// console.log('cid : ' + currentId, $('#fake-' + currentId).length);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    72
    $('#fake-' + currentId).load(function()
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    73
    {
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    74
	// snapshot.fadeTo(400, '0.5').delay(200).fadeTo(400, '1');
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    75
        $('#prezoomContainer-' + currentId).css('top', sTop).css('left', sLeft).css('width', (snWidth + margin)).css('height', (snHeight + margin));
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    76
        $('#prezoomSnapshot-' + currentId).css('width', (snWidth)).css('height', (snHeight));
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
    77
		$('#prezoomContainer-' + currentId).css('display', 'block');
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    78
        
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    79
        //Dimensions et coordonnées initiales du div sur lequel on zoom.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    80
        var initialDivWidth = $('#prezoomContainer-' + currentId).width(), initialDivHeight = $('#prezoomContainer-' + currentId).height();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    81
        var initialDivTop = $('#prezoomContainer-' + currentId).position().top, initialDivLeft = $('#prezoomContainer-' + currentId).position().left;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    82
        //Dimensions et coordonnées finales du div.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    83
        var finalDivWidth = initialDivWidth * (prezoomPercentage+1), diffWidth = finalDivWidth - initialDivWidth, finalDivHeight = initialDivHeight + diffWidth;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    84
        var finalDivTop = (initialDivTop - (finalDivHeight - snHeight)/2), finalDivLeft = (initialDivLeft - (finalDivWidth - snWidth)/2);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    85
        
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    86
        //CAS PARTICULIER pour la position du snapshot zoomé : les bordures.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    87
        if(finalDivTop < 0)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    88
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    89
            finalDivTop = -margin;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    90
		}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    91
        if(finalDivTop + finalDivHeight > h)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    92
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    93
            finalDivTop = h - finalDivHeight;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    94
		}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    95
        if(finalDivLeft < 0)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    96
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    97
            finalDivLeft = 0;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    98
		}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
    99
        if(finalDivLeft + finalDivWidth + margin*2 > w)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   100
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   101
            finalDivLeft = w - finalDivWidth - margin*2;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   102
		}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   103
        
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   104
        ////Code de debug.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   105
        ////CAUTION////
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   106
        /*var red = '<div id="red"></div>';
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   107
        if($('#red') != null || $('#red') != undefined)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   108
            $('body').append(red);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   109
        $('#red').css('background-color', '#FF0000').css('position', 'absolute').css('top', '0px').css('left', '0px').css('width', '100px').css('height', '100px');
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   110
        $('#red').css('top', finalDivTop).css('left', finalDivLeft).css('width', finalDivWidth).css('height', finalDivHeight);*/
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   111
        //alert("initial : " + initialDivWidth + " " + initialDivHeight + " ; final : " + finalDivWidth + " " + finalDivHeight);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   112
        ////CAUTION////
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   113
        
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   114
        //On prézoom le div en le centrant sur le milieu du snapshot pointé.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   115
        $('#prezoomSnapshot-' + currentId).animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   116
        {
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   117
            width: finalDivWidth + margin,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   118
            height: finalDivHeight - margin*2,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   119
            top: finalDivTop + margin,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   120
            left: finalDivLeft + margin
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   121
        }, _this.config['timePrezoom']);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   122
        $('#prezoomContainer-' + currentId).animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   123
        {
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   124
            width: finalDivWidth + margin*2,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   125
            height: finalDivHeight - margin,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   126
            top: finalDivTop + margin,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   127
            left: finalDivLeft
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   128
        }, _this.config['timePrezoom'], function()
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   129
		{
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   130
			if(!_this.mouseInteractions)
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   131
			{
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   132
				//On met le spinner gif sur le pointeur, s'il n'existe pas déjà.
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   133
				if($('#spinner').length == 0)
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   134
				{
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   135
					//On repère le pointeur ayant provoqué le prezoom.
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   136
					var prezoomPointer;
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   137
					if(!_this.isMainPointerDisplayed)
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   138
					{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   139
						prezoomPointer = $('#secondPointer');
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   140
					}
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   141
					if(!_this.isSecondPointerDisplayed)
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   142
					{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   143
						prezoomPointer = $('#mainPointer');
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   144
					}
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   145
					
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   146
					var spinner = "<img id='spinner'></div>";
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   147
					$('body').append(spinner);
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   148
					$('#spinner').css(
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   149
					{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   150
						position: 'absolute',
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   151
						top: prezoomPointer.position().top,
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   152
						left: prezoomPointer.position().left,
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   153
						width: 85,
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   154
						height: 85,
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   155
						'z-index': 600
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   156
					});
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   157
					$('#spinner').attr('src', './img/cursors/selector_anim_2.gif');
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   158
				}
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   159
			}
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   160
			else
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   161
			{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   162
				_this.isOnAPrezoomSN = true;
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   163
			}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   164
			
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   165
			if(_this.currentMode == 'MOSAIC')
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   166
			{
47
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   167
				_this.removeNotifications();
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   168
				_this.mosaicSelection();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   169
			}
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   170
			else if(_this.currentMode == 'FILTER' && !_this.filterSearchedType && _this.curvesGesturesFound)
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   171
			{
47
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   172
				_this.removeNotifications();
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   173
				_this.filterSearchAndSelection();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   174
			}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   175
			else if(_this.currentMode == 'FILTER' && _this.filterSearchedType)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   176
			{
47
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   177
				_this.removeNotifications();
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   178
				_this.filterGestureAndSelection(_this.filterSearchedType, 'valid');
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   179
			}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   180
		});
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   181
    });
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   182
    
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   183
	if(!this.mouseInteractions)
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   184
	{
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   185
		this.zoomTimeout = setTimeout(function()
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   186
		{
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   187
			_this.zoom();
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   188
		}, this.config['timeoutZoom']);
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   189
	}
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   190
}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   191
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   192
/*
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   193
 * Dézoome sur la position de l'image. Il est à noter que ce dézoome diffère du dézoom global dans la mesure où celui-ci ne concerne que l'image sur laquelle on a zoomé.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   194
 */
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   195
mosaic.prototype.preUnzoom = function()
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   196
{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   197
    //Si on n'a pas zoomé, on quitte la fonction.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   198
    /*if(!this.zoomed)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   199
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   200
        return;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   201
	}*/
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   202
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   203
	/*if(this.currentMode == "NO-USER" || this.currentMode.indexOf("INCOMING") > -1)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   204
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   205
		return;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   206
	}*/
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   207
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   208
	$('#spinner').remove();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   209
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   210
	var _this = this;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   211
	
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   212
	this.isOnAPrezoomSN = false;
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   213
	clearTimeout(this.zoomTimeout);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   214
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   215
	if(this.currentMode == 'MOSAIC')
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   216
	{
47
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   217
		this.removeNotifications();
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   218
		this.mosaicSelectionAndSearch();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   219
	}
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   220
	else if(_this.currentMode == 'FILTER' && !this.filterSearchedType && !this.curvesGesturesFound)
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   221
	{
47
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   222
		this.removeNotifications();
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   223
		this.filterSearch();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   224
	}
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   225
	else if(_this.currentMode == 'FILTER' && this.filterSearchedType && !this.curvesGesturesFound)
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   226
	{
47
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   227
		this.removeNotifications();
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   228
		this.filterGesture(this.filterSearchedType, 'valid');
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   229
	}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   230
	/*this.removePointMosaicPrezoom();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   231
	this.notifySelectionSearchMosaicFull();*/
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   232
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   233
    //On spécifie la marge afin de centrer le prédézoom.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   234
    var margin = this.marginWidth;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   235
    //ID du snapshot précédemment pointé.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   236
    var id = this.previousId;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   237
    //On ne zoom plus.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   238
    //this.zoomed = false;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   239
    //On rétrécit le snapshot de prézoom, puis on le supprime en donnant l'illusion qu'il s'agissait du véritable snapshot, alors qu'en fait c'était un clone.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   240
	for(var i = 0 ; i < this.config['imagesToShow'] ; i++)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   241
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   242
		if($('#prezoomContainer-snapshot-' + i).length > 0)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   243
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   244
			$('#prezoomContainer-snapshot-' + i).animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   245
			{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   246
				width: this.snapshotWidth + margin,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   247
				height: this.snapshotHeight + margin,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   248
				top: $('#snapshotDiv-' + i).position().top,//this.previousZoomedSN.position().top,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   249
				left: $('#snapshotDiv-' + i).position().left//this.previousZoomedSN.position().left
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   250
			}, this.config['preUnzoomTime'], function(){ $(this).remove(); _this.zoomed = false; });
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   251
			$('#prezoomSnapshot-snapshot-' + i).animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   252
			{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   253
				width: this.snapshotWidth,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   254
				height: this.snapshotHeight,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   255
				top: $('#snapshotDiv-' + i).position().top,//this.previousZoomedSN.position().top,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   256
				left: $('#snapshotDiv-' + i).position().left//this.previousZoomedSN.position().left
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   257
			}, this.config['preUnzoomTime']);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   258
		}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   259
	}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   260
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   261
    /*$('#prezoomSnapshot-' + id).animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   262
    {
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   263
        width: this.snapshotWidth,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   264
        height: this.snapshotHeight,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   265
        top: this.previousZoomedSN.position().top,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   266
        left: this.previousZoomedSN.position().left
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   267
    }, this.config['preUnzoomTime']);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   268
    $('#prezoomContainer-' + id).animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   269
    {
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   270
        width: this.snapshotWidth + margin,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   271
        height: this.snapshotHeight + margin,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   272
        top: this.previousZoomedSN.position().top,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   273
        left: this.previousZoomedSN.position().left
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   274
    }, this.config['preUnzoomTime'], function(){ $(this).remove(); _this.zoomed = false; });*/
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   275
}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   276
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   277
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   278
/*
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   279
 * Zoom d'un snapshot en plein écran.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   280
 */
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   281
mosaic.prototype.zoom = function()
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   282
{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   283
    var _this = this;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   284
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   285
    //Si la mosaïque est en pleine écran, pas la peine de zoomer.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   286
    if(this.currentMode == "VIDEO" || this.currentMode == "SEARCH" || this.currentMode.indexOf("INCOMING") > -1 || this.helpDisplayed)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   287
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   288
        return;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   289
	}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   290
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   291
    //On prend les attributs nécessaires au calculs.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   292
    var margin = this.marginWidth, len = this.config['length'], imgs = this.config['imagesToShow'], zoomedMargin = this.config['zoomedMargin'];
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   293
	var zoomPercentage = this.config['zoomPercentage'];
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   294
    var initMPWidth = this.previousZoomedSN.width() * len + margin*len, initMPHeight = this.previousZoomedSN.height() * (imgs / len) + margin*(imgs / len);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   295
    var newMPWidth = initMPWidth * len + zoomedMargin * (len), newMPHeight = initMPHeight * (imgs / len) + zoomedMargin * ((imgs / len));
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   296
    var newPreMPWidth = initMPWidth * len * zoomPercentage + zoomedMargin * (len), newPreMPHeight = initMPHeight * (imgs / len) * zoomPercentage + zoomedMargin * ((imgs / len));
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   297
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   298
    //Dimensions et coordonnées initiales du div sur lequel on zoom.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   299
    var initialDivWidth = this.previousZoomedSN.width(), initialDivHeight = this.previousZoomedSN.height();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   300
    var initialDivTop = this.previousZoomedSN.position().top, initialDivLeft = this.previousZoomedSN.position().left;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   301
    //Dimensions et coordonnées finales du div.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   302
    var finalDivWidth = initialDivWidth * (zoomPercentage+1), finalDivHeight = initialDivHeight * (zoomPercentage+1);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   303
    var newZoomTop = -this.previousZoomedSN.position().top*(newPreMPHeight/initMPHeight) - zoomedMargin/2 + (initMPHeight - initMPHeight * zoomPercentage)/2, newZoomLeft = -this.previousZoomedSN.position().left*(newPreMPWidth/initMPWidth) - zoomedMargin/2 + (initMPWidth - initMPWidth * zoomPercentage)/2;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   304
    var newSnWidth = initMPWidth * zoomPercentage, newSnHeight = initMPHeight * zoomPercentage;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   305
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   306
    this.preUnzoom(this);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   307
    /*SINGULARITE*/
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   308
    this.fullscreen = true;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   309
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   310
    //On passe l'image du snapshot pointé en HD.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   311
    var zoomedImg = $('img', this.previousZoomedSN);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   312
    var src = zoomedImg.attr('src');
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   313
    zoomedImg.attr('src', src.replace('-little/', '/'));
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   314
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   315
    //On récupère son ID.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   316
    var tab, zoomedImgId;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   317
    tab = _this.previousId.split('-');
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   318
    zoomedImgId = tab[1];
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   319
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   320
	//On donne les dimensions des snapshots.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   321
	$('.snapshotDivs').animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   322
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   323
		width: newSnWidth,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   324
		height: newSnHeight,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   325
		margin: zoomedMargin/2 + 'px',
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   326
	}, this.config['zoomTime']);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   327
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   328
	if(this.currentMode != 'NO-USER')
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   329
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   330
		//Les snapshots baissent alors en opacité, donnant l'impression qu'ils sont grisés.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   331
		$('.snapshotDivs').animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   332
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   333
			opacity: '0.4'
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   334
		}, this.config['zoomTime']);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   335
		//Le snapshot du milieu revient à une opacité optimale, ce qui attire l'attention de l'utilisateur.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   336
		$(this.previousZoomedSN).animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   337
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   338
			opacity: '1'
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   339
		}, this.config['zoomTime']);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   340
	}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   341
	// console.log('BBB1 : ' + this.currentMode);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   342
    //On zoome sur la mosaïque.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   343
    $('#mainPanel').animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   344
    {
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   345
        width: newPreMPWidth,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   346
        height: newPreMPHeight,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   347
        top: newZoomTop,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   348
        left: newZoomLeft
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   349
    }, this.config['zoomTime'], function()
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   350
    {
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   351
        _this.snTop = (zoomedImg.position().top + newZoomTop + _this.MPTop_margin), _this.snLeft = (zoomedImg.position().left + newZoomLeft);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   352
		_this.snWidth = newSnWidth + 1, _this.snHeight = newSnHeight + 1;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   353
		
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   354
		_this.notifyTopVideo = newZoomTop;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   355
		_this.notifyLeftVideo = newZoomLeft;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   356
		
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   357
		//On charge les interactions avec les voisins.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   358
        _this.centerId = zoomedImgId;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   359
		// console.log('BBB2 : ' + _this.currentMode);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   360
		if(_this.currentMode != "NO-USER")
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   361
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   362
			// console.log('PROBLEM');
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   363
			_this.currentMode = 'VIDEO';
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   364
			_this.listenToNeighbours();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   365
		}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   366
		
47
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   367
		console.log('gesture shown : ' + _this.currentSearchGesture[_this.centerId]);
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   368
		
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   369
		if(_this.currentSearchGesture[_this.centerId] != '')
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   370
		{
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   371
			_this.currentMode = 'SEARCH';
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   372
			_this.isCurrentlyInASearchByGesture = true;
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   373
			_this.removeNotifications();
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   374
			_this.searchGesture(_this.currentSearchGesture[_this.centerId], 'valid');
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   375
		}
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   376
		
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   377
		$('#spinner').remove();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   378
		$('#mainPointer').css('background-image', 'url(./img/cursors/pointer.png)');
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   379
		$('#secondPointer').css('background-image', 'url(./img/cursors/pointer2.png)');
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   380
		
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   381
		// console.log('BBB3 : ' + _this.currentMode);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   382
		_this.loadPlayer(_this.snTop, _this.snLeft, _this.snWidth, _this.snHeight, newZoomTop, newZoomLeft, _this.timeToGoAt[_this.centerId]);
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   383
		
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   384
		$('body').click(function()
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   385
		{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   386
			//Si on clique en dehors de la video centrale, alors on dézoome.
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   387
			var TL = $('.Ldt-Timeline');
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   388
			var TLwidth = TL.width(), TLheight = TL.height();
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   389
			var Ptop = $('.LdtPlayer').position().top, Pleft = $('.LdtPlayer').position().left;
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   390
			var Pheight = $('.LdtPlayer').height();
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   391
			var MPx = _this.mousePosX, MPy = _this.mousePosY;
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   392
			
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   393
			//On regarde si on a cliqué sur un snapshot.
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   394
			var SN = _this.pointerPositionToSN(MPx - _this.notifyLeftVideo, MPy - _this.notifyTopVideo, true);
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   395
			var SNId;
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   396
			if(SN)
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   397
			{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   398
				SNId = parseInt(SN.attr('id').replace('snapshotDiv-', ''));
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   399
			}
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   400
			
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   401
			if(!_this.gestureDelRequested)
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   402
			{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   403
				//Si non, ou s'il ne fait pas partie des voisins.
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   404
				if(!SNId || !_.include(_this.neighboursIds, SNId))
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   405
				{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   406
					if(MPx < Pleft || MPx > (+Pleft + TLwidth) || MPy < Ptop || MPy > (+Ptop + Pheight - TLheight))
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   407
					{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   408
						_this.unzoom();
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   409
					}
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   410
				}
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   411
				//Si on se trouve sur un voisin, on bouge.
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   412
				else if(SNId && _.include(_this.neighboursIds, SNId) && _this.canMoveToNeighbour)
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   413
				{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   414
					_this.moveToNeighbour($('#snapshotDiv-' + SNId));
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   415
				}
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   416
			}
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   417
			else
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   418
			{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   419
				_this.gestureDelRequested = false;
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   420
			}
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   421
		});
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   422
		
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   423
		$('body').on('mousewheel', function(event, delta, deltaX, deltaY)
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   424
		{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   425
			//Action quand on "tire" la molette vers soi.
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   426
			if (delta < 0)
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   427
			{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   428
				_this.unzoom();
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   429
			}
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   430
		});
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   431
    });
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   432
}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   433
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   434
/*
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   435
 * Retour à la taille normale de la mosaïque.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   436
 */
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   437
mosaic.prototype.unzoom = function()
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   438
{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   439
    //Si on n'est pas en plein écran, on quitte.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   440
	// console.log("'" + this.currentMode + "'");
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   441
    if(this.currentMode != "SEARCH" && this.currentMode != "VIDEO" && this.currentMode != "NO-USER" && this.currentMode.indexOf("INCOMING") == -1)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   442
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   443
        return;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   444
	}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   445
	
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   446
	var _this = this;
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   447
	
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   448
	if(this.mouseInteractions)
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   449
	{
47
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   450
		$(window).unbind('click');
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   451
		$(window).unbind('mousewheel');
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   452
	
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   453
		//On rebind le clic pour supprimer une recherche.
47
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   454
		$(window).click(function(e)
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   455
		{
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   456
			_this.removeSearchNotificationIfOnIt(e.pageX, e.pageY);
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   457
		});
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   458
	}
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   459
	
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   460
	this.canSwipe = false;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   461
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   462
	//Si la TL avait été sélectionnée, on la déselectionne.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   463
	if(this.currentMode == 'TIMELINE')
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   464
	{
45
0e29ae4568a0 Front IDILL:
bastiena
parents: 44
diff changeset
   465
		this.exitTimeline('unzoom');
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   466
	}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   467
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   468
	this.currentlyUnzooming = true;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   469
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   470
	this.removeAdditionalNeighbours();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   471
	this.deselectAllNeighbours();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   472
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   473
	this.snTop = 0;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   474
	this.snLeft = 0;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   475
	this.Width = 0;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   476
	this.snHeight = 0;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   477
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   478
    //On charge les attributs nécessaires aux calculs.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   479
    var sWidth = this.snapshotWidth, sHeight = this.snapshotHeight;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   480
    var mpWidth = this.width, mpHeight = this.height;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   481
    var _this = this;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   482
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   483
    //On passe le snapshot sur lequel on a zoomé en SD.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   484
    var zoomedImg = $('img', this.previousZoomedSN);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   485
    var src = zoomedImg.attr('src');
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   486
    zoomedImg.attr('src', src.replace('snapshots/', 'snapshots-little/'));
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   487
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   488
	if(_this.player.widgets && _this.player.widgets[0])
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   489
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   490
		// console.log(Math.floor(_this.player.popcorn.currentTime()));
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   491
		_this.timeToGoAt[_this.centerId] = Math.floor(_this.player.popcorn.currentTime());
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   492
		_this.player.widgets[0].freePlayer();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   493
	}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   494
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   495
	_this.playerIsReady = false;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   496
	$('.LdtPlayer').remove();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   497
	$('body').append('<div class="LdtPlayer" id="LdtPlayer"></div>');
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   498
	_this.reaffectKeyPress();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   499
    
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   500
    //On rend leur opacité aux snapshots. Qui ne sont alors plus grisés.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   501
    $('.snapshotDivs').animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   502
    {
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   503
        width: sWidth,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   504
        height: sHeight,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   505
        margin: this.marginWidth/2 + 'px'
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   506
    }, this.config['unzoomTime'], function()
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   507
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   508
		_this.neighboursIds.length = 0;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   509
		_this.currentlyUnzooming = false;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   510
	});
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   511
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   512
	if(this.currentMode != 'NO-USER')
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   513
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   514
		if(this.currentMode.indexOf("INCOMING") == -1 && !this.isMosaicFiltered)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   515
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   516
			$('.snapshotDivs').animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   517
			{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   518
				opacity: '1'
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   519
			}, this.config['unzoomTime']);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   520
		}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   521
		else if(this.currentMode.indexOf("INCOMING") == -1 && this.isMosaicFiltered)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   522
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   523
			for(var i = 0 ; i < this.config['imagesToShow'] ; i++)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   524
			{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   525
				$('#snapshotDiv-' + i).animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   526
				{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   527
					opacity: this.opacities[i]
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   528
				}, this.config['unzoomTime']);
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   529
			}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   530
		}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   531
	}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   532
	else
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   533
	{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   534
		// console.log('init');
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   535
		this.previousZoomedSN.fadeTo(this.config['unzoomTime'], 0, function()
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   536
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   537
			_this.init();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   538
		});
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   539
	}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   540
	
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   541
    //On dézoom sur la mosaïque.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   542
    $('#mainPanel').animate(
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   543
    {
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   544
        width: mpWidth,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   545
        height: mpHeight,
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   546
        top: '0px',
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   547
        left: '0px'
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   548
    }, this.config['unzoomTime'], function()
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   549
    {
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   550
        //On n'est plus en plein écran, et on ne peut plus se déplacer vers le prochain voisin.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   551
        _this.fullscreen = false;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   552
        _this.canMoveToNeighbour = false;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   553
		
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   554
		if(_this.currentMode != 'NO-USER' && _this.currentMode.indexOf('INCOMING-') == -1)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   555
		{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   556
			if(_this.isMosaicFiltered)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   557
			{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   558
				//On revient en mode FILTER.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   559
				_this.currentMode = 'FILTER';
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   560
			}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   561
			else
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   562
			{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   563
				//On revient en mode MOSAIC.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   564
				_this.currentMode = 'MOSAIC';
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   565
			}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   566
			
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   567
			//On ne permet plus le déplacement vers les voisins.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   568
			/*$('.snapshotDivs').unbind('mouseover', function()
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   569
			{
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   570
				_this.selectNeighbour();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   571
			});*/
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   572
			
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   573
			//On remet les notifications initiales si on n'est pas dans une recherche par filtrage.
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   574
			if(_this.currentMode == 'MOSAIC' && !_this.filterSearchedType)
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   575
			{
47
4e1ee94d70b1 Front IDILL:
bastiena
parents: 45
diff changeset
   576
				_this.removeNotifications();
44
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   577
				// _this.notifySelectionSearchMosaicFull();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   578
				_this.mosaicSelectionAndSearch();
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   579
			}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   580
		}
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   581
		
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   582
		this.currentlyUnzooming = false;
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   583
    });
8393d3473b98 Front IDILL:
bastiena
parents:
diff changeset
   584
}