function load_nothumbs() {
	$('#largethumbimage').hide();
	$('.thumb').each (
		function() {
			$(this).unbind('click.thumbclick');
			$(this).children().unbind('click.removeasset');
			$(this).children().unbind('click.addasset');
			$(this).css('background-image', 'url(/gallery/images/no_photo_available.gif)');
			$(this).children().hide();
		}
	);
}

function set_num_pages(num) {
	$.get('/gallery/page.php', { action: 'setnumpages', num: num },
		function(data) {}
	);
}

function reset_page_num() {
	$.get('/gallery/page.php', { action: 'reset' },
		function(data) {
			$('#pagetext').text('Page '+data);
			$('#pagenum').val(data);
		}
	);
}

function change_page(type) {
	$.get('/gallery/page.php', { action: type },
		function(data) {
			$('#pagetext').text('Page '+data);
			$('#pagenum').val(data);
			var curr_mode = $('#mode').val();
			if (curr_mode == 'basket') {
				load_basket();
			} else {
				load_album();
			}
		}
	);
}

function get_mode() {
	$.get('/gallery/page.php', { action: 'getmode' },
		function(data) {
			$('#mode').val(data);
		}
	);
}

function set_mode(mode, album) {
	$.get('/gallery/page.php', { action: 'setmode', mode: mode },
		function(data) {
			$('#mode').val(mode);
		}
	);
	if (mode == 'album') {
		$.get('/gallery/page.php', { action: 'setalbum', album: album },
			function(data) {
				$('#album').val(album);
			}
		);
	}
}

function redirect() {
	$.get('/gallery/page.php', { action: 'getmode' },
		function(data) {
			var response = data.split('|');
			var currentmode = response[0];
			var albumid = parseInt(response[1]);
			if (currentmode == 'basket') {
				load_basket();
			} else if (currentmode == 'album' && albumid > 0) {
				$('#album').val(albumid)
				load_album(albumid);
			}
		}
	);
}

function update_totals() {
	$.get('/gallery/basket.php', { action: 'init' },
		function(data) {
			var response = data.split('|');
			var items = response[0];
			var total = response[1];
			$('#items_val').text(items);
			$('#total_val').text(total);
			$('#checkout_total').text(total);
			if (items > 0) {
				$('#checkoutbtn').show();
			}
		}
	);
}

function init_modals() {
	$('#checkoutDialog').jqm({
		modal: true,
    onHide: function(h) { 
      h.o.remove();
      h.w.fadeOut(888);
    }
	});
	$('#orderCompleteDialog').jqm({
		modal: true,
    onHide: function(h) { 
      h.o.remove();
      h.w.fadeOut(888);
    }
	});
}

function init_page() {
	$.get('/gallery/page.php', { action: 'display' },
		function(data) {
			// PAGE VARS
			$('#pagetext').text('Page '+data);
			$('#pagenum').val(data);
			// PREV BUTTON
			$('#pageprev').unbind('click.prevpage')
			$('#pageprev').bind('click.prevpage',
				function(event) {
					change_page('prev');
				}
			);
			// NEXT BUTTON
			$('#pagenext').unbind('click.nextpage')
			$('#pagenext').bind('click.nextpage',
				function(event) {
					change_page('next');
				}
			);
		}
	);
	
	// BASKET BUTTONS
	$('#basketbtn').click(
		function(event) {
			event.preventDefault();
			load_basket();
		}
	);
	$('#emptybasketbtn').click(
		function(event) {
			event.preventDefault();
			empty_basket();	
		}			
	);

	// INIT BASKET VARS
	update_totals();
	init_modals();
}

function populate_grid(data) {
	if (data != '') {
		var assets_exploaded = data.split('|');
		var asset_count = assets_exploaded.length;
		var page_size = 12;
		if (asset_count > page_size)
			var num_pages = parseInt(asset_count / page_size) + 1;
		else
			var num_pages = 1;
		set_num_pages(num_pages);
		var remainder = asset_count % page_size;
		var page_num = parseInt($('#pagenum').val());
		if (page_num > num_pages) {
			reset_page_num();
		}
		var image_num = 0;
		var pos = 0;
		if (page_num > 1 && page_num <= num_pages) {
			var start_num = (page_num - 1) * page_size;
			if (page_num == num_pages) {
				page_size = remainder;
			}
		} else {
			var start_num = 0;
			if (asset_count < page_size)
				page_size = asset_count;
		}
		for (i = 0; i < page_size; i++) {
			image_num = i + 1;
			pos = i + start_num;
			if (image_num < 10)
				image_num_string = '0'+image_num;
			else
				image_num_string = image_num;
			
			$('#thumb'+image_num_string).unbind('click.thumbclick')
			$('#thumb'+image_num_string).bind('click.thumbclick', 
				function(event) {
					event.preventDefault();
					var thumbid = $(this).attr('alt');
					load_large_thumb(thumbid);
				}
			);
			asset_num = assets_exploaded[pos];
			load_thumb(image_num_string, asset_num);
		}
		update_totals();
	}
}

