function showUploader() {
	$('status').hide();
	
	if ( ! $('uploader').visible() ) {
		Recaptcha.reload();
		new Effect.Scale('instructions',250,{duration: 0.5, scaleY: false, scaleContent: false, queue: 'front', scaleMode: {originalWidth: 260}});
		new Effect.Appear('uploader',{queue: 'end', duration: 0.5, afterFinish: function() {
			$('friend_upload_form').focusFirstElement();
		}});
	} else {
		new Effect.Highlight('uploader', {startcolor: '#E7E491', endcolor: '#FFFFFF', queue: 'end', duration: 0.5})
	}
}

function hideUploader(after_complete_function) {
	$('friend_upload_form').reset();
	if ( $('uploader').visible() ) {
		new Effect.Fade('uploader',{queue: 'front', duration: 0.25});
	}
	if ($('status').visible()) {
		new Effect.Fade('status',{queue: 'front', duration: 0.25});		
	}
	new Effect.Scale('instructions',40,{duration: 1, scaleY: false, scaleContent: false, queue: 'end', scaleMode: {originalWidth: 650}, afterFinish: after_complete_function});
}

function verifyAndSendFriend() {
	//no more client-side error check
	$('friend_upload_form').submit();
	//$('upload_frame').show();
	
	// errors = new Array;
	// $('friend_upload_form').getInputs().each(function(form_field) {
	// 	if ( $F(form_field).empty() ) errors.push(form_field.name.toUpperCase()+' is blank');
	// });
	// 
	// if (errors.length > 0) alert('All fields are required. You missed a couple. Try again.\n\n'+errors.join('\n'));
	// else {
	// 	$('friend_upload_form').submit();
	// }
}

function parseUploadResponse(json_response_string) {
	hash = $H(json_response_string.evalJSON(true));
	
	//reset errors
	$$('.form_error').each(function(element) { element.update(' '); });
	
	//see if new errors
	if (hash.get('form_errors')) {
		//reset recaptcha - only can be used once
		Recaptcha.reload();
		$('recaptcha_response_field').value = '';
		
		//populate errors
		$H(hash.get('form_errors')).each(function(e) {
			var error_message = ($(e.key+'_error') ? 
				$(e.key+'_error').update(e.value) : 
				$(e.key).up().insert('<span id="'+e.key+'_error" class="form_error">'+e.value+'</span>',{position: 'Top' })
			);
			new Effect.Highlight(error_message, {startcolor: '#E7E491', endcolor: '#FFFFFF', duration: 1});
		});
	} else {
		new Effect.Fade('uploader',{queue: 'front', duration: 0.25});
		if (hash.get('message_good')) {
			$('status').update(hash.get('message_good')+'<br /><br /><br /><div align="center"><a style="border: 0;" href="javascript:showNewFriend(hash.get(\'friend_details\'));"><img src="images/btn-back-to-home.gif" style="border: none;"/></a><br /><br />or<br /><br /><a style="border: 0;" href="http://apps.facebook.com/friends_of_sasquatch/creations.php?claim='+hash.get('friend_details').id+'&addtoprofile=true"><img src="images/btn-add-to-facebook.gif" style="border: none;"/></a></div>');
			$('status').className = 'good';
		} else if (hash.get('message_bad')) {
			$('status').update(hash.get('message_bad'));
			$('status').className = 'bad';
		}
		new Effect.Appear('status',{queue: 'end', duration: 0.25});
	}
}

function showNewFriend(friend) {
	var friend = new Element('img',{id: friend.id, 'class': 'friend', style: 'display: none;', src: 'media/sent_friends/'+friend.friend_file+'.gif'});
	Element.insert($('friends'), { Top: friend } );
	hideUploader(function() {
		new Effect.Grow(friend, {queue: 'end', scaleMode: 'contents', duration: 0.5, afterFinish: function() {
			var friend_position = Element.cumulativeOffset(friend);
			var btn_id = 'add-btn-'+friend.id;
			Element.insert( $(friend.id), { After: '<a href="http://apps.facebook.com/friends_of_sasquatch/creations.php?claim='+friend.id+'&addtoprofile=true" class="add_to_fb_btn" id="'+btn_id+'" style="display: none; top: '+(friend_position.top+60)+'; left: -10px;"> </a>'});
			new Effect.Appear(btn_id);
		}});	
	});
}