/**
 * Javscript values and functions for plan suggestions
 *
 */

/**
 * Selects an item from the plan suggestion input autoselect suggestions
 *
 */
function plan_suggestion_input_select()
{ 
	// Prompt for sign in first if necessary
	if(!session_user_id)
	{
		prompt_toggle(true,'sign_in',{ reason: 'suggest this plan to a friend', callback_script: "plan_suggestion_input_select()" }); 
		return false;
	}
	
	var params = 
	{
		plan_id: 		plan_page_info['plan_id'],
		type: 			$(this).attr('type'),
		id: 				$(this).attr('id')
	};
	
	prompt_toggle(true,'plan_suggestion',params);
}

/**
 * Submits a value for the plan suggestion input
 *
 * @param string value Value
 */
function plan_suggestion_input_submit(value)
{
	if(is_valid_email(value))
	{
		var type = 'email';
	}
	
  if(type)
  {
		// Prompt for sign in first if necessary
		if(!session_user_id)
		{
			prompt_toggle(true,'sign_in',{ reason: 'suggest this plan to a friend', callback: function() { plan_suggestion_input_submit(value); } }); 
			return false;
		}
		
    var params =
		{
			plan_id: 		plan_page_info['plan_id'],
			type: 			type,
			id: 				value
		};

		prompt_toggle(true,'plan_suggestion',params);
  }
	else
	{
		alert('Please provide a valid email address');
		return 2;
	}
}

var prompt_plan_suggestion_input_autosuggest;

/**
 * Selects an item from the plan suggestion prompt input autoselect suggestions
 *
 */
function prompt_plan_suggestion_input_select()
{
	var params = 
	{
		plan_id: 		plan_page_info['plan_id'],
		type: 			$(this).attr('type'),
		id: 				$(this).attr('id')
	};
	
	var onSuccess = function(data)
	{
		$('#prompt_plan_suggestion_recipients').append(data.html);
	}
	
	$.get(routes['prompt_plan_suggestion_load_recipient'], params, onSuccess);
	
	setTimeout("prompt_plan_suggestion_input_autosuggest.input.element.val(''); prompt_plan_suggestion_input_autosuggest.input.element.focus();", 10);
}

/**
 * Submits a value for the plan suggestion prompt input
 *
 * @param string value Value
 */
function prompt_plan_suggestion_input_submit(value)
{
	if(is_valid_email(value))
	{
		var type = 'email';
	}

  if(type)
  {
    var params = 
		{
			plan_id: 		plan_page_info['plan_id'],
			type: 			type,
			id: 				value
		};

		var onSuccess = function(data)
		{
			$('#prompt_plan_suggestion_recipients').append(data.html);

			setTimeout("prompt_plan_suggestion_input_autosuggest.input.element.focus()",200);
		}

		$.get(routes['prompt_plan_suggestion_load_recipient'], params, onSuccess);
		
		return 1;
  }
	else
	{
		alert('Please provide a valid email address');
		return 2;
	}
	
	return 1;
}

/**
 * Removes a selected recipient from the plan suggestion prompt
 *
 * @param Object recipient Recipient element
 */
function prompt_plan_suggestion_recipient_remove(recipient)
{
	$(recipient).remove();
}

var plan_suggestion_submit_pending = false;

/** 
 * Submits the plan suggestion prompt
 *
 * @param event event
 */
function prompt_plan_suggestion_submit(event)
{
	if(plan_suggestion_submit_pending) { return; }
	
	var recipient_lis 	= $('#prompt_plan_suggestion_recipients').children();
  var message 				= trim($('#prompt_plan_suggestion_message').val());
  
  // Require message
  if(!message)
  {
    alert('Please provide a message.');
    return false;
  }

  // Don't allow messages longer than 100 characters in length
  if(message.length > 100)
  {
    alert('Please provide a message that is 100 characters or fewer in length.');
    return false;
  }

	if(recipient_lis.length === 0)
	{
		alert('Please provide at least one recipient.');
		return false;
	}

	plan_suggestion_submit_pending = true;

	track_event('Plans', 'Submit plan suggestion prompt');

	// Collect recipients
	var recipients = [];

	for(var i = 0; i < recipient_lis.length; i++)
  {
		recipient_lis[i] = $(recipient_lis[i]);
		
    recipients[i] = recipient_lis[i].attr('id')+','+recipient_lis[i].attr('type');
  }

	// Compile parameters
  var parameters = 
	{
		plan_id: 					plan_page_info['plan_id'],
		message: 					message
	};
	
	parameters['recipients[]'] = recipients;

  var onSuccess = function(data) 
  { 
		window.location.reload();

		plan_suggestion_submit_pending = false;
  }

	$('#prompt_plan_suggestion_close').hide();
	$('#prompt_plan_suggestion_submit_button').css({ cursor: 'default' });
	$('#prompt_plan_suggestion_submit_button_exterior').css({
		opacity: 				0.7,
		paddingLeft: 		'40px',
		background: 		"url(/images/icons/wait/28.gif) no-repeat 0% 50%"
	});

  $.post(routes['prompt_plan_suggestion_submit'], parameters, onSuccess);
}

function prompt_plan_suggestion_recipient_onmouseover(event, element)
{
	$(element).find('.prompt_plan_suggestion_recipient_remove').show();
}

function prompt_plan_suggestion_recipient_onmouseout(event, element)
{
	$(element).find('.prompt_plan_suggestion_recipient_remove').hide();
}