function load_basket() {
	load_nothumbs();
	$.get('/gallery/basket.php', { action: 'display' },
		function(data) {
			populate_grid(data);
			set_mode('basket', 0);
			update_totals();
		}
	);
}

function empty_basket() {
	load_nothumbs();
	$.get('/gallery/basket.php', { action: 'empty' },
		function(data) {
			populate_grid(data);
			set_mode('basket', 0);
			update_totals();
		}
	);
}

function remove_asset(thumb, assetid) {
	var basketdiv = $('#thumb'+thumb).children().attr('id');
	$('#'+basketdiv).unbind('click.removeasset');
	$('#'+basketdiv).bind('click.removeasset',
		function(event) {
			event.preventDefault();
			remove_basket(thumb, assetid);
			update_totals();
		}
	);
	$('#'+basketdiv).children().attr('src', '/gallery/images/red_cross.png');	
}

function add_asset(thumb, assetid) {
	var basketdiv = $('#thumb'+thumb).children().attr('id');
	$('#'+basketdiv).unbind('click.addasset');
	$('#'+basketdiv).bind('click.addasset',
		function(event) {
			event.preventDefault();
			add_basket(thumb, assetid);
			update_totals();
		}
	);
	$('#'+basketdiv).children().attr('src', '/gallery/images/green_tick.png');	
}

function add_basket(thumb, assetid) {
	$.get('/gallery/basket.php', { action: 'add', assetid: assetid },
		function(data) {
			var response = data.split('|');
			var items = response[0];
			var total = response[1];
			$('#items_val').text(items);
			$('#total_val').text(total);
			remove_asset(thumb, assetid);
			var curr_mode = $('#mode').val();
			if (curr_mode == 'basket') {
				load_basket();
			}
		}
	);
}

function remove_basket(thumb, assetid) {
	$.get('/gallery/basket.php', { action: 'remove', assetid: assetid },
		function(data) {
			var response = data.split('|');
			var items = response[0];
			var total = response[1];
			$('#items_val').text(items);
			$('#total_val').text(total);
			add_asset(thumb, assetid);
			var curr_mode = $('#mode').val();
			if (curr_mode == 'basket') {
				load_basket();
			}
		}
	);
}

function load_thumb(thumb, assetid) {
	var asset_filename = '/gallery/thumb.php?id='+assetid;
	$('#thumb'+thumb).attr('alt', assetid);
	$('#thumb'+thumb).css('background-image', 'url('+asset_filename+')');
	$('#thumb'+thumb).css('background-repeat', 'no-repeat');
	var basketdiv = $('#thumb'+thumb).children().attr('id');
	$('#thumb'+thumb).children().show();
	$.get('/gallery/basket.php', { action: 'check', assetid: assetid },
		function(data) {
			if (data == 'OK') {
				remove_asset(thumb, assetid);
			} else {
				add_asset(thumb, assetid);
			}
    }
  );
}

function update_hits(assetid) {
	$.get('/gallery/gallery.php', { action: 'hit', assetid: assetid },
		function(data) {
			$('#hits').text(data+' views');
		}
	);
}

function load_large_thumb(assetid) {
	var filename = '/gallery/thumb_large.php?id='+assetid;
	$('#largethumbimage').show();
	$('#largethumbimage').attr('src', filename);
	update_hits(assetid);
}

function load_album() {
	load_nothumbs();
	var albumid = $('#album').val();
	$.get('/gallery/album_assets.php', { albumid: albumid },
		function(data) {
			populate_grid(data);
			set_mode('album', albumid);
			update_totals();
		}
	);
}

function place_order() {
	$.get('/gallery/order.php', { action: 'place_order' },
		function(data) {
			var response = data.split('|');
			$('#paypal_orderid').val(response[0]);
			$('#paypal_total').val(response[1]);
			setTimeout($('#paypal_form').submit(), 5000);
		}
	);
}
