$(document).ready(function() {

	/*
	 *
	 *	Callibri eventScroll Engine
	 *
	 */



	function postInit() {
		if ( eventScroll.currentEvent > 0 ) {
			eventScroll.eventScrollLeft(eventScroll.currentEvent);
		}
	}
	
	 
	var eventScroll = {};

	eventScroll.init = function() {

		this.locked = false;
		this.popupEnabled = false;

		this.holder = $('#eventsHolder');
		this.wrapper = $(this.holder).find('div.eventsWrapper');
		this.settings = {
			speed: 500,
			paddingLeft: 0,
			paddingAfter: 200
		};

		this.moveProps = {
			num: 0,
			direction: 'left',
			callback: function() {
				eventScroll.clear();
				eventScroll.unlock();
			},
			dx: 0
		};

		this.obj = {
			first: $(this.wrapper).find('.event:first'),
			last: $(this.wrapper).find('.event:last'),
			amount: $(this.wrapper).find('.event').size(),
			holderWidth: $(this.holder).width()
		};

		//$(this.obj.first).addClass('first');
		//$(this.obj.last).addClass('last');

		var newX = this.settings.paddingLeft;
		var maxH = 0;
		var thisH = 0;
		this.currentEvent = 0;
		var num = 0;
		$(this.wrapper).find('.event').each(function() {
			//thisH = $(this).height();
			$(this).css( 'position' , 'absolute' ).css( 'left' , newX +'px' ).css('top' , '0px');
			newX = newX + $(this).width() + eventScroll.settings.paddingAfter;
			if ( thisH > maxH ) maxH = thisH;
			if ( $(this).is("[rel*='eventScrollCurrent']") ) {
				eventScroll.currentEvent = num;
			}
			num = num + 1;
		});
		//$(this.wrapper).css( 'height' , maxH +'px' );

	}


	eventScroll.lock = function() {
		//$('#msg').text( 'locked' );
		eventScroll.locked = true;
	}


	eventScroll.unlock = function() {
		//$('#msg').text( 'unlocked' );
		eventScroll.locked = false;
	}
	
	
	eventScroll.isLocked = function() {
		//$('#msg').html( '<b>locked!!!!!!</b>' );
		return eventScroll.locked;
	}

	eventScroll.calculate = function() {

		var dx = 0;
		if ( 'right' == this.moveProps.direction ) { // to right
			for( var i =0; i < this.moveProps.num; i++ ) {
				dx = dx + $(this.wrapper).find('.event:eq('+ i +')').width() + this.settings.paddingAfter;
			}
			//dx = dx + (this.moveProps.num - 1) * this.settings.paddingAfter;
			//dx = dx + eventScroll.settings.paddingLeft;
		} else { // to left
			for( var i =0; i < this.moveProps.num; i++ ) {
				dx = dx + $(this.wrapper).find('.event:eq('+ i +')').width() + this.settings.paddingAfter;
			}
		}
		this.moveProps.dx = ( this.moveProps.direction == 'right' ) ? dx : -1 * dx;
		//eventScroll.settings.speed = eventScroll.settings.speed * 120 / dx * this.moveProps.num;
	}


	eventScroll.clear = function() {
		if ( 'right' == this.moveProps.direction ) { // to right
			eventScroll.clearAtEnd();
		} else { // left
			eventScroll.clearAtBegin();
		}
	}


	eventScroll.move = function() {
		$(this.wrapper).animate({
				left: '+='+ eventScroll.moveProps.dx
			},
			eventScroll.settings.speed * eventScroll.moveProps.num
			,
			eventScroll.moveProps.callback
		);
	}


	eventScroll.addToEnd = function() {
		var tempX = $(eventScroll.obj.last).position().left + $(eventScroll.obj.last).width() + eventScroll.settings.paddingAfter;
		var tempObj = eventScroll.obj.first;

		$(this.wrapper).find('.event:lt('+ this.moveProps.num +')').each(function() {
			$(this).clone().css( 'left' , tempX ).appendTo( $(eventScroll.wrapper) ); //.addClass('temp')
			tempX = tempX + $(tempObj).width() + eventScroll.settings.paddingAfter;
			tempObj = $(this).next();
		});
	}


	eventScroll.addToBegin = function() {
		var tempX = $(eventScroll.obj.first).position().left - eventScroll.settings.paddingAfter - $(eventScroll.obj.last).width();
		var tempObj = eventScroll.obj.last;

		for ( var i = eventScroll.obj.amount -1; i > eventScroll.obj.amount -1 -this.moveProps.num; i-- ) {
			var cloneItem =  $(tempObj).clone();
			cloneItem.css( 'left' , tempX +'px' ).prependTo( $(eventScroll.wrapper) ); //.addClass('temp')

			/* sIFR clear */

			var sIFRholder = cloneItem.find('.sIFR-replaced').removeClass('sIFR-replaced');
			sIFRholder.find('.sIFR-flash').remove();

			var h1text = sIFRholder.find('.sIFR-alternate').text();
			sIFRholder.find('.sIFR-alternate').remove();
			sIFRholder.text( h1text );

			/* sIFR apply  */

			var helios = { src: '/media/swf/hbc.swf', wmode: 'transparent' };
			sIFR.activate(helios);
			sIFR.replace( helios, {
				selector: 'span.title',
				css: {'.sIFR-root': { 'background': 'transparent', 'color': '#ffffff', 'text-transform': 'uppercase' }
			} });

			tempObj = $(tempObj).prev();
			tempX = tempX - eventScroll.settings.paddingAfter - $(tempObj).width();
		}
	}


	eventScroll.clearAtBegin = function() {
		$(eventScroll.wrapper).find('.event:lt('+ (eventScroll.moveProps.num) +')').remove();
		//$(this.wrapper).find('.event').removeClass('temp').removeClass('first').removeClass('last');
		this.obj.first = $(this.wrapper).find('.event:first');
		this.obj.last = $(this.wrapper).find('.event:last');
		$(this.obj.first).addClass('first');
		$(this.obj.last).addClass('last');
	}


	eventScroll.clearAtEnd = function() {
		$(eventScroll.wrapper).find('.event:gt('+ (eventScroll.obj.amount -1) +')').remove();
		//$(this.wrapper).find('.event').removeClass('temp').removeClass('first').removeClass('last');
		this.obj.first = $(this.wrapper).find('.event:first');
		this.obj.last = $(this.wrapper).find('.event:last');
		$(this.obj.first).addClass('first');
		$(this.obj.last).addClass('last');
	}


	eventScroll.eventScrollLeft = function(offset) {
		if ( eventScroll.isLocked() ) return;
		eventScroll.lock();
		this.moveProps.num = ( offset < 1 ) ? 1 : offset;
		this.moveProps.direction = 'left';
		this.addToEnd();
		this.calculate();
		this.move();
	}


	eventScroll.eventScrollRight = function(offset) {
		if ( eventScroll.isLocked() ) return;
		eventScroll.lock();
		this.moveProps.num = ( offset < 1 ) ? 1 : offset;
		this.moveProps.direction = 'right';
		this.addToBegin(offset);
		this.calculate();
		this.move();
	}


	eventScroll.getCurrent = function(obj) {
		return {
			x: $(obj).position().left + $(eventScroll.wrapper).position().left,
			w: $(obj).width()
		}
	}
	
	eventScroll.showPopup = function() {
	}


	eventScroll.init();
	setTimeout( postInit , 700 );


	// -- arrows

	$('#contentBlock div.eventsBox div.scrollLeft').click(function() {
		eventScroll.eventScrollRight(1);
	});

	$('#contentBlock div.eventsBox div.scrollRight').click(function() {
		eventScroll.eventScrollLeft(1);
	});


});

