//----------------------------------------------------------------------------------------------------------------------
/**
 * This file contains the {@link TMB} class
 *
 * @author      Blue Moon IT <info@bluemoonit.net>
 * @copyright   2011, Blue Moon IT
 * @version     SVN: $Id: tmb.js 109 2011-02-18 09:39:42Z johan $
 */
//----------------------------------------------------------------------------------------------------------------------
/*jslint browser:true white:false devel:true onevar:true nomen:false forin:true undef:true */
/*global $,jQuery,window,BlueMoonIT_ImageResizer */
//----------------------------------------------------------------------------------------------------------------------
/**
 * Main singleton class for the TMB webapp
 *
 * @author      Johan B.W. de Vries <johan@bluemoonit.net>
 */
var TMB = {};

TMB.resizer = new BlueMoonIT_ImageResizer();
TMB.sliderInterval = null;
TMB.bgId = null;
//----------------------------------------------------------------------------------------------------------------------
TMB.setBgImages = function(imgs, bgId)
{
	if( this.bgId === bgId ) {
		return;
	}
	this.bgId = bgId;

	TMB.resizer.imgNode = document.getElementById('main-background-img');
	TMB.resizer.images = [];
	TMB.resizer.current = null;

	$(TMB.resizer.imgNode).fadeOut(400, function() {
		var p, i;

		p = $('#bg-pins');
		p.empty();

		for(i in imgs) {
			TMB.resizer.addImage(imgs[i][0], imgs[i][1], imgs[i][2], imgs[i][3]);

			p.prepend('<a href="' + imgs[i][0] + '" data-img-id="' + i + '" class="' + (i < 1 ? 'act' : '') + '"><span>' + i + '</span></a>');
		}

		p.find('a').bind('click', TMB.onPinClick);

		TMB.resizer.next();

		setTimeout(function() {
			$(TMB.resizer.imgNode).fadeIn(400);
		}, 400);
	});
};
//----------------------------------------------------------------------------------------------------------------------
TMB.setCarImages = function(imgs)
{
	var c, href, i;

	c = $('#carousel').empty().append('<ul></ul>').find('ul');

	for(i in imgs) {
		href = null === imgs[i][1] ? '' : (' href="' + imgs[i][1] + '" ');

		c.append('<li><a ' + href + ' style="background-image: url(\'' + imgs[i][0] + '\');" data-idx="' + i + '"><span>' + i + '</span></a></li>');
	}

	c.find('a').bind('click', function() {
		var tu, th, st;

		$('#carousel a').removeClass('act');

		th = $(this);
		tu = th.attr('href');
		if( tu && (tu !== '') ) {
			st = Math.floor(th.attr('data-idx') / 3);

			$('#carousel li').each(function() {
				if( $(this).find('a').attr('data-idx') < st * 3 ) {
					$(this).hide();
				}
			});

			$('#carousel').css('height', '110px');

			TMB.loadRightPart(tu);

			th.addClass('act');
		}

		th.blur();

		return false;
	});

	c.find('a').bind('mousedown', function() {
		$(this).addClass('mousedown');
	});
	c.find('a').bind('mouseup', function() {
		$(this).removeClass('mousedown');
	});
};
//----------------------------------------------------------------------------------------------------------------------
TMB.onResize = function()
{
	$('#main-background').css('height', $(window).height());
	TMB.resizer.resize();
};
//----------------------------------------------------------------------------------------------------------------------
TMB.textFull = function()
{
	var h = $(window).height() - 250;

	$('#main-textbar').animate({height: h + 'px'});
	$('#main-textbar div.right-part').css('min-height', (h - 30) + 'px');
};
//----------------------------------------------------------------------------------------------------------------------
TMB.textSmall = function()
{
	$('#main-textbar').animate({height: '170px'});
	$('#main-textbar div.right-part').css('min-height', '140px');
};
//----------------------------------------------------------------------------------------------------------------------
TMB.onMenuClick = function(ev)
{
	var tar;

	ev = ev || window.event;
	tar = ev.target || ev.srcElement;

	$('#main-header ul a').removeClass('act');
	$(tar).addClass('act');

	$('#main-textbar div.container').slideUp();
	$('#carousel').css('height', 'auto');

	jQuery.ajax({
		data: {onlyContent: true},
		dataType: 'html',
		url: ev.target.href,
		success: function (html) {
			$('#main-textbar div.container').empty()
				.append('<div id="bg-pins"></div>')
				.append(html)
				.slideDown();
		},
		error: function(x, textStatus, errorThrown) {
			window.location = tar.href;
		}
	});

	return false;
};
//----------------------------------------------------------------------------------------------------------------------
TMB.loadRightPart = function(url)
{
	$('#main-textbar div.container div.right-part').children().slideUp();

	$(TMB.resizer.imgNode).fadeOut(400);

	jQuery.ajax({
		data: {onlyContent: true},
		dataType: 'html',
		url: url,
		success: function (html) {
			var cont = $(html);

			cont.filter('div.right-part').children().hide();

			$('#main-textbar div.container div.right-part').empty()
				.append(cont.filter('div.right-part').children());

			$('#main-textbar div.container div.right-part').children().slideDown();

			$('#main-textbar div.container').append(cont.filter('script.load'));

			if( url.match('/portfolio/') ) {
				$('#main-header ul a').removeClass('act');
				$('#main-header ul a.por').addClass('act');
			}
		},
		error: function(x, textStatus, errorThrown) {
			window.location = url;
		}
	});

	return false;
};
//----------------------------------------------------------------------------------------------------------------------
TMB.startSlider = function()
{
	if( null === TMB.sliderInterval ) {
		TMB.sliderInterval = window.setInterval(TMB.onSliderTimer, 4000);
	}
};
//----------------------------------------------------------------------------------------------------------------------
TMB.onSliderTimer = function()
{
	$(TMB.resizer.imgNode).fadeOut(400, function() {
		TMB.resizer.next();

		$('#bg-pins a').attr('class', '');
		$('#bg-pins a[data-img-id="' + TMB.resizer.current + '"]').addClass('act');

		$(TMB.resizer.imgNode).fadeIn();
	});
};
//----------------------------------------------------------------------------------------------------------------------
TMB.stopSlider = function()
{
	window.clearInterval(TMB.sliderInterval);
	TMB.sliderInterval = null;
};
//----------------------------------------------------------------------------------------------------------------------
TMB.resetSlider = function()
{
	TMB.resizer.current = null;
};
//----------------------------------------------------------------------------------------------------------------------
TMB.onPinClick = function(ev)
{
	var restart = null !== TMB.sliderInterval;

	TMB.stopSlider();
	$(TMB.resizer.imgNode).fadeOut(400, function() {
		TMB.resizer.select($(ev.target).attr('data-img-id'));

		$('#bg-pins a').attr('class', '');
		$('#bg-pins a[data-img-id="' + TMB.resizer.current + '"]').addClass('act');

		$(TMB.resizer.imgNode).fadeIn();

		if( restart ) {
			TMB.startSlider();
		}
	});

	return false;
};
//----------------------------------------------------------------------------------------------------------------------

