var pCarousel = {
	animationId: null,
	animationDir: 'right',
	forceStop: false,
	
	//time in miliseconds to wait before scrolling
	animationTimeout: 3000,
	
	//time in miliseconds for the scrolling transition
	animationSpeed: 300,
	
	
	init: function(carousel) {
		carousel.clip.hover(function() { pCarousel.halt() }, function() { if(!pCarousel.forceStop) pCarousel.animate(carousel); });
		pCarousel.animate(carousel);
		
    jQuery('a.pCarouselButton').bind('mousedown', function() { jQuery(this).addClass('stateDown'); });
    jQuery('a.pCarouselButton').bind('mouseup, mouseout, drag', function() { jQuery(this).removeClass('stateDown'); });
    jQuery(document).bind('mouseup', function() { jQuery('a.pCarouselButton').removeClass('stateDown'); });

		jQuery('a.pCarouselNext').bind('click', function() {
        pCarousel.halt();
        carousel.next();
        jQuery(this).removeClass('stateDown'); 
        return false;
    });
		
		jQuery('a.pCarouselPrev').bind('click', function() {
        pCarousel.halt();
        carousel.prev();
        jQuery(this).removeClass('stateDown'); 
        return false;
    });
		
		jQuery('a.pCarouselStartStop').bind('click', function() {
				if( jQuery(this).is('a.pCarouselStop') ) {
	        pCarousel.halt();
	        pCarousel.forceStop = true;
	        jQuery(this).removeClass('pCarouselStop').addClass('pCarouselStart');
	        jQuery(this).removeClass('stateDown');
	        return false;
				}
				else if( jQuery(this).is('a.pCarouselStart') ) {
	        if( pCarousel.animationId ) { jQuery(this).removeClass('stateDown'); return false; }
					pCarousel.forceStop = false;
	      	pCarousel.animate(carousel);
					jQuery(this).removeClass('pCarouselStart').addClass('pCarouselStop');
					jQuery(this).removeClass('stateDown');
	        return false;
				}
				else { jQuery(this).removeClass('stateDown'); return false; }
    });
	},
	
	animate: function(carousel) {
		pCarousel.animationId = setInterval( function() {
			if( carousel.last == carousel.options.size ) { pCarousel.animationDir = 'left'; }
			else if( carousel.first == 1 ) { pCarousel.animationDir = 'right'; }
	
			if( pCarousel.animationDir == 'right' ) { carousel.next(); }
			else { carousel.prev(); }
		}, pCarousel.animationTimeout );
	},
	
	halt: function() {
		if( pCarousel.animationId ) {
			clearInterval(pCarousel.animationId);
			pCarousel.animationId = null;
		}
	}
	
};

jQuery(document).ready(function() {
	jQuery('#propertiesCarousel').jcarousel({
		wrap: null,
		scroll: 1,
		visible: 3,
		initCallback: pCarousel.init,
		easing: 'linear',
		animation: pCarousel.animationSpeed,
		buttonPrevHTML: null,
		buttonNextHTML: null
	});
});
