$.namespace('swis.feltz.mensen');

swis.feltz.mensen = function(){};

swis.feltz.mensen.prototype.init = function() {
	var self = this;
	
	// Dom ready
	$(function() {
		
		$("#carrouselContainer li.content_carrouselItem").width($("#carrouselContainer li.content_carrouselItem").width());				   
		self.resize(true);
		$(window).resize(function() {
			self.resize();
		});
				
		self.iNoItems = $("#carrouselWrap .content_carrouselItem").size();
				
		if( self.iNoItems > 1) {
			if( $("#carrouselWrap ul.items").width() < $(window).width() ) {
				var oCarrouselItems = $("#carrouselWrap .content_carrouselItem");
																  
				var i =0;
				while($("#carrouselWrap ul.items").width() < $(window).width() && i < 50) {
					oElement = $(oCarrouselItems[i%oCarrouselItems.size()]).clone();       
					$("#carrouselWrap ul.items").append(oElement);
					i++;
				}
				Cufon.refresh();                
				self.iNoItems = $("#carrouselWrap .content_carrouselItem").size();
			} 
		}
		
		// Alle foto's een data object met offset vanaf linkerkant window geven
		$("#carrouselWrap .content_carrouselItem").each(function(i, val) {
			$(this).data('offset', $(this).position().left).data('nr', i+1);
		});
		
		$("#carrouselWrap .imagePersoon").click(function(jsEvent) {
			jsEvent.preventDefault();        
			self.show($(this).parent());
		});    
		
		$('#mensenNav li').live('click', function(eJsEvent) {
			//Project key uit href halen
			var sKey = this.id.substring(10);
			self.show($('#carrouselItem_'+sKey));
		});                      
                                           
        self.bDisabled = false;         
        $("#carrouselWrap .content_carrouselItem").not(':last').not(':first').mouseover(function() {               
            if( !self.bDisabled ) {
                var iMagicNumber = ($(this).offset().left + $(this).outerWidth());
                if( iMagicNumber + 30 > $(window).width()) {
                    self.bDisabled = true;  
                    self.moveRight(this);      
                }
                if( iMagicNumber < 280) {   
                    self.bDisabled = true;
                    self.moveLeft(this); 
                }                         
            }
        });
	});            
}       

swis.feltz.mensen.prototype.moveLeft = function(li) {
    var self = this;            
    var iCurLeft = $('#carrouselContainer').position().left;
    var iNewLeft = iCurLeft + $(li).width() + 10; 
    if( iNewLeft > 0 ) {
        iNewLeft = 0;
    }
    $('#carrouselContainer').animate( { left: iNewLeft + 'px' }, "slow", "swing", function() {   
        setTimeout(function() {self.bDisabled = false;}, 50);
    } );
}            

swis.feltz.mensen.prototype.moveRight = function(li) {             
    var self = this;
    self.bMouseDisabled = true;
    var iCurLeft = $('#carrouselContainer').position().left;
    var iNewLeft = iCurLeft - $(li).width() + 10; 
    if( iNewLeft > 0 ) {
        iNewLeft = 0;
    }
    var iUlOffset = $(window).width() - $('#carrouselContainer').offset().left - $('#carrouselContainer ul.items').width();
    if( iUlOffset > 0 ) {
        iNewLeft -= iUlOffset;
    }
    $('#carrouselContainer').animate( { left: iNewLeft + 'px' }, "slow", "swing", function() {   
        setTimeout(function() {self.bDisabled = false;}, 50);
    } );
}   

swis.feltz.mensen.prototype.resize = function(bFirst) {
																			
	var oCarrousel = $('#carrouselWrap');
	oCarrousel.css('left', $('#moduleMensen').offset().left * -1 + 'px');
	oCarrousel.width($(window).width());    
	
	if( bFirst ) {
		return false;
	}                                                           
																	 
	//Even kijken of we niet rechts een gat hebben
	var iUlOffset = $(window).width() - $('#carrouselContainer').offset().left - $('#carrouselContainer ul.items').width();
	
	if( iUlOffset > 0 ) {        
		$('#carrouselContainer').clearQueue();
        var self = this;
		$('#carrouselContainer').animate( { left: ($('#carrouselContainer').position().left + iUlOffset) + 'px' }, "slow", "swing");
	}                 
}

swis.feltz.mensen.prototype.show = function(oLiElement) {
	var self = this;
	
	$('#mensenNav li').removeClass('active');
	
	// Is het huidige item actief
	var bActive = false;
	if(oLiElement.hasClass("active")) {
		bActive = true;
	}
			
	// Sluiten alle items
	$(".content_carrouselContainer li.active").animate({"width": "240px"},"slow");
	$(".content_carrouselContainer li.active").removeClass("active");        
	$(".content_carrouselContainer .infoPersoon").hide();
	
	// Als het item al actief was hebben we hem gesloten en verder niets
	if( bActive ) {
																	
		//Even kijken of we niet rechts een gat hebben
		var iUlOffset = $(window).width() - $('#carrouselContainer').offset().left - $('#carrouselContainer ul.items').width() + 311;
		
		if( iUlOffset > 0 ) {     
			$('#carrouselContainer').animate( { left: (self.iCurrentRightOffset + iUlOffset) + 'px' }, "slow", "swing");
		}          
		
		return;
	}
		
	// Als het item niet actief was laat het dan zien      
	oLiElement.find('.infoPersoon').show();    
	oLiElement.addClass("active"); 
	oLiElement.animate( { width: "470px" }, "slow", "swing" );            
	 
	
	// Todo: centreren
	var iLeftOffset = oLiElement.data('offset');      
	
	if( self.iNoItems == oLiElement.data('nr') ) {          
		var iRightOffset = $(window).width() - iLeftOffset - 480;
	}
	else {
		var iRightOffset = $(window).width() - iLeftOffset - 640;
	}           

    //Tekst gaat er aan de rechterkant niet meer op passen;
	if( iRightOffset < 0 ) {           
		self.iCurrentRightOffset = iRightOffset;
		$('#carrouselContainer').animate( { left: iRightOffset + 'px' }, "slow", "swing");
	}
	else {                                                  
		self.iCurrentRightOffset = 0;         
		$('#carrouselContainer').animate( { left: '0px' }, "slow", "swing");
	}                                                                   
														 
	//Balletje verspringen                        
	$('#mensenNav_'+oLiElement.attr('id').substr(14)).addClass('active');            
}

var oMensen = new swis.feltz.mensen();
oMensen.init();
		
	

