/*
 * Copyright : (c) 2011 Webfish
 * Website   : http://www.webfish.nl
 * Email     : info@webfish.nl
 * -------------------------------------------------------------------------
 *   $Id: functions.js 88 2011-11-01 11:13:21Z caspar $
 * -------------------------------------------------------------------------
 */

var str_prev = null;
function toggleItem(str_item)
{
	if (str_prev != null)
	{
		$(str_prev).slideUp('slow');
	}
	if (str_prev == str_item)
	{
		str_prev = null;
	}
	else
	{
		$(str_item).slideDown('slow');
		str_prev = str_item;
	}

	return false;
}

function inputOnfocus(objInput, strDefault)
{
	if (objInput.value == strDefault)
		objInput.value = '';
	else
		objInput.select();

	return true;
}

function inputOnblur(objInput, strDefault)
{
	if (objInput.value == '')
		objInput.value = strDefault;

	return true;
}

$('ol#list li a.item').live('click', function(){
	return toggleItem('#'+this.id+'_txt');
});

var team_active = null;
$('ol#teamCity li a').live('click', function(){
	var team_active_new = this.id.substr(5);
	$('ol.team:visible').slideUp(function(){
		$(this).removeClass('active');
	});

	if ($('ol#'+team_active_new).hasClass('active'))
	{
		team_active = team_active_new;
	}
	if (team_active != team_active_new)
	{
		$('ol#'+team_active_new).slideDown('slow');
		team_active = team_active_new;
	}
	else
	{
		team_active = null;
	}

	return false;
});

$('table#ordered button.del').live('click', function(event){
	event.preventDefault();

	var $button = $(this);

	updateCart(false, this.name+'='+this.name, function(){
		// button - td - tr
		$button.parent().parent().fadeOut('slow', function(){$(this).remove();});
	});

	return false;
});

$('table#ordered input.product_num_cart, form#cartHover input.product_num_cart').live('change', function(event){
	event.preventDefault();
	updateCart($(this).parents('form#cartHover').length);
});

$('form#overview button.btnAdd').live('click', function(event){
	event.preventDefault();
	var form_data = $(this).parents('form').serialize()+'&'+this.name+'='+this.value;
	updateCart(false, form_data, function(){
		$('input.product_num.lessmore').hide();
		$('input.product_num.lessmore[id$="_text"]').show();
		$('input.product_num.lessmore:not([id$="_text"])').val('');
		alert('Producten zijn toegevoegd aan winkelmandje');
	});
});

$('form#order, form#cartHover').live('submit', function(event){
	event.preventDefault();
	updateCart(this.id == 'cartHover');
	return false;
});

$('form#order input[name="orderCart"], form#cartHover input[name="orderCart"], form#order input[name="submitOrder"]').live('click', function(){
	$('form#order, form#cartHover').die('submit');
});

var updateCartLastFormData = false;
function updateCart(use_cartHover, form_data, extra_func)
{
	// submit values
	if (form_data == undefined)
	{
		if (use_cartHover == undefined)
		{
			use_cartHover = false;
		}

		if (use_cartHover)
		{
			form_data = $('form#cartHover').serialize();
		}
		else
		{
			form_data = $('form#order').serialize();
		}
		form_data += '&editCart=editCart';
	}

	if (updateCartLastFormData != form_data)
	{
		updateCartLastFormData = form_data;
		$.post('/ajax_cart.php',
			form_data,
			function(data){
				processCart(data, extra_func)
			},
			'json'
		);
	}
}

function processCart(data, extra_func)
{
	// handle data
	if (data.error)
	{
		alert(data.error);
	}
	else if (data.replace)
	{
		for (i in data.replace)
		{
			$(i).html(data.replace[i]);
		}
		addMoreLessBtn();
		if (extra_func)
		{
			extra_func();
		}
	}

	if (data.add_class)
	{
		for (i in data.add_class)
		{
			$(i).addClass(data.add_class[i]);
		}
	}

	if (data.del_class)
	{
		for (i in data.del_class)
		{
			$(i).removeClass(data.del_class[i]);
		}
	}
	updateCartLastFormData = false;
}

function btnLessMore(event, $input, change, is_cart)
{
	var min = 1;
	var max = 99;

	event.preventDefault();

	// hint
	if (!is_cart)
	{
		$input.prev().focus();
	}

	var num = parseInt($input.val());
	if (isNaN(num))
	{
		num = min;
	}
	num += change;
	if (!is_cart && num == min)
	{
		num = '';
	}
	else if (num < min)
	{
		num = min;
	}
	else if (num >= max)
	{
		num = max;
	}
	$input.val(num);
	$input.blur();

	if (is_cart)
	{
		updateCart($input.parents('form#cartHover').length);
	}

	return false;
}

$('button.btnMore, button.btnMoreCart').live('click', function(event){
	return btnLessMore(event, $(this).prev(), 1, $(this).hasClass('cart'));
});
$('button.btnLess, button.btnLessCart').live('click', function(event){
	var $input = $(this).next();
	var is_cart = $(this).hasClass('cart');
	if (!is_cart)
	{
		$input = $input.next();
	}
	return btnLessMore(event, $input, -1, is_cart);
});

function addMoreLessBtn()
{
	var $more = $('<button class="btnMore" type="button"><span>+</span></button>');
	var $less = $('<button class="btnLess" type="button"><span>&ndash;</span></button>');
	$('input.product_num:not(\'.lessmore\')').each(function(){
		$(this).before($less.clone()).after($more.clone()).addClass('lessmore');
	});
	$more.removeClass('btnMore').addClass('btnMoreCart cart');
	$less.removeClass('btnLess').addClass('btnLessCart cart');
	$('input.product_num_cart:not(\'.lessmore\')').each(function(){
		$(this).before($less.clone()).after($more.clone()).addClass('lessmore');
	});

	$('.nojs').removeClass('nojs');
}

Cufon.replace('ol#categories li h3 span.inner', {
	fontFamily: 'FrutigerLTStd',
	hover: true
});

$(function(){

	$('a[rel=external]').attr('target', '_blank');

	$('ol#list li a.item.active').trigger('click');

	if ($('div#carousel ol li').length > 1)
	{
		$('div#carousel ol li').show();
		$("div#carousel").carousel({
			dispItems: 1,
			pagination: true,
			loop: true,
			autoSlide: true,
			autoSlideInterval: 7000,
			delayAutoSlide: 2000,
			animSpeed: 500,
			effect: 'slide',
			nextBtn: '<span role="button"></span>',
			prevBtn: '<span role="button"></span>'
		});
	}

	$('form#product div.bottom span.info').show().live('click', function(){
		$('form#product div.bottom div#info').toggle();
	});

	addMoreLessBtn();

	$('form#order input[name="editCart"]').hide();

	$('input.product_num').hint({hint:'1'});

});
