var NJS = NJS || {};

NJS.opelnbNews = new Class({
	Implements: Options,
	options: {
		activeItem: null
	},
	initialize: function(element, options) {
		this.setOptions(options);
		var that = this;
		this.element = $(element);
		
		
		running = false;
		news = [];
		
		news.item = []
		news.slider = $(options.helper);
		news.item.box = news.slider.getChildren(options.children);
		news.numberOfItems = news.item.box.length;
		news.item.boxW = news.item.box[0].getSize().x + news.item.box[0].getStyle('margin-right').toInt();
		news.itemsW = news.numberOfItems * news.item.boxW;
		
		var move = function() {
			that.move(news, 'forward', that, options);
		}
		
		if (news.item.box.length > options.minItems) {
			var timer = move.periodical(2000);
			this.element.addEvents({
				'mouseenter': function() {
					$clear(timer);
				},
				'mouseleave': function() {
					timer = move.periodical(2000);
				}
			});
		}
		
	},
	move: function(el,direction, thatObject, options) {
		el.oldLeft = el.slider.getStyle('left');
		el.newLeftBack = (el.slider.getStyle('left').toInt() + el.item.boxW) + 'px';
		el.newLeftForward = (el.slider.getStyle('left').toInt() - el.item.boxW) + 'px';
		
		if (direction == 'forward') {
			el.effect = new Fx.Morph(el.slider, {duration: 'normal', link: 'cancel', transition: Fx.Transitions.Expo.easeInOut,
				onStart: function() {
					running = true;
	        
					},
					onComplete: function() {
						running = false;
						thatObject.setNextItems(news, direction, options);
					}
			});
			el.effect.start({'left': el.oldLeft, 'left': el.newLeftForward});
		}
	},
	setNextItems: function(el, direction, options) {
		var items = $(options.helper).getChildren(options.children);
		if(news.numberOfItems > options.minItems) {
			items[0].inject($(options.helper));
			el.slider.setStyle('left');
		}
	}
});



NJS.slider = new Class({
	initialize: function(slider, slideButton) {
		var that = this;
		that.slider = $(slider);
		that.button = $(slideButton);
		
		var hidden = true;
		
		var verticalSlide = new Fx.Slide(slider, {
			duration: 'normal',
			transition: 'quart:in:out',
			onComplete: function(){
        			if(hidden == false) {
        				that.slider.getParent('div').setStyle('height', 'auto');
        			}
			} 
		});
		verticalSlide.hide();
		$(this.button).addEvent('click', function(event){
			event.stop();
			if (hidden == true) {
				hidden = false;
				that.button.getParent('p').toggleClass('active');
				verticalSlide.toggle();
			} else if (hidden == false) {
				verticalSlide.toggle();
				(function() {
					that.button.getParent('p').toggleClass('active');
				}).delay(300);
				hidden = true;
			}
		}); 
	}
});

NJS.modelToolTips = new Class({
	Implements: Options,
	options: {
		view: null
	},
	initialize: function(element, options) {
		this.setOptions(options);
		$$('a.tips').each(function(el, index) {
			if (options.view == 'list') {
				var content = el.get('rel').split('::');
				var img = '<img src="' + content[0] + '" />';
				el.store('tip:text', '<span class="headline">' + content[1] + '</span><span class="subheader">' + content[2] + '</span>');
				el.store('tip:title', img);
			} else if (options.view == 'single') {
				var content = el.get('rel')
				el.store('tip:text', '<span class="subheader">' + content + '</span>');
				el.store('tip:title', '<span class="headline">Informationen</span>');
			}
			if(!options.preventClick) {
				el.addEvent('click', function(e) {
					e.preventDefault();
				});
			}
		});

		var tips = new Tips('.tips',{
			className: 'tips',
			hideDelay: 0,
			showDelay: 100,
			fixed: true,
			offset: {
				'x': options.tipX, 
				'y': options.tipY
			}
		}); 
		tips.addEvents({
			'show': function(tip) {
				tip.fade('in');
			},
			'hide': function(tip) {
				tip.hide();
			}
		});
	}
});

window.addEvent('domready', function() {
	if($('news-list-container')) {
		var newsList = new NJS.opelnbNews('news-list-container', {
			activeItem: 0,
			helper: 'news-list-helper',
			children: 'div.news-box',
			minItems: 4
		});
	}
	
	if($('modelle') && $$('.user-opelnbmodels-pi1-single').length == 1) {
		var modells = new NJS.modelToolTips('modelle', {
			view: 'single',
			tipX: 0,
			tipY: -50,
			preventClick: false
		});
		var modellslider = new NJS.opelnbNews('box-pics', {
			activeItem: 0,
			helper: 'list-helper',
			children: 'a.tips',
			minItems: 5
		});
	} else {
		var modells = new NJS.modelToolTips('modelle', {
			view: 'list',
			tipX: 0,
			tipY: -280,
			preventClick: true
		});
	}
	
	if($('contact-slider')) {
		var contact = new NJS.slider('contact-slider', 'contact-toggle');
	}
	/*
	if($('modelle')) {
		var modells = new NJS.modelToolTips('modelle', {});
		var num;
		var dim = {}
		dim.width = $('modelle').getElement('div[class=modell]').getStyle('width');
		dim.marginRight = $('modelle').getElement('div[class=modell]').getStyle('margin-right');
		$('modelle').getElements('div[class=modelle-container]').each(function(el) {
			num = 0;
			el.getElements('div[class=modell]').each(function(el) {
				num++;
			});
			el.setStyle('width', (num * dim.width.toInt()) + (num * dim.marginRight.toInt()))
		});
	}*/
});
