(function($) {
	$.fn.proximityscroller = function(settings) {
		var settings = $.extend({}, $.fn.proximityscroller.defaults, settings);

		this.each(function() {
			var wrapper   = $(this);
			var container = wrapper.find(settings.selector).first();
			var wwidth    = wrapper.width();
			var woffset   = { x: wrapper.offset().left, y: wrapper.offset().top };
			var cwidth    = 0;
			var limit     = false;

			container.children().each(function() {
				cwidth += $(this).outerWidth(true);
			});

			limit = cwidth - wwidth;

			container.width(cwidth).css('margin-left', -limit / 2);
			wrapper.data('jquery-proximityscroller', { settings: settings, container: container, width: wwidth, offset: woffset, limit: limit });

			wrapper.mouseenter(function() {
				var data = $(this).data('jquery-proximityscroller');

				$(wrapper).bind('mousemove', function(event) {
					var position = { x: event.pageX - data.offset.x, y: data.offset.y - event.pageY };
					var factor   = position.x / data.width;
					var result   = Math.round(data.limit * -factor);

					data.container.css({ marginLeft: result });
				});
			});

			wrapper.mouseleave(function() {
				$(wrapper).unbind('mousemove');
			});
		});

		return this;
	};

	$.fn.proximityscroller.defaults = {
		selector: '> div'
	};
})(jQuery);

var billboards = new Array();
var animateBillboard = function(index) {
	var element = jQuery('ul.billboard').eq(index);

	var current = parseInt(element.attr('data-billboard-current'));
	var next    = (current + 1 < element.children('li').length) ? current + 1 : 0;

	element.attr('data-billboard-current', next);
	element.attr('data-billboard-previous', current);

	if(next > current) {
		var cCurrent = element.children().eq(current).children('div');
		var cNext    = element.children().eq(next).children('div');

		cCurrent.parent().removeClass('active');
		cCurrent.show();
		cNext.hide().parent().addClass('active');
		cNext.fadeIn(400, function() {
			var billboard = jQuery(this).parent().parent();
			var previous  = billboard.attr('data-billboard-previous');

			billboard.children().eq(previous).children('div').hide();
		});
	} else {
		var cCurrent = element.children().eq(current).children('div');
		var cNext    = element.children().eq(next).children('div');

		cNext.parent().addClass('active');
		cNext.show();
		cCurrent.parent().removeClass('active');
		cCurrent.show().fadeOut();
	}
}

jQuery(document).ready(function() {
	jQuery('ul.billboard').attr('data-billboard-current', 0).each(function(index) {
		billboards[index] = window.setInterval('animateBillboard(' + index + ')', 5000);
	}).children().removeClass('active').eq(0).addClass('active');

	jQuery('ul.billboard > li').hover(
		function() {
			var element = jQuery(this);
			var parent = element.parent();
			var current = parent.attr('data-billboard-current');
			var index   = parent.index() - 1;

			window.clearInterval(billboards[index]);

			if(element.index() != current) {
				parent.children('li').removeClass('active').children('div').hide();
				element.addClass('active').children('div').show();
			}
		},
		function() {
			var element = jQuery(this);
			var parent  = element.parent();
			var current = parent.attr('data-billboard-current');
			var index   = parent.index() - 1;

			if(element.index() != current) {
				parent.children('li').eq(current).addClass('active').children('div').show();
				element.removeClass('active').children('div').hide();
			}

			billboards[index] = window.setInterval('animateBillboard(' + index + ')', 5000);
		}
	);

	jQuery('.jquery-proximityscroller').proximityscroller({ selector: ' > ul' });
	jQuery('#footer > ul').equalize({ selector: ' > li' });


	// form handling: required classes for formrows
	jQuery('.required').each(function () {
		jQuery(this).parents('.formRow').addClass('required');
	});

	// form handling: error classes for inputs
	jQuery('.error').each(function() {
		jQuery(this).parent().find('input[type=text]').addClass('error');
	});

	// form handling: variable required field
	jQuery('#CALLBACK').change(function() {
		if (this.checked) {
			jQuery('#TEL').addClass("required");
		} else {
			jQuery('#TEL').removeClass("required");
		}

	});

});


