// SELF EXECUTING FUNCTION
(function($) {
	var pluginName 		= "carousel",
	    methods 		= {
		init: function(o,callback) {
			return this.each(function() {
				var $this= $(this),
				    data = $this.data(pluginName);
				if(!data) {
					var settings 	= {
						singleWidth: 200,
						autoscroll: true,
						delay: 6000,
						scrollLength: 1000,
						nav: false
					    };
					if(o) {
						$.extend(settings,o);
					};
					
					var $wrapper = $('> div', this).css('overflow', 'hidden'),
						$slider = $wrapper.find('> div').width(9999),
						$items = $slider.find('> div'),
						$single = $items.filter(':first'),
						visible = Math.ceil($wrapper.innerWidth() / settings.singleWidth),
						currentPage = 1,
						pages = Math.ceil($items.length / visible);
			
					/* TASKS */
			
					// 3. reset scroll
					$wrapper.scrollLeft(0);
					if(settings.nav == true) {
						var pageNav = '<ul class="carousel-nav">';
						for(var i=1; i <= pages; i++) {
							if(i==1) {
								pageNav += '<li><a href="#' + i + '" class="active">Page ' + i + '</a></li>';
							} else {
								pageNav += '<li><a href="#' + i + '">Page ' + i + '</a></li>';
							}
						}
						pageNav += '</ul>';
					}
			
					// 4. paging function
					function gotoPage(page) {
						var dir = page < currentPage ? -1 : 1,
						    n = Math.abs(currentPage - page),
						    left = settings.singleWidth * dir/* * visible*/ * n;
						if (page > pages) {
							$wrapper.animate({
								scrollLeft : '-=' + (settings.singleWidth * pages)
							}, settings.scrollLength);
							page = 1;
							currentPage = page;
						} else if (page == 0) {
							page = pages;
							$wrapper.animate({
								scrollLeft : '+=' + (settings.singleWidth * (pages-1))
							}, settings.scrollLength);
							currentPage = page;
						} else {
							$wrapper.animate({
								scrollLeft : '+=' + left
							}, settings.scrollLength);
							currentPage = page;
						}
						$this.find(".carousel-nav .active").removeClass("active");
						var allATags	= $this.find(".carousel-nav a"),
						    dotPageURL	= [];
						$.each(allATags,function(i,e) {
							var href = $(e).attr("href");
							if(href.split("#")[1] == page) {
								$(e).addClass("active");
							};
						});
					}
			
					// 5. insert the back and forward link
					$this.append(pageNav);
					// 6. bind the back and forward links
					$this.find('.back').click(function () {
						gotoPage(currentPage - 1);
						return false;
					});
			
					$this.find('.forward').click(function () {
						gotoPage(currentPage + 1);
						return false;
					});
					
					$this.find('.carousel-nav a, .button a').click(function () {
						var dotPage = $(this).attr("href");
						dotPage = dotPage.substring(dotPage.indexOf('#'));
						dotPage = dotPage.substring(1);
						gotoPage(dotPage);
						return false;
					});
					if(settings.autoscroll == true) {
						setInterval(function() {
							gotoPage(currentPage + 1);		     
						}, settings.delay);
					}
					
					var instanceObj = {
						settings: settings
					};
					$this.data(pluginName,instanceObj);
				};
			});
		}
	};
		
	// EXTEND JQUERY
	$.fn.carousel = function(m) {

		// IF THE METHOD PASSED EXISTS...
		if(methods[m]) {
			
			// RETURN THE METHOD AND ANY ATTACHED ARGUMENTS
			return methods[m].apply(this,Array.prototype.slice.call(arguments,1));
		
		// IF NOTHING IS PASSED OR NO METHOD IS PASSED BUT AN OBJECT IS PASSED...
		} else if (!m || typeof m == "object") {
			
			// RUN THE init METHOD BY DEFAULT AND PASS ANY ATTACHED ARGUMENTS
			return methods.init.apply(this,arguments);
			
		// IF WHAT IS PASSED DOESNT APPLY...
		} else {
			
			// SHOW AN ERROR
			$.error("Invalid method passed");			
		};
	}
})(jQuery);
$(document).ready(function() {
	/* Form Radio Button Styling/Triggering */
	$('section form label').click(function() {
		var name = $(this).find("input").attr("name");
		$('section form input[name="'+name+'"]').each(function(){
			$(this).parent("label").removeClass("checked");
		});
		$(this).addClass("checked").find("input").attr("checked","checked");
		return false;
	});
	/* Accordion Activation */
	$("#accordion").accordion({
		header: 'h3',
		event: 'click',
		autoHeight: false
	});
});
$(window).load(function() {
	$('#aside-form').carousel({
		singleWidth: 284,
		autoscroll: false,
		scrollLength: 500
	});
	/*$('#banner').carousel({
		singleWidth: 996,
		autoscroll: true,
		scrollLength: 1000,
		delay: 6000,
		nav: true
	});*/
});
