
//------------------------------------------------------------------------------
//
// Dealer classes
//
//------------------------------------------------------------------------------

/**
 * Dealers virtual class
 */
seatuk.dealers.Dealers = {
	cycle : null,

	init : function() {
		if ( jQuery('.offers-pager').length > 0 ) {
			jQuery('.offers-pager').prepend('<ul></ul>');
		}

		var options = {
			prev : '.offers-carousel a[rel="previous"]',
			next : '.offers-carousel a[rel="next"]',
			pager : '.offers-pager ul',
//			timeout: 0,
			pagerAnchorBuilder : this.pagerAnchorBuilder
		};
		var args = {
			element: '.offers-carousel .offers-container'
		};
		this.cycle = new seatuk.dealers.OffersCycle(options, args);
	},

	pagerAnchorBuilder : function(index, DOMElement) {
		var output = '<li><a href="#" class="button">'+ (index + 1) +'</a></li>';
		return output;
	}
};

/**
 * DealersHome class
 * 
 */
seatuk.dealers.DealersHome = function() {

	this.init = function() {
		this.parent.init.call(this);

		jQuery('a[rel="csr-info"]').bind('click', function(event) {
			event.preventDefault();
			jQuery(this).toggleClass('active');
			var view = jQuery('#csr-info-view');
			view.fadeToggle('fast');

			if (jQuery(this).hasClass('active')) {
//				view.
//				view.fadeIn('fast');
			}
			else {
//				view.fade
			}
		});
	}

};
seatuk.dealers.DealersHome.extend( seatuk.dealers.Dealers );

/**
 * DealersOffers class
 *
 */
seatuk.dealers.DealersOffers = function() {

	this.init = function() {
		this.parent.init.call(this);
	}
};
seatuk.dealers.DealersOffers.extend( seatuk.dealers.Dealers );



/**
 * TabbedContent virtual class
 * 
 */
seatuk.ui.TabbedContent = {

	containerElement : null,

	init : function(containerElement) {
		this.containerElement = containerElement;

		var scope = this;
		var count = jQuery(containerElement).find('.tabbed-navigation a').length;

		jQuery(containerElement).find('.tabbed-navigation a').bind('click', function(event) {
			event.preventDefault();
			if ( count > 1 )
				scope.tabClickHandler(jQuery(this));
		});

		this.setDefaultItem();
	},

	setDefaultItem : function() {
//		jQuery(containerElement).find('.tabbed-navigation li:first').addClass('selected');
		var id = jQuery(this.containerElement).find('.tabbed-navigation li:first a').attr('rel');
		this.setSelectedItem(id);
	},

	setSelectedItem : function(id) {
		jQuery(this.containerElement).find('.tabbed-navigation li').removeClass('selected');
		jQuery(this.containerElement).find('.tabbed-navigation li.'+ id).addClass('selected');

		jQuery(this.containerElement).find('.tabbed-content .content-item').removeClass('selected');
		jQuery(this.containerElement).find('.tabbed-content .'+ id).addClass('selected');

	},

	tabClickHandler : function(element) {
		var id = jQuery(element).attr('rel');
		this.setSelectedItem(id);
	}
};

/**
 * HomeTabbedContent class
 *
 * @param containerElement
 */
seatuk.dealers.HomeTabbedContent = function(containerElement) {

	this.parent.init.call(this, containerElement);
};
seatuk.dealers.HomeTabbedContent.extend( seatuk.ui.TabbedContent );

/**
 * ContactTabbedContent class
 *
 * @param containerElement
 */
seatuk.dealers.ContactTabbedContent = function(containerElement) {

	this.parent.init.call(this, containerElement);
};
seatuk.dealers.ContactTabbedContent.extend( seatuk.ui.TabbedContent );


/**
 * OffersCycle class
 *
 * @param options
 * @param args
 */
seatuk.dealers.OffersCycle = function(options, args) {
	var defaultOptions = {
		activePagerClass : 'active-slide',
		containerResize : 0,
		slideResize : 0,
		timeout : 5000
	};
	
	for ( var prop in options ) {
		defaultOptions[prop] = options[prop];
	}
	jQuery(args.element).cycle(defaultOptions);
};

/**
 * Navigation class
 */
seatuk.dealers.Navigation = function() {

	this.items = [];
	this.itemsLen = 0;
	this.maxWidth = 960;

	this.init = function() {
		this.items = jQuery('#navigation ul li');
		this.itemsLen = this.items.length;
		var totalWidth = this.getItemsTotalWidth();
		var borderOffset = this.itemsLen + 1; // 1 is additional side border
		this.maxWidth -= borderOffset;
		var remaining = this.maxWidth - totalWidth;
		var padding = Math.floor((remaining / this.itemsLen) * 0.5);

		jQuery('#navigation ul li a').each(function(index) {
			var r = padding +'px';
			var l = padding +'px';
			jQuery(this).css('padding-right', r);
			jQuery(this).css('padding-left', l);
		});
		remaining = this.maxWidth - this.getItemsTotalWidth();

		if ( remaining != 0 ) {
			var r, l = 0;
			if ( remaining % 2 != 0 ) {
				r = (padding + (Math.floor(remaining * 0.5)));
				l = (padding + (Math.ceil(remaining * 0.5)));
			}
			else {
				r = l = padding + (remaining * 0.5);
			}
			var a = jQuery('#navigation ul li:first a');
			a.css('padding-right', r +'px');
			a.css('padding-left', l +'px');
		}
	};

	this.getItemsTotalWidth = function() {
		var totalWidth = 0;
		jQuery('#navigation ul li').each(function() {
			totalWidth += jQuery(this).width();
		});
		return totalWidth;
	};
};

jQuery(function() {
	new seatuk.dealers.Navigation().init();
});
