$(document).ready(function () {
	/**
	 * Nav collapse/open - just apply the "collapsable" class to the main navigation div
	 * Collapsed by default
	 */
	if ($(".main-navigation").is('.collapsable')) {
		var $nav = $(".main-navigation");
		var $plus = $('<div class="plus" />');
		var $minus = $('<div class="minus" />');
		
		$nav.wrap('<div class="nav-container" />');
		
		var fullLeft = parseInt($nav.css('left').replace('px',''));
		var navWidth = $("ul", $nav).width();
		
		$plus.click(function () {
			$nav.animate({left:fullLeft},{
				duration: 'slow',
				complete: function () {
					$plus.hide();
					$minus.show();
				}
			});
		});
		
		$minus.click(function () {
			$nav.animate({left:fullLeft-navWidth},{
				duration: 'slow',
				complete: function () {
					$minus.hide();
					$plus.show();
				}
			});
		});
		
		$nav.append($plus).append($minus);
		$minus.hide();
		$nav.css('left', fullLeft-navWidth);
	}
	
	/**
	 * Load data for the ticker and start scrolling
	 */
	$.ajax({
		url: 'json-ticker.php',
		dataType: 'json',
		success: function (data) {
			var $container = $("div.latest-news .scrollableArea");
			for (var i in data) {
				var $div = $('<div class="news-block '+data[i].type+'" />');
				$div.append('<div class="img-placeholder" />');
				var name = (data[i].type == 'facebook' ? 'go vibrant' : 'go vibrant blog')
				var link = (data[i].link.length > 0 ? data[i].link : 'http://www.facebook.com/govibrant');
				$div.append('<span class="text"><a href="'+link+'" target="_blank" class="name">'+name+'</a>: '+data[i].body+'</span>');
				
				$container.append($div);
			}
			
			$("#makeMeScrollable").smoothDivScroll({
				autoScroll: "onstart",
				autoScrollDirection: "endlessloopright",
				autoScrollInterval: 15,
				autoScrollStep: 1
			});
		}
	});
	
	/**
	 * Set up the full page slider, if present
	 */
	$(".fullpage-slider").each(function () {
		var $this = $(this);
		var page_width;
		var $pages = $("div.page", $this);
		
		$this.data('current_page', 1);
		$this.data('total_pages', $pages.length);
		$this.data('animating', false);
		
		if ($pages.length > 1) { // no need to do anything if there is 1 or fewer pages
			setupScrolling($pages);
			
			//console.log('fullpage-slider');
			var $left = $('<div class="page-left" />');
			var $right = $('<div class="page-right" />');
			
			$left.click(function () {
				scrollLeft($this, $left, $right);
			});
			$right.click(function () {
				scrollRight($this, $left, $right);
			});
			
			// select.page-select scrolls to the page specified by its value
			$("select.page-select", $this).change(function () {
				var value = $(this).val();
				if (value.length>0) {
					scrollToPage($this, $left, $right, value);
				}
			});
			
			$left.hide();
			$this.append($left);
			$this.append($right);
		}
	});
	
	/**
	 * Set up full page slider by placing elements side-by-side.
	 */
	function setupScrolling($elements) {
		page_width = $elements.eq(0).width();
		//console.log(page_width);
		
		var left_offset = 0;
		var last_width = 0;
		
		$elements.each(function (i) {
			var $this = $(this);
			
			if (i > 0) {
				left_offset += page_width;
			}
			$this.css('left', left_offset).css('position','absolute').children(".hidden").show();
			
			last_width = $this.outerWidth();
		});
	}
	
	/**
	 * Scroll to a specific page
	 */
	function scrollToPage(slider, $left, $right, page) {
		
		//console.log(slider.data('current_page')+' to '+page);
		
		if (slider.data('animating') == true) {
			setTimeout(function () {
				scrollToPage(slider, $left, $right, page);
			}, 500);
			return;
		}
		var current_page = slider.data('current_page');
		
		if (current_page == page) return;
		
		var page_diff = page - current_page;
		
		if (page_diff > 0) { // page is to the right
			var left_offset = '-=' + (page_width*page_diff);
		} else { // page is to the left
			var left_offset = '+=' + (page_width*(0-page_diff));
		}
		
		slider.data('animating', true);
		//console.log('scrollto:'+page);
		slider.data('current_page', page);
		$("div.page", slider).animate({
			'left': left_offset
		}, {
			duration: 'slow',
			complete: function () {
				slider.data('animating', false);
				if (slider.data('current_page')<=1) {
					$left.hide();
				} else {
					$left.show();
				}
				if (slider.data('current_page') < slider.data('total_pages')) {
					$right.show();
				} else {
					$right.hide();
				}
			}
		});
	}
	
	/**
	 * Scroll left one page
	 */
	function scrollLeft(slider, $left, $right) {
		/*if (slider.data('animating') == true) return;
		
		slider.data('animating', true);
		//console.log('left');
		slider.data('current_page', slider.data('current_page')-1);
		$("div.page", slider).animate({
			'left': '+=' + page_width
		}, {
			duration: 'slow',
			complete: function () {
				slider.data('animating', false);
				if (slider.data('current_page')<=1) {
					$left.hide();
				}
				if (slider.data('current_page') < slider.data('total_pages')) {
					$right.show();
				} else {
					$right.hide();
				}
			}
		});*/
		if (slider.data('animating') == true) return;
		scrollToPage(slider, $left, $right, parseInt(slider.data('current_page'))-1);
	}
	
	/**
	 * Scroll right one page
	 */
	function scrollRight(slider, $left, $right) {
		/*if (slider.data('animating') == true) return;
		
		slider.data('animating', true);
		//console.log('right');
		slider.data('current_page', slider.data('current_page')+1);
		$("div.page", slider).animate({
			'left': '-=' + page_width
		}, {
			duration: 'slow',
			complete: function () {
				slider.data('animating', false);
				if (slider.data('current_page')>1) {
					$left.show();
				} else {
					$left.hide();
				}
				if (slider.data('current_page') >= slider.data('total_pages')) {
					$right.hide();
				}
			}
		});*/
		if (slider.data('animating') == true) return;
		scrollToPage(slider, $left, $right, parseInt(slider.data('current_page'))+1);
	}
});
