/* =========================================================
// jquery.multimedia-portfolio.js
// Author: OpenStudio (Arnault PACHOT)
// Mail: apachot@openstudio.fr
// Web: http://www.openstudio.fr
// Copyright (c) 2007-2010 OpenStudio
// licence : GPL
========================================================= */
(function($) {

$.fn.multimedia_portfolio = function(options) {
	this.each(function(){ 	
		var uniqueID = new Date();
		var rel_id=uniqueID.getTime();

		var mousewheelposition = 0;
		var defaultwidth = 120, defaultheight = 350;
		$(this).wrap("<div class='portfolio-container'></div>");
		var portfolio = $(this);
		var settings = { width: 808, baseDir: '.', nbelem: 3.54 };
		if(options) $.extend(settings, options);
		
		var def_element_width = parseInt(settings.width/settings.nbelem);
		var portfolio_height = parseInt(settings.width/(settings.nbelem+1) + 50);
		
		var elements = $(this).children().not('.portfolio-loading-bar');
		var borderwidth = parseInt(((settings.width)/900)*7);
		var titlesize = (def_element_width/366);
		var ratio_largeur = ((elements.length*(def_element_width+3) - settings.width) / (elements.length*def_element_width));
		$(".portfolio-container").css("width", settings.width+'px').css("height", '404px');
		
		for ( var i = 0; i < elements.length; i++ ) {
				$(elements[i]).css('margin-right', '2px' );
				//$(elements[i]).css('border-right', '0.083em solid #f3e7cb' );
				//$(elements[i]).css('width', def_element_width+'px');
				$(elements[i]).css('text-align', 'center');
				$(elements[i]).find('img').each(function() {
					$(this).removeAttr('width').removeAttr('height');
					$(this).css('height', '350px');
				});
				
				var currenthref, elementclass;
				if ((currenthref= $(elements[i]).children().filter("a").attr('href'))!= null) {
					var currentwidth = $(elements[i]).find('img').attr('width'); if (currentwidth==null) currentwidth=defaultwidth;
					var currentheight = $(elements[i]).find('img').attr('height'); if (currentheight==null) currentheight=defaultheight;
					var ratio = currentheight/((portfolio_height-35)*.7);//.6;
					currentwidth = parseInt(currentwidth/ratio);
					if (currentwidth > def_element_width-(borderwidth*2+6)) currentwidth = def_element_width-(borderwidth*2+6);
					currentheight = parseInt(currentheight/ratio);
					var currentstartimage = $(elements[i]).find('img').attr('src'); if (currentstartimage==null) currentstartimage='';
					var currenttitle = $(elements[i]).find('a').attr('title'); if (currenttitle==null) currenttitle='';
					
					
					if ($(elements[i]).find('img').length == 0){
						  $(elements[i]).find('a').html("<img class='img-type' src='"+currenthref+"' width='"+currentwidth+"' height='"+currentheight+"' alt='' />");
					}
					elementclass = 'portfolio-img';
					
					/*$(elements[i]).find('.img-type, .flv-type, iframe').attr("width", currentwidth).attr("height", currentheight).wrap("<div class='portfolio-object-border' style='border-width: "+borderwidth+"px; width:"+currentwidth+"px;'></div>");*/
				}			
				var currenttitle;
				if ((currenttitle = $(elements[i]).find('img').attr("title")) != null) {
					$(elements[i]).addClass(elementclass).append("<div class='portfolio-title'>"+currenttitle+"</div>");
				}
				
				var currentrow2;
				if ((currentrow2 = $(elements[i]).find('img').attr("lang")) != null) {
					$(elements[i]).addClass(elementclass).append("<div class='portfolio-title2'>"+currentrow2+"</div>");
				} else {
					$(elements[i]).addClass(elementclass).append("<div class='portfolio-title2'>&nbsp;</div>");
				}
				
		};
		
		if (elements.length > settings.nbelem) {
		      $(".portfolio-container").append("<div class='slider-container'></div>");
		      $(".slider-container").append("<div class='ui-slider-1'></div>");
		      $(".ui-slider-1").append("<div class='ui-slider-handle'></div>");
		      $(".ui-slider-1").slider({steps: elements.length*settings.nbelem, start: 0, slide: function(e,ui) {
				    mousewheelposition = (elements.length * ui.value /100);
				    caroussel_portfolio_vue(mousewheelposition, portfolio, elements, settings, ratio_largeur, true);
		      }});
		      $(".portfolio-container").mousewheel(function(event, delta) {
				  if (delta > 0) { mousewheelposition+=.3; if(mousewheelposition>elements.length) mousewheelposition = elements.length;
				  } else if (delta < 0) { mousewheelposition-=.3; if(mousewheelposition<0) mousewheelposition = 0;
				  }
				  caroussel_portfolio_vue(mousewheelposition, portfolio, elements, settings, ratio_largeur, false);
				  
				  return false;
		      }).keypress(function(event) {  
			      if (event.keyCode == '9') {
				      return false;
			      } else if (event.keyCode == '37') {
				      mousewheelposition-=.3; if(mousewheelposition<0) mousewheelposition = 0;
				      caroussel_portfolio_vue(mousewheelposition, portfolio, elements, settings, ratio_largeur, false);
				      
						     
			      } else if (event.keyCode == '39') {
				      mousewheelposition+=.3; if(mousewheelposition>elements.length) mousewheelposition = elements.length;
				      caroussel_portfolio_vue(mousewheelposition, portfolio, elements, settings, ratio_largeur, false);	     
			      } 
		      });
		}
		
		$(".portfolio-img a").attr('rel','gallery-'+rel_id).fancybox({'onStart' : function() {$('.flv-type').css('visibility','hidden');}, 'onClosed': function(){caroussel_portfolio_vue(mousewheelposition, portfolio, elements, settings, ratio_largeur, false);}});
		
	});
};

function caroussel_portfolio_vue(current, portfolio, elements, settings, ratio_largeur, bslider) {
	
	var r_width = 0;
	var r_i = 0;
	for ( var i = 0; i < elements.length; i++ ) {
		r_width += $(elements[i]).width();
		r_i++;
	}
	
	var r_ratio_largeur = (r_width+(3*r_i))/r_i;
	
	var r_def_width = parseInt(settings.width/settings.nbelem);
	
	//r_ratio_largeur = ((elements.length*((r_width/r_i)+3) - settings.width) / (elements.length*(r_width/r_i)));
	
	var decalage = parseInt(current*r_ratio_largeur)-850;
	if (decalage < 0) decalage = 0;

	portfolio.css('left',(-decalage)+'px');
	if (!bslider) $('.ui-slider-handle').css('left', parseInt((current/elements.length)*100)+'%');
	//alert(elements.length);
};
})(jQuery);
