	function setPreview(idx) {
		if ($defined(sorted) && sorted.attached)
			return false;
		var count = parseInt($('count').get('text'));
		if (idx == 0)
			idx = count;
		if (idx > count)
			idx = 1;
		var preview = $$('div.thumbs a.thumb')[idx-1];
		$$('div.thumbs a.thumb').removeClass('current');
		preview.addClass('current');
		$$('div.photos div.preview img')[0].src = '';
		$$('div.photos div.preview img')[0].src = preview.getElement('input').get('value');
		$('index').set('text', idx);
		return false;
	} 	

	function setPreviewFromClick(a) {
		a = $(a);
		setPreview($$('div.thumbs a.thumb').indexOf(a)+1); 
	}

	function toggleUpload() {
		if ($('uploadImage').getStyle('display') == 'none') {
			$('uploadImage').setStyle('display','block');
			$('upload').set('text','Cancel Quick-Add an Image');
		} else {
			$('uploadImage').setStyle('display','none');
			$('upload').set('text','Quick-Add an Image');
		}
	}

	function previewImage(form, studioId) {
		form = $(form);
		var eventId = form.getElement('input[name=eventId]').get('value');
		var scan = form.getElement('input[name=scan]').get('value');		
		if (eventId == '') {
			alert('Event ID required.');
			return;
		}
		if (scan == '') {
			alert('Image # required.');
			return;
		}
		if (eventId != parseInt(eventId)|| scan != parseInt(scan)){
			alert('Event ID and Image # must be a number.')
			return;
		}	
		initSort(studioId);
		sorted.sortRequest.POST({'command':'getImage','studio':studioId, 'order':eventId+'_'+scan});
		if ($defined(sorted.response.photo)) {
			var href = sorted.response.photo.photosLocation + sorted.response.photo.fileName + '|prop=below&wdth=640&hite=480&cb=2|flush';
			// show preview
			$('previewImage').store('href', href); 
			$('previewImage').fireEvent('click', {target:$('previewImage'), preventDefault:function(){}});		
		}
	}	
	
	// if you do not refresh after adding an image, you will need to upload the swiffy allowed count.
	function uploadImage(form, studioId) {
		form = $(form);
		if ($$('div.thumb').length > 16) {
			alert('You have added the maximum number of images.');
			return false;
		}
		
		var count = 0;
		try {	// swiffy is undefined for quick edit mode.
			count = swiffy.countFiles();
		} catch(err) {}
		
		if (($$('div.thumb').length + count) >= 16) {
			alert('You may only add a maximum number of 16 images.');
			return false;
		}
		
		var eventId = form.getElement('input[name=eventId]').get('value');
		var scan = form.getElement('input[name=scan]').get('value');		
		if (eventId == '') {
			alert('Event ID required.');
			return false;
		}
		if (scan == '') {
			alert('Image # required.');
			return false;
		}
		if (eventId != parseInt(eventId)|| scan != parseInt(scan)){
			alert('Event ID and Image # must be a number.')
			return false;
		}
		initSort(studioId);
		sorted.sortRequest.POST({'command':'addImage','studio':studioId, 'order':eventId+'_'+scan});
	}
	
	function initSort(studioId) {
		if (!$defined(sorted)) {
			sorted = new Sortables('div.thumbs', {'clone':true});
			sorted.detach();
			sorted.attached = false;
			sorted.sortRequest = new Request.JSON({url:'listing.do', async:false,
			onComplete: function(resp) {
				sorted.response = resp;
				if (!$defined(resp))
					alert('Error saving to server!');
				if (!resp.success && resp.message)
					alert(resp.message);
				if (resp.refresh == 'true')
					window.location.reload(true);
			}});
			sorted.addEvent('start', function() {
					$$('div.applySortBar').setStyle('display','block');
				});
			sorted.addEvent('complete', function() {
				$$('div.thumb').removeClass('cover');
				$$('div.thumb')[0].addClass('cover');
			});			
			$$('a.btnApplySort').addEvent('click', function() {
				sort(true, studioId);
			});
		}		
	}

	var sorted;
	function sort(save, studioId) {
		initSort(studioId);
		if (!sorted.attached) {
			if ($defined($('sort')))
				$('sort').set('text', 'Cancel Sort');
			sorted.attach();
			sorted.attached = true;
		} else {
			if ($defined($('sort')))
				$('sort').set('text', 'Sort Images');
			$$('div.applySortBar').setStyle('display','none');
			$$('div.thumb').removeClass('cover');
			$$('div.thumb')[0].addClass('cover');
			if (save) {
				sorted.sortRequest.POST({'command':'saveSort','studio':studioId, 'order':sorted.serialize(1).join(',')});
				alert('Sort saved.');
			} else { // if not saving, detach.
				sorted.detach();
				sorted.attached = false;		
			}
		}
	}

	function makeCoverImage(selectedImage, studioId) {
		$$('div.thumb').removeClass('cover');
		selectedImage.inject(selectedImage.getParent(), 'top');
		selectedImage.addClass('cover');
		initSort(studioId);
		if ($$('div.applySortBar')[0].getStyle('display') == 'none')
			sorted.sortRequest.POST({'command':'saveSort','studio':studioId, 'order':sorted.serialize(1).join(',')});
	}
	
	function deleteImage(selectedImage, studioId) {
		if (confirm('Are you sure you want to remove this image?')) {
			initSort(studioId);
			sorted.sortRequest.POST({'command':'removeImage','studio':studioId, 'order':selectedImage.id});	
			selectedImage.dispose();	
			return true;
		}
		return false;
	}
