function shareFadeInFadeIn() {
	new Effect.Appear('sharefadein', { from: 0.0, to: 1.0, duration: 0.2 } );
}
function shareFadeInFadeOut() {
	new Effect.Fade('sharefadein', { from: 1.0, to: 0.0, duration: 0.5 } );
}


var g_sharefadein_current_tab_name = null;
var g_sharefadein_last_tab_name = null;
function sharefadein_last_tab_name() {
	return g_sharefadein_last_tab_name;
}
function sharefadein_set_last_tab_name( name ) {
	g_sharefadein_last_tab_name = name;
}
function sharefadein_current_tab_name() {
	return g_sharefadein_current_tab_name;
}
function sharefadein_set_current_tab_name( name ) {
	g_sharefadein_current_tab_name = name;
}

function sharefadein_tabbasename() {
	return 'sharefadein_tab_';
}
function sharefadein_tab_pane_name( tabname ) {
	return sharefadein_tabbasename() + 'pane_' + tabname;
}
function sharefadein_tab_link_name( tabname ) {
	return sharefadein_tabbasename() + 'link_' + tabname;
}
function sharefadein_all_tab_panes() {
	return ['email','im','message'].collect( function(s) {
				return sharefadein_tab_pane_name(s);
			}	);
}
function sharefadein_all_tab_links() {
	return ['email','im'].collect( function(s) {
				return sharefadein_tab_link_name(s);
			}	);
}

function sharefadein_select_tab( tabname ) {
	if( sharefadein_current_tab_name() == null ) {
		alert('Please call sharefadein_init in the page somewhere');
	}
	$(sharefadein_tab_pane_name(sharefadein_current_tab_name())).hide();
	try{
		$(sharefadein_tab_link_name(sharefadein_current_tab_name())).removeClassName('selected');
	} catch(e) {
		/* ignore non-existent entry */
	}
	try{
		$(sharefadein_tab_link_name(tabname)).classNames().add( 'selected' );
	} catch( e ) {
		/* ignore non-existent entry */
	}
	sharefadein_set_last_tab_name( sharefadein_current_tab_name() );
	sharefadein_set_current_tab_name( tabname );
	$(sharefadein_tab_pane_name(tabname)).show();
}

function sharefadein_message_container() {
	return 'sharefadein_tab_pan_message_message_container';
}
function sharefadein_select_last_tab() {
	if( sharefadein_last_tab_name() == null ) {
		return; /* if there is no last tab, ignore the request */
	}
	sharefadein_select_tab( sharefadein_last_tab_name() );
}

function sharefadein_init( current ) {
	sharefadein_set_current_tab_name( current );
}

function sharefadein_reset_email_submit() {
	$('sharefadein_email_submit').show();
	$('sharefadein_email_status_indicator').hide();
}
function sharefadein_reset_im_submit() {
	$('sharefadein_im_submit').show();
	$('sharefadein_im_status_indicator').hide();
}
function sharefadein_ajax_email_submission_successful() {
	sharefadein_reset_email_submit();
	sharefadein_clear_errors_on_form('sharefadein_email_form');
	sharefadein_clear_fields_on_form_email();
	sharefadein_set_message_paragraph( 'Thank you for sharing this article with a friend! They should get it via e-mail in just a few moments. If you\'re finished, click "Close Quick Read" at the top right of this box to read other articles.' );
	sharefadein_select_tab('message');
}
function sharefadein_ajax_im_submission_successful() {
	sharefadein_reset_im_submit();
	sharefadein_clear_errors_on_form('sharefadein_im_form');
	sharefadein_clear_fields_on_form_im();
	sharefadein_set_message_paragraph( 'Thank you for sharing this article with a friend! They should get it via the instant messaging service you selected in just a few moments. In the meantime: why not email it to another friend using the E-mail tab, send it to someone else via instant message on the IM tab, or, if you\'re finished, click "Close Quick Read" at the top right of this box to read other articles.' );
	sharefadein_select_tab('message');
}
function sharefadein_ajax_email_submission_invalid( errors ) {
	sharefadein_reset_email_submit();
	sharefadein_clear_errors_on_form('sharefadein_email_form');
	errors = $H(errors);
	if( errors.size() != 0 ) {
		ajax_error_formatting_set_errors( errors );
	} else {
		sharefadein_ajax_email_submission_failure();
	}
}
function sharefadein_ajax_im_submission_invalid( errors ) {
	sharefadein_reset_im_submit();
	sharefadein_clear_errors_on_form('sharefadein_im_form');
	errors = $H(errors);
	if( errors.size() != 0 ) {
		ajax_error_formatting_set_errors( errors );
	} else {
		sharefadein_ajax_im_submission_failure();
	}
}
function sharefadein_clear_errors_on_form( formname ) {
	/* remove the error field style (removes the redness) */
	$(formname).select('[class="ajax_error_field"]').each( function(e,i) {
		e.removeClassName( 'ajax_error_field' );
	} );
	$(formname).select('[class="ajax_error_messages"]').each( function(e,i) {
		e.hide();
		e.childElements().each( function( e, i ) {
			e.remove();
		} );
	} );
}
function sharefadein_clear_fields_on_form_email() {
	/* Don't clear everything, just the fields that aren't re-usable */
	$('sharefadein_email_recipients').value = "";
	$('sharefadein_email_personal_note').value = "";
}
function sharefadein_clear_fields_on_form_im() {
	/* Don't clear everything, just the fields that aren't re-usable */
	$('sharefadein_im_screenname').value = "";
	$('sharefadein_im_personal_note').value = "";
}
function sharefadein_submit_email_form() {
	$('sharefadein_email_status_indicator').show();
	$('sharefadein_email_submit').hide();
	try {
		new Ajax.Request( '/site_tools/share_using_email_process_ajax.aspx', 
				{
					method: 'post',
					parameters: { 'sharefadein_email_sender_name': $F('sharefadein_email_sender_name'),
						'sharefadein_email_sender_email': $F('sharefadein_email_sender_email'),
						'sharefadein_email_recipients': $F('sharefadein_email_recipients'),
						'sharefadein_email_personal_note': $F('sharefadein_email_personal_note'),
						'sharefadein_email_url': $F('sharefadein_email_url') },
					evalJS: false,
					onSuccess: function( transport ) {
						try {
							// DEBUGGING
							//alert( '"' + transport.responseText + '"' );
							// /DEBUGGING
							if( transport.responseText.length != 0 ) {
								eval(transport.responseText);
							} else {
								sharefadein_ajax_email_submission_failure();
							}
						} catch( e ) {
							sharefadein_ajax_email_submission_failure();
						}
					},
					onFailure: sharefadein_ajax_email_submission_failure
				}	);
	} catch( e ) {
		sharefadein_ajax_email_submission_failure();
	}
}
function sharefadein_submit_im_form() {
	$('sharefadein_im_submit').hide();
	$('sharefadein_im_status_indicator').show();
	try {
		new Ajax.Request( '/site_tools/share_using_im_process_ajax.aspx', 
				{
					method: 'post',
					parameters: { 'sharefadein_im_screenname': $F('sharefadein_im_screenname'),
						'sharefadein_im_service': $F('sharefadein_im_service'),
						'sharefadein_im_sender_email': $F('sharefadein_im_sender_email'),
						'sharefadein_im_personal_note': $F('sharefadein_im_personal_note'),
						'sharefadein_im_url': $F('sharefadein_im_url') },
					evalJS: false,
					onSuccess: function( transport ) {
						try {
							if( transport.responseText.length != 0 ) {
								eval(transport.responseText);
							} else {
								sharefadein_ajax_im_submission_failure();
							}
						} catch( e ) {
							sharefadein_ajax_im_submission_failure();
						}
					},
						onFailure: sharefadein_ajax_im_submission_failure
				}	);
	} catch( e ) {
		sharefadein_ajax_im_submission_failure();
	}
}
function sharefadein_ajax_email_submission_failure() {
	sharefadein_set_message_paragraph( 'There was a temporary error when sending this article to a friend. Please try again at a later time. Sorry for the inconvenience. Thank you.' );
	sharefadein_select_tab( 'message' );
	sharefadein_reset_email_submit();
}
function sharefadein_ajax_im_submission_failure() {
	sharefadein_set_message_paragraph( 'There was a temporary error when sending this article to a friend. Please try again at a later time. Sorry for the inconvenience. Thank you.' );
	sharefadein_select_tab( 'message' );
	sharefadein_reset_im_submit();
}
function sharefadein_set_message( msg ) {
	$(sharefadein_message_container()).innerHTML = msg;
}
function sharefadein_set_message_paragraph( msg ) {
	sharefadein_set_message( '<p>' + msg + '</p>' );
}
