/**
 * Bootstrap.js - JavaScript bootstrapper
 * 
 * @author Webstores <info at webstores dot nl>
 *         Copyright (c) Webstores internet totaalbureau <http://www.webstores.nl/>
 */
$(document).ready(function() {
	
	// Utilities
	WS.Util.externalLinks();
	WS.Util.rowClick();
	WS.Util.fixPlaceholders();
	
	// Messages
	MessageBar.init();
	
	// IE6 fixes
	if(/msie 6/i.test(navigator.userAgent)) {
		MessageBar.show('warning', '<h1>U gebruikt een zeer oude versie van Internet Explorer</h1><p>Voor een optimale ervaring is het aan te raden om de <a href="http://www.microsoft.com/netherlands/windows/internet-explorer/" title="De laatste versie van Internet Explorer downloaden" rel="external">laatste versie van Internet Explorer</a> te installeren, of te kiezen voor een alternatieve browser zoals <a href="http://www.mozilla.com/firefox/" title="Mozilla Firefox downloaden" rel="external">Firefox</a>, <a href="http://www.google.com/chrome" title="Google Chrome downloaden" rel="external">Chrome</a>, <a href="http://www.apple.com/nl/safari/" title="Apple Safari downloaden" rel="external">Safari</a> of <a href="http://www.opera.com/" title="Opera downloaden" rel="external">Opera</a>.</p>');
		WS.Util.fixIE6HoverList();
	}
	
	// AJAX loading
	$(document.body).ajaxStart(function() {
		$(this).addClass('loading');
	}).ajaxComplete(function() {
		$(this).removeClass('loading');
	});

	// Home carousel
	if($('#spotlight-slides').length) {
		/**
		 * Soft reset carousel
		 *
		 * @param {Object} carousel The carousel instance
		 */
		function fitItems(carousel) {
			var left = carousel.clip.width() * (carousel.first - 1);
			carousel.list.css('left', (left * -1) + 'px');

			carousel.clip.find('.slide').each(function() {
				$(this).width(carousel.clip.width());
			});
		}

		var cyc = new YouTubeCarousel('#spotlight-slides', {
            width: 438,
            height: 253,
			scroll: 1,
			animation: 1500,
			easing: 'easeInOutBack',
			auto: 5,
			wrap: 'both',
			initCallback: function(carousel) {
				fitItems(carousel);

				$(window).resize(function() {
					carousel.reload();
				});

				/*carousel.clip.hover(function() {
					carousel.stopAuto();
				}, function() {
					carousel.startAuto();
				});*/
			},
			reloadCallback: function(carousel) {
				fitItems(carousel);
			}
		});
	}

	
	// Togglers
	$('.accordion').each(function() {
		switch(this.id) {
			/*case 'whatever-accordion':
				new Toggler(this).expand($(this).find('li:first-child'));
				break;*/
			default:
				new Toggler(this);
				break;
		}
	});
	
	// YouTube players
	$('.youtube:not(#spotlight .youtube)').each(function() {
		new YouTubePlayer(this);
	});
	
	// Validation
	$('form').each(function() {
		$(this).validate({
			highlight: function(el, errorClass, validClass) {
				var errorEl = null;
				
				switch(el.type) {
					case 'radio':
						errorEl = $(el).parents('ul.options');
						break;
					case 'checkbox':
						errorEl = $(el).parent();
						break;
					default:
						errorEl = $(el);
						break;
				}
				
				errorEl.removeClass(validClass).addClass(errorClass);
			},
			unhighlight: function(el, errorClass, validClass) {
				var errorEl = null;
				
				switch(el.type) {
					case 'radio':
						errorEl = $(el).parents('ul.options');
						break;
					case 'checkbox':
						errorEl = $(el).parent();
						break;
					default:
						errorEl = $(el);
						break;
				}
				
				errorEl.removeClass(errorClass).addClass(validClass);
			}
		});
	});
	
	// Fancybox
	$('.fancybox, .lightbox, a[rel=shadowbox]').fancybox({padding: 0, titleShow: false, overlayColor: '#000', overlayOpacity: '0.8'});
	$('.iframe-forward').fancybox({padding: 0, type: 'iframe', titleShow: false, overlayColor: '#000', overlayOpacity: '0.8', autoScale: false, width: 540, height: 520});
});
