/*
 * based off of /v8/widgets/automotive/modelselector/js/modelselector-style5.js
 */


(function ($) {
	var ModelSelector = { // setup local and global aliases for ModelSelector
		active: false,
		init: function (data) {
			this.data = data;
			if (($('.msModels').size() > 1) && $('.msModels:last li').size() > 0) {
				this.nav = true;
			}
			this.loadDom();
			this.behavior();
			//			$('#mCarousel').css('visibility', 'visible');


		},

		nav:false,

		loadDom: function() {
			var that = this;
			var data = this.data
			$('.msModels').each(function() {
				if (that.nav) {
					if ($('.msNav', this).size() == data.msModelLimit) {
						$('.msNav:gt(' + (data.msModelLimit / 2) + ')', this).addClass('right')
					} else {
						$(this).width(($('.msNav', this).width() * $('.msNav', this).size()) + $('#msModels .next').width()).addClass('set')
					}
				} else {
					$(this).width($('ul', this).width()).addClass('set')
				}
			})
			$('#mCarousel').css('visibility', 'visible');
			$('.modelSelector .widgetWrap').addClass('set');
			if (this.nav) {
				$('.msModels:gt(0)').hide()
				$('#msModels .prev').add($('#msModels .next')).show();
			}

		},

		behavior: function() {
			$('.msModelClass').hover(
					function() {
						$(this).addClass('msActive')
					}, function() {
				$(this).css('visibility', 'hidden');
				$(this).removeClass('msActive')
				$('.msNav').removeClass('selected');
			})
			$('.msNav').hoverIntent({
				sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)
				interval: 150, // number = milliseconds for onMouseOver polling interval
				over: function() {
					$(this).addClass('selected')
					//					 console.log( $('ul.msContainer li:first',this))
					//					 console.log(!$('ul.msContainer li:first',this).hasClass('widthSet'))
					if (!$('ul.msContainer li:first', this).hasClass('widthSet')) {
						//						 console.log($('.msModel',this).css('width').replace('px','') * $('.msModel',this).size())
						$('ul.msContainer li:first', this).width($('.msModel', this).css('width').replace('px', '') * $('.msModel', this).size()).addClass('widthSet')
					}
					$('ul', this).show()
				}, // function = onMouseOver callback (REQUIRED)
				timeout: 200, // number = milliseconds delay before onMouseOut
				out: function() {
					$(this).removeClass('selected')
					$('ul', this).hide()
				} // function = onMouseOut callback (REQUIRED)
			})
			if (this.nav) {
				var currentIndex,
						current,
						more,
						next,
						msModels = $('.msModels').not('.prev').not('.next'),
						showMsModels = function(current, next) {
							if (next) {
								$(current).find('ul').css('visibilty', 'hidden');
								$(current).hide();
								$(next).find('ul').css('visibility', 'visible');
								$(next).show();
							}
						}
				$('#msModels .prev').click(function() {
					currentIndex = $(msModels).index($('.msModels:visible'));
					current = $(msModels)[currentIndex];
					next = $(msModels)[currentIndex - 1];
					more = $(msModels)[currentIndex - 2]
					showMsModels(current, next)
					if (!more) {
						$(this).addClass('disabled')
						if ($('#msModels .next').hasClass('disabled')) {
							$('#msModels .next').removeClass('disabled')
						}
					}
					return false;
				});
				$('#msModels .next').click(function() {
					currentIndex = $(msModels).index($('.msModels:visible'));
					current = $(msModels)[currentIndex];
					next = $(msModels)[currentIndex + 1];
					more = $(msModels)[currentIndex + 2];
					showMsModels(current, next)
					if (!more) {
						$(this).addClass('disabled')
						if ($('#msModels .prev').hasClass('disabled')) {
							$('#msModels .prev').removeClass('disabled')
						}
					}
					return false;
				});
			}
			}


		};
	window.DDC.ModelSelector = ModelSelector;
})(jQuery);





