var Lightbox = function() {

	var inventory 	= [];
	var counter		= $('#branding .lightbox SPAN');
	

	var updateCount = function(size, fade) {
	
		if (size > 0) {
			size = '('+size+')'
		} else {
			size = '';
			fade = false;
		}
			
		counter.html(size);
		
		if (fade !== false) {
			counter.fadeTo('fast', '0.1').fadeTo('fast', '1').fadeTo('fast', '0.1').fadeTo('fast', '1').fadeTo('fast', '0.1').fadeTo('fast', '1');
		}
		
	};


	var getButtonData = function(button) {

		var title	= button.data('title');	
		var image	= button.data('image');	
		var id		= button.data('id');	
		var path	= button.data('path');	
		var type	= button.data('type');
			
		return {add:{title: title, image: image, id: id, path:path, type: type}};
	
	};
		
	var addToLightbox = function(button) {
	
		button.data('added', true);
		button.addClass('added');
		button.find('SPAN').html(button.data('removetxt'));
		
		$.ajax({
			url: '/SERVICE/lightboxAdd',
			type: 'post',
			dataType: 'html',
			data: getButtonData(button),
			success: function(data){
				updateCount(data);
			}
		});
		
	};

	var removeFromLightbox = function(button) {

		button.data('added', false);
		button.removeClass('added');
		button.find('SPAN').html(button.data('addtxt'));

		$.ajax({
			url: '/SERVICE/lightboxRemove',
			type: 'post',
			dataType: 'html',
			data: getButtonData(button),
			success: function(data){
				updateCount(data);
			}
		});
		
	};

	var buttonClick = function(e) {
		
		e.preventDefault();
		
		var button 	= $(this);

		if (button.data('added')) {
			return removeFromLightbox(button);
		} else {
			return addToLightbox(button);
		}

	};

	var initLightboxPage = function(){
		
		// Assign delete buttons
		$('#lightbox_list A.close').click(function(e) {
			
			e.preventDefault();
		
			var id 		= $(this).siblings("INPUT").val();
			var list	= $(this).closest('LI');
			
			$.post("/SERVICE/loghtboxRemove", {remove: id});

			// Remove entire page if no more pages
			if (list.siblings().size() < 1) {
				$('#lightbox_display').hide();
				$('#lightbox_empty').show();
			} else {
				list.remove();			
			}
		
		});
	
		// Sortable list
		$("#lightbox_list").sortable({
			axis: 'y',
			update : function () {
				$.post("/SERVICE/loghtboxSort", $('#listbox_form').serialize());
			}
		});
		
		// Download
		$('#downloadform').each(function() {
		
			var form	= $(this);
			var field 	= $('#downloadform_save', $(this));
			var loading = $('#downloadform_loading', $(this));
			var text 	= $('INPUT.text', $(this));
			
			$('A.button', $(this)).click(function() {
			
				if (text.val() == text.attr('default')) {
					text.val('');
				}
			
				loading.height(field.height()).show();
				field.hide();
				
				form.submit();
				
				setTimeout(function() {
					loading.height(field.height()).hide();
					field.show();
				}, 5000);
				

			});
		
		});
	
	};

	var initCounts = function(data){

		inventory = data;
		updateCount($(data).size(), false);
		
		// Update buttons on page
		for (var i=0, len=inventory.length; i<len; ++i ) {
			var id 	= inventory[i];
			var btn	= $('.lightbox_button[data-id="'+id+'"]');
			
			if (btn) {
				btn.data('added', true);
				btn.addClass('added');
				btn.find('SPAN').html(btn.data('removetxt'));
			}
		}
				
	};
	
	var init = function() {
		
		$.ajax({
			url: '/SERVICE/lightboxCount',
			type: 'post',
			dataType: 'json',
			success: initCounts
		});

		// Add button events
		$('.lightbox_button').click(buttonClick);
		
		// If we are on the lightbox page, init javascript events
		if ($('#content.lightbox')) initLightboxPage();
		
	
	};


	init();

};

$(document).ready(function() {
	new Lightbox();
});


