$(document).ready(init);
$.fn.reverse = [].reverse;

function init()
{
	// HIDE EXTRA INFO + ADD TOGGLES
	$('.extrainfo, #secondcol h4, #turdcol form').hide();
	
	$('#firstcol, #secondcol').append('<a class="showextra" href="#" title="Show extra info"><span class="hide">Show extra info</span></a>');
	$('#turdcol').append('<a class="showform" href="#" title="Show contact form">Show contact form</a>');
	$('.showform').css('marginTop','20px');
	
	activateToggles();
	
	// SMOOTH SCROLLING
	$('.smoothscroll').click(function(e)
	{
		var targ = $(this).attr('href');
		var offs = $(targ).offset();
		var over = ($(this).parent().attr('id') == 'intro') ? 20 : 0;
		
		$('html, body').animate({scrollTop: offs.top}, 700, 'swing', function()
		{
			if(over != 0)
			{
				$('html, body').animate({scrollTop: offs.top - over}, 300, 'swing');
			}
		});
		
		return false;
	});
	
	// NEXT/PREV BTNS
	catchBrowseButtons();
	
	// PRELOADER
	$('.catcontainer .folioimg').preloader();
	
	// SHADOWBOX
	Shadowbox.init(
	{
    	handleOversize: "drag",
    	modal: true
	});
	
	// MAIL FORM
	$('#submitbtn').click(function(e)
	{
		var name 	= $('#fullname').val(),
			email 	= $('#email').val(),
			msg 	= $('#message').val();
			error	= false;
			
		if(name == '') { contactMsg(true, 'Looks like you forgot to fill in your name!'); error = true; return false; }
		else if(name.length == 1) { contactMsg(true, 'I am quite sure your name is not made of 1 character.'); error = true; return false; }
		else if(name.indexOf(' ') == -1) { contactMsg(true, 'Are you sure you filled in your last name too?'); error = true; return false; }
		else if(email == '') { contactMsg(true, 'Looks like you forgot to fill in your email!');  error = true;return false; }
		//else if(!mailcorrect) { contactMsg(true, 'The email address provided is not corrrect..'); error = true; return false; }
		else if(msg == '') { contactMsg(true, 'Looks like you forgot to fill in your message!'); error = true; return false; }
		else if(msg.length < 10) { contactMsg(true, 'I am quite sure a decent message is not made of ' + msg.length + ' characters'); error = true; return false; }
		
		if(!error)
		{
			$.post('http://www.purplepies.be/ajax/sendMail.php', {fullname: name, email: email, message: msg}, function(data)
			{
				// the AJAX call has been done
				if( data + '' != '1' )
				{
					contactMsg(true, data);
				}
				else
				{
					// there's no error
					contactMsg(false, 'Hurray! Your digital letter has been processed!');
					$('p.error, p.success').delay(5000).slideUp(500, function(){ $('p.error, p.success').remove(); });
					
					$('#fullname').val('');
					$('#email').val('');
					$('#message').val('');
					
					toggle($('.hideform'));
				}
			});
		}
		
		return false;
	});
}

function contactMsg(isError, msg)
{
	if($('p.error, p.success').length == 0)
	{
		$('#turdcol ul').after('<p class="' + ((isError) ? 'error' : 'success') + '">' + msg + '</p>');
		$('p.error, p.success').hide().slideDown(500);
	}
	else
	{
		replaceText($('p.error, p.success'), msg);
		if(!isError && $('p.success').length == 0) $('p.error').removeClass('error').addClass('success');
	}
}

function activateToggles()
{
	$('.showextra, .showform')
		.click(function(e)
		{
			toggle($(this));
			return false;
		});
}

function toggle( target )
{
	var c = target.attr('class');
	var p = target.parent().attr('id');
	
	removeHandlers(target);
	
	switch(c)
	{
		case 'showextra':
			var coll = $('#' + p + ' .extrainfo, #' + p + ' h4');
			
			target
				.removeClass('showextra').addClass('hideextra')
				.attr('title','Hide extra info')
				.html('<span class="hide">Hide extra info</span>');
			
			coll.each(function (i)
			{  
			    $(this)
					.delay(400*i)
					.slideDown(300, function()
					{
						if( i == (coll.length) - 1 )
						{
							resetHandlers(target);
						}
					});
			});
		break;
		case 'hideextra':
			var coll = $('#' + p + ' .extrainfo, #' + p + ' h4');
			
			target
				.removeClass('hideextra').addClass('showextra')
				.attr('title','Show extra info')
				.html('<span class="hide">Show extra info</span>');
				
			coll.reverse().each(function (i)
			{  
			    $(this)
					.delay(400*i)
					.slideUp(150, function()
					{
						if( i == (coll.length - 1) )
						{
							resetHandlers(target);
						}
					});
			});
		break;
		case 'showform':
			target
				.removeClass('showform').addClass('hideform')
				.attr('title','Hide contact form')
				.html('Hide contact form');
				
			$('#turdcol form').slideDown(500);
			$('.hideform').animate({'marginTop': '1px'}, 500, 'swing', function()
			{
				resetHandlers(target);
			});
		break;
		case 'hideform':
			target
				.removeClass('hideform').addClass('showform')
				.attr('title','Show contact form')
				.html('Show contact form');
				
			$('#turdcol form').slideUp(500, function()
			{
				$('.showform').animate({'marginTop': '20px'}, 500, 'swing', function()
				{
					resetHandlers(target);
				});
			});
		break;
	}
}

