$(document).ready(function(){
   /* Collection Navigation */
   $("ul.child-navigation").hide();
   $("ul.child-navigation.show.current").show();
   $("ul.sub-navigation li a.hide-text").toggle(function() {
   		$("ul.child-navigation").hide();
   		$(this).next("ul.child-navigation").show();
   }, function() {
   		$(this).next("ul.child-navigation").hide();
   });

});

// Lightboxes:
$(function() {
	// lightbox popup.
	$("ul.options li.enlarge a, a.enlarge").fancybox({
		'width'				: 560,
		'height'			: 502,
		'autoScale'			: false,
		'transitionIn'		: 'none',
		'transitionOut'		: 'none',
		'type'				: 'iframe'
	});
});

// Favourites:

function toggle_favourite(id) {
	// We use .ajax() so that we can use synchronous requests
	// (this enables us to return data from this function)
	// but check this in IE as IE sometimes balks at .ajax() IIRC
	var r;
	$.ajax({
		type: 'POST',
		url: "/designs/ajax/toggle_favourite",
		async: false,
		data: { id: id },
		success: function(data) {
			if (error = data.error) {
				alert ("Error: "+error);
				r = false;
			}
			else {
				r = data;
			}
		},
		dataType: 'json'
	});
	return r;
}

$(function() {
	$('div.collection-actions a.toggle_favourite').click(function() {
		var id = $(this).attr('rel');
		if (data = toggle_favourite(id)) {
			var id = data.id;
			var favourite = data.favourite;
			if (favourite) {
				$('#toggle_favourite_'+id).addClass('favourite');
			}
			else {
				$('#toggle_favourite_'+id).removeClass('favourite');
			}
			// Update main "favourites" count
			if( data.fav_count < 1 ){
				$('.favs_count').html('You have no favourites');
			} else {
				$('.favs_count').html('<a href="/collections/favourites">View your favourites  - <span class="fav-num">' + data.fav_count + '</span> items</a>');
			}
			// Remove the design if we're on the favourites page...
			$('body.favourites div#design_'+id).remove();
			// ... and update the list of favourites to add 'class="first"' where necessary
			$('body.favourites div.collection-listing div').removeClass('first');
			$('body.favourites div.collection-listing div:nth-child(3n+1)').addClass('first');
		}
		return false;
	});
	$('div.lightbox a.toggle_favourite').click(function() {
		var id = $(this).attr('rel');
		if (data = toggle_favourite(id)) {
			var id = data.id;
			var favourite = data.favourite;
			if (favourite) {
				$(this).addClass('favourite');
				// Toggle the "favourite" on the calling page;
				// note that this is duplication of code, but unavoidable
				// due to the restricted scope of JS called from the lightbox
				parent.$('#toggle_favourite_'+id).addClass('favourite');
			}
			else {
				$(this).removeClass('favourite');
				// As above
				parent.$('#toggle_favourite_'+id).removeClass('favourite');
			}
			// Update main "favourites" count
			if( data.fav_count < 1 ){
				parent.$('.favs_count').html('You have no favourites');
			} else {
				parent.$('.favs_count').html('<a href="/collections/favourites">View your favourites  - <span class="fav-num">' + data.fav_count + '</span> items</a>');
			}
			// Remove the design if we're on the favourites page...
			parent.$('body.favourites div#design_'+id).remove();
			// ... and update the list of favourites to add 'class="first"' where necessary
			parent.$('body.favourites div.collection-listing div').removeClass('first');
			parent.$('body.favourites div.collection-listing div:nth-child(3n+1)').addClass('first');
		}
		return false;
	});
});

// Sign in/register:

$(function() {
	// Sign in form
	$('#signin').submit(function() {
		var username 	= $(this).find('input[name=username]');
		var password 	= $(this).find('input[name=password]');
		var current_url = $(this).find('input[name=url]').val();
		$.post("/clients/check_login",
			{ username: username.val(), password: password.val() },
			function(data) {
				if (data.error) {
					$('p.error-msg').html(data.error);
					password.val('');
				}
				else if (data.success) {
					// Just redirect the user, as we've now set session
					// current_url should always be set, but in case it isn't:
					if (!current_url) current_url = '/collections';
					window.location = current_url;
				}
			},
			"json"
		);
		return false;
	});
	// Request form
	$('#create-account').submit(function() {
		var your_name 		= $(this).find('input[name=your_name]').val();
		var company_name 	= $(this).find('input[name=company_name]').val();
		var email_address 	= $(this).find('input[name=email_address]').val();
		var telephone 		= $(this).find('input[name=telephone]').val();
		var message 		= $(this).find('textarea[name=message]').val();
		var terms	 		= $(this).find('input[name=terms]').is(':checked');
		$.post("/clients/request_account",
			{ your_name:your_name, company_name:company_name, email_address:email_address, telephone:telephone, message:message, terms:terms },
			function(data) {
				$('input').removeClass('error');
				$('textarea').removeClass('error');
				if (data.error) {
					$('#'+data.field).addClass('error');
					$('#'+data.field).focus();
					$('p.error-msg').html(data.error);
				}
				else if (data.success) {
					window.location = '/contact-us/thanks';
				}
			},
			"json"
		);
		return false;
	});
	// Contact form
	$('#contact').submit(function() {
		var your_name 		= $(this).find('input[name=your_name]').val();
		var company_name 	= $(this).find('input[name=company_name]').val();
		var email_address 	= $(this).find('input[name=email_address]').val();
		var telephone 		= $(this).find('input[name=telephone]').val();
		var message 		= $(this).find('textarea[name=message]').val();
		$.post("/clients/contact",
			{ your_name:your_name, company_name:company_name, email_address:email_address, telephone:telephone, message:message },
			function(data) {
				$('input').removeClass('error');
				$('textarea').removeClass('error');
				if (data.error) {
					$('#'+data.field).addClass('error');
					$('#'+data.field).focus();
					$('p.error-msg').html(data.error);
				}
				else if (data.success) {
					// Bounce to the standard "Contact us: thanks" page
					window.location = '/contact-us/thanks';
				}
			},
			"json"
		);
		return false;
	});
});


