/*
 * SCROLLER VERTICAL
 */
function applyScroller (vscroller, vcontent) {
	// cree les jquery elements
	var vscroller = $(vscroller), vcontent = $(vcontent);
	var titrevide = "france-mobil-home";
	
	// masque les images jusqu'a ce qu'elle soient chargées
	vcontent.hide();
	var loading = $('<div class="charge">Chargement</div>').appendTo(vscroller);
	
	//
	// IMAGE PRELOAD
	// défini la fonction qui va checker que chaque image soit chargée
	//
	var interval = setInterval(function(){
		var images = vcontent.find('img');
		var completed = 0;
	
		// Compte le nb d'img correctement chargées
		images.each(function(){
		  if (this.complete) completed++;
		});
	
		if (completed == images.length){
		  clearInterval(interval);
		  // Timeout pour fixer un pb avec chrome
		  setTimeout(function(){
	
			loading.hide();
			// supprime les scrollbars
			vscroller.css({overflow: 'hidden'});						
	
			vcontent.slideDown('slow', function(){
			  enable();
			});
		  }, 1000);
		}
	}, 100);

		
	function enable(){
		//zone en haut et en bas qui ne repondront pas au mouvement
		var margeInsensible = 100;
		// lien aux objets
		var vscrollerWidth  = vscroller.width();
		var vscrollerHeight = vscroller.height();
		// outerheight pour inclure le padding
		var vcontentHeight = vcontent.outerHeight() + 2*margeInsensible;
		
		// Creer le tp invisible
		var tp = $('<div class="scroller_content_tp"></div>')
			.css('opacity', 0)
			.appendTo(vscroller);
		
		//		
		//ajoute les fleches haut/bas
		//
		var wpos = vscroller.offset();
		
		var $bttop = $("<div></div>").attr({
			'class' : 'top'		
		});
		
		var $btbot = $("<div></div>").attr({
			'class' : 'bottom'
		});
		
		vscroller.prepend($bttop);
		vscroller.append($btbot);
		$bttop.show();
		$btbot.show();
		
		
		// sauve les titres des liens, ou alt des images
		vcontent.find('a').each(function(index){
		$(this).data('tpText', (this.title!='') ? this.title : titrevide );
		});
		
		// supprimer le titre par defaut du lien
		vcontent.find('a').removeAttr('title');
		// supprimer le titre par defaut de l'image (IE)
		vcontent.find('img').removeAttr('alt');	
		
		var lastTarget;
		//quand la souris bouge sur le menu
			vscroller.mousemove(function(e){
			// Sauve la cible
			lastTarget = e.target;
			
			var vscrollerOffset = vscroller.offset();
			
			var tpLeft = e.pageX - vscrollerOffset.left;
			//empeche le tp de depasser du menu 
			//75=taille min du tp
			tpLeft = Math.min(tpLeft, vscrollerWidth - 85);//espacement maxi entre tpleft et bord droite du vscroller
														   //plus petit: débord a droite
														   //plus elevé: restreint le débord a droite 		
			
			var tpTop = e.pageY - vscrollerOffset.top + vscroller.scrollTop() - 45;
			// deplace le tp sous la souris lorsque dans la partie sup du menu
			if (e.pageY - vscrollerOffset.top + vscroller.scrollTop() < vscrollerHeight / 2){
			  tpTop  = 80;
			}
			
			tp.css({top: tpTop, left: tpLeft});				
			
			// Scroll menu
			var top = (e.pageY -  vscrollerOffset.top) * (vcontentHeight - vscrollerHeight) / vscrollerHeight  - margeInsensible;
			
			if (top < 0){
			  top = 0;
			}
			
			vscroller.scrollTop(top);//remonte le scroll tout en haut
		});
		
		// utiliser une interval pour sauver des perf sous IE
		var interval = setInterval(function(){
			if (!lastTarget) return;	
		
			var currentText = tp.text();
		
			if (lastTarget.nodeName == 'IMG'){
				
				// les datas sont attachés aux parents pas aux images
				var newText = $(lastTarget).parent().data('tpText');
		
				if (typeof newText == 'undefined') newText = titrevide;
				// Show tp with the new text
				if (currentText != newText) {
					tp
					  .stop(true)
					  .css('opacity', 0)
					  .text(newText)
					  .animate({opacity: 1}, 1000);
				}
			}
		}, 200);
		
		
		// masquer le tp
		vscroller.mouseleave(function(){
			lastTarget = false;
			tp.stop(true).css('opacity', 0).text('');
		});
		
	
	}//enable

}



/*
 * SCROLLER AVANCEE - AVEC JQUERY
 */
$(function(){

	//pour tous elements avec la classe .scroller
	$("div.vscroller").each(function(scrollerIndex) 
	{
  		//applyScroller("div.vscroller", "div.scroller_content");
  		applyScroller( $(this), $(".scroller_content", this) );

		//plus d'1 cell par ligne : on recree un tableau d'un cellule par ligne
		if ($(".scroller_content table tr td", this).length  > 1) 
		{
		
			//creer le nouveau tableau pour accueilir la paire de nouvelles lignes
			var $table = $("<table />");
			var $rowA = $("<tbody />");
				
//			//récupérer les attributs du tableau d'origine 
//			var f = $.getAttributes( $(".scroller_content table", this)  );
//			//et les rappplique à l'identique sur le nouveau tableau
//			if (! /msie/i.test (navigator.userAgent)) //only override IE
//			{
//				//FONCTION POSE PROBLEME AVEC IE7
//				$table.attr(f);
//			}

			//cree un ligne par cellule 
			$(".scroller_content table td",this).not(":empty").each(function() {
				$n = $( "<tr><td>" + $(this).html() + "</td></tr>");
				$rowA.append($n);
			});
		
			//attache les nouvelles lignes au nouveau tableau
			$rowA.appendTo($table)
				
			//supprimer l'ancien tableau
			//attache le nouveau tableau au container
			$(".scroller_content table",this).replaceWith($table)
		
		}//si >1 cell
	
	});//each .vscroller
	
});	//ready