function removeHandlers( target )
{
	target	.unbind('click')
			.click(function(e)
			{
				return false;
			});
}

function resetHandlers( target )
{
	target	.unbind('click')
			.click(function(e)
			{
				toggle($(this));
				return false;
			});
}

function catchBrowseButtons()
{
	$('.prevbtn, .nextbtn, .numbering li a')
		.unbind('click')
		.click(function(e)
		{
			var par = $(this).parents('.catcontainer');
			var id = $('.catcontainer').index(par);
			var url = /*'http://www.purplepies.be/' +*/ $(this).attr('href');
			var count = par.children('.numbering').children().length;
			var target = $(this);
			
			$('<div id="temp"></div>').appendTo('body').hide().load(url + ' .catcontainer:eq(' + id + ')', function()
			{
				// #1 MANAGE VISIBILITY OF NAV ELEMENTS
				// prevbtn
				if ($('#temp').find('.prevbtn').css('opacity') == '0.2')
				{
					par.children('.prevbtn')
						.animate({'opacity': '0.2'}, 300, 'swing')
						.addClass('disabled');
				}
				else if ($('#temp').find('.prevbtn').css('opacity') == '1')
				{
					if(par.find('.prevbtn').css('opacity') == '0.2')
						par.find('.prevbtn')
							.animate({'opacity': '1'}, 300, 'swing')
							.removeClass('disabled');
					
					par.find('.prevbtn').attr('href', $('#temp').find('.prevbtn').attr('href'));
				}
				// nextbtn
				if ($('#temp').find('.nextbtn').css('opacity') == '0.2')
				{
					par.children('.nextbtn')
						.animate({'opacity': '0.2'}, 300, 'swing')
						.addClass('disabled');
				}
				else if ($('#temp').find('.nextbtn').css('opacity') == '1')
				{
					if(par.find('.nextbtn').css('opacity') == '0.2')
						par.find('.nextbtn')
							.animate({'opacity': '1'}, 300, 'swing')
							.removeClass('disabled');
					
					par.find('.nextbtn').attr('href', $('#temp').find('.nextbtn').attr('href'));
				}
				// numbering
				par.find('.numbering').html( $('#temp').find('.numbering').html() );
				
				// #2 MANAGE THE DATA SHOWN
				par.children('.folioimg').html($('#temp').find('.folioimg').html());
				par.children('.folioimg').attr('href', $('#temp').find('.folioimg').attr('href'));
				if(id == 2)
				{
					par.children('.folioimg').children('img').attr('alt', $('#temp').find('.folioimg').children('img').attr('alt'));
				}
				par.children('.folioimg').preloader();
				replaceText(par.find('h3 .mofo'),$('#temp').find('h3 .mofo').text());
				replaceText(par.find('h3 span:not(.mofo)'),$('#temp').find('h3 span:not(.mofo)').text());
				replaceText(par.find('.info p:not(:last)'),$('#temp').find('.info p:not(:last)').text());
				replaceText(par.find('.info p:last span:last'),$('#temp').find('.info p:last span:last').text());
				
				// #3 CLEAN UP THIS MESS SIR
				
				$('#temp').remove();
				if(id != 2 )Shadowbox.setup(par.children('.folioimg'));
				catchBrowseButtons();
			});
			
			return false;
		});
		
	$('.disabled').unbind('click').click(function(e){ return false; });
}

function replaceText(target, new_text, speed)
{
	var s = (speed != null) ? speed : 20;
	var pos = 		1;
	var orig_l = 	target.text().length;
	var new_l = 	new_text.length;
	
	var int_id = setInterval( function()
	{
		var str = new_text.substr(0,pos) + target.text().substr(pos,orig_l-pos);
		target.text(str);
		
		pos++;
		
		if(pos > orig_l && pos > new_l)
			clearInterval(int_id);
	}, speed );
}

