/***********************************************************************

Author:     Arno Hoogma
URL:        http://www.4rn0.nl

***********************************************************************/


if (typeof window.jQuery != 'undefined') {

	$(function()
	{

		$(window).resize(changeResolution);
		changeResolution();
		prepareNumbers();
		loadImages();
	});
	
	function changeResolution()
	{

		if ($('body').width() < 1110) {
			$('body').addClass('smallScreen');
		}

		else {
			$('body').removeClass('smallScreen');
		}
		
	}
	
	function initContact()
	{
		
		if ($('body.contact').size()) {
			$('ul#portfolio li').wrapInner('<a href="mailto:info@gravisontwerpers.nl"></a>');
		}
		
	}
	
	function parseQuery()
	{
		
		var queryStringArray = new Object();
		var queryString = window.location.href.substring((window.location.href.indexOf('?') + 1));
		var params = queryString.split(',');

		for (var i = 0; i < params.length; i++) {
			var tempArray = params[i].split('=');
			queryStringArray[tempArray[0]] = tempArray[1];
		}
		
		return queryStringArray;
		
	}
	
	function loadImages()
	{
		
		$.getJSON(document.location.href, function(data) {
			
			$('#portfolio li').remove();
			
			for (var i in data) {
				$('#portfolio').append('<li><img src="assets/images/' + data[i] + '"></li>');
			}
			
			initCarousel();
			
		});
		
	}
	
	function initCarousel()
	{

		var query = parseQuery();
		var rw = false;
		
		if (query.rw) {
			rw = true;
		}
		
		$('#portfolio').jcarousel({
			animation: 1000,
			initCallback: initNumbers,
			itemFirstInCallback: { 
				onBeforeAnimation: updateNumbers,
				onAfterAnimation: updateControls
			},
			scroll: 1,
			start: rw ? $('#mainContent ol a').size() : 1
		});
		
		initContact();

	}
	
	function prepareNumbers()
	{
		
		$('#mainContent ol').addClass('interactive');
		
		$('#mainContent ol a').each(function(i, n) {
			$(this).attr('href', '');
			$(this).text(i + 1);
		});
		
	}
	
	function initNumbers(carousel)
	{

		$('#mainContent ol a').bind('click', function() {
			
			carousel.scroll($.jcarousel.intval($(this).text()));
			
			$('#mainContent ol li.active').removeClass('active');
			$(this).parent().addClass('active');			
			$(this).blur();
			
			return false;
			
		});
		
	}
	
	function updateNumbers(carousel, object, index, state)
	{

		$('#mainContent ol li.active').removeClass('active');
		$('#mainContent ol li:eq(' + (index - 1) + ')').addClass('active');
		
		// updateControls(carousel, object, index, state);
		
	}
	
	function updateControls(carousel, object, index, state)
	{
		
		var item = $('#portfolioNavigation li.active');		
		// var prev = item.prev().size() ? item.prev() : $('#portfolioNavigation li:last');
		// var next = item.next().size() ? item.next() : $('#portfolioNavigation li:first');
		var context = findParentCategory();
		var prev = item.prev().size() ? item.prev() : ($('a:eq(' + (context.eq - 1) + ')', context.container).size() ? $('a:eq(' + (context.eq - 1) + ')', context.container).parent() : $('a:last', context.container).parent());
		var next = item.next().size() ? item.next() : ($('a:eq(' + (context.eq + 1) + ')', context.container).size() ? $('a:eq(' + (context.eq + 1) + ')', context.container).parent() : $('a:first', context.container).parent());
		
		if ($('#portfolioNavigation').size()) {
		
			(index == 1) ? $('.jcarousel-prev').attr('disabled', false).bind('click', { parent: prev, type: 'prev' }, updateLocation) : $('.jcarousel-prev').unbind('click', updateLocation);
			(index == carousel.size()) ? $('.jcarousel-next').attr('disabled', false).bind('click', { parent: next, type: 'next' }, updateLocation) : $('.jcarousel-next').unbind('click', updateLocation);
		
		}
		
		else {

			(index == 1) ? $('.jcarousel-prev').hide() : $('.jcarousel-prev').show();
			(index == carousel.size()) ? $('.jcarousel-next').hide() : $('.jcarousel-next').show();
			
		}
		
	}

	function findParentCategory()
	{
		
		var container, id, eq;
		
		$('ul#primaryNavigation div.werk a').each(function() {		
			if (document.location.href.indexOf($(this).attr('href')) != -1) {

				container = $(this).parents('div').slice(0, 1);
				id = $(this).attr('id');
			
				$('a', container).each(function(i, n) {					
					if ($(n).attr('id') == id) {
						eq = i;
					}
				});
				
			}		
		});
		
		return { container: container, eq: eq };

	}
	
	function updateLocation(e)
	{
		
		// $('.jcarousel-prev, .jcarousel-next').hide();
		var href = $('a', e.data.parent).attr('href') + (e.data.type == 'prev' ? '?rw=true' : '');
	
		if (href.indexOf('http://') !== -1) {
			document.location.href = href;
		}
		
		else {
			document.location.href = $('base').attr('href') + href;
		}
				
	}

}
