var fromEmailField;
var errors    = new Array();

var ANIMATE_SPEED = 200;

$(function() {
	
	menuShare = $('#menu-share');
	menuSave  = $('#menu-save');
	menuRate  = $('#menu-rate');
	
	menuShareShow = false;
	menuSaveShow  = false;
	menuRateShow  = false;
	
	$('.context-link').click(function() {
		//alert(this.id);
		
		if (this.id == 'link-share')
		{
			//alert('share');
			clickShareMenu();
		}
		else if (this.id == 'link-save')
		{
			//alert('save');
			clickSaveMenu();
		}
		else if (this.id == 'link-rate')
		{
			clickRateMenu();
			//alert('rate');
		}
		
		
		return false;
	});
	
	$('.context-menu .close-button').click(function() {
		//alert(this.id);
		
		var contextMenuId = $(this).parents('.context-menu').get(0).id;
		
		if (contextMenuId == 'menu-share')
		{
			hideShareMenu();
		}
		else if (contextMenuId == 'menu-save')
		{
			hideSaveMenu();
		}
		else if (contextMenuId == 'menu-rate')
		{
			hideRateMenu();
		}
		
		return false;
	});
	
	$('div.share-item').click(function()
	{
		if (this.id == 'share-facebook')     shareFacebook();
		else if (this.id == 'share-myspace') shareMySpace();
		else if (this.id == 'share-digg')    shareDigg();
		else if (this.id == 'share-live')    shareLive();
		else if (this.id == 'share-twitter') shareTwitter();
	});
	
	
	fieldEmailContentFromEmail = $('#email-content-from-email');
	fieldEmailContentToEmails  = $('#email-content-to-emails');
	fieldEmailContentMessage   = $('#email-content-message');
	fieldEmailContentCCSender  = $('#email-content-cc-sender');
	
	labelEmailContentFromEmail = $('#label-email-content-from-email');
	labelEmailContentToEmails  = $('#label-email-content-to-emails');
	labelEmailContentMessage   = $('#label-email-content-message');
	
	dialogMessageEmailContent  = $('#email-content-dialog-message');
	
	dialogMessageEmailButtons = {
			'Send Email': function() {
				sendEmail();
			},
			Cancel: function() {
				$(this).dialog('close');
			}
		};
	
	dialogMessageEmailCloseButton = {
		'Close': function() {
			$(this).dialog('close');
		}
	};
	
	$('#link-email').click(function() {
		displaySendEmailForm();
		return false;
	});
	
	$('#dialog-email-content').dialog({
		bgiframe: true,
		autoOpen: false,
		width: 380,
		height: 475,
		modal: true,
		close: function() {
		},
		open: function() {
			$('#dialog-email-content').dialog('option', 'buttons', dialogMessageEmailButtons);
			dialogMessageEmailContent.removeClass('error');
			dialogMessageEmailContent.removeClass('success');
			dialogMessageEmailContent.html('');
			$('#email-content-form').show();
		}
	});
	
	/*
	$('#link-bookmark-content').click(function() {
		bookmarkContent();
		
		return false;
	});
	*/
});

/* Code pulled from facebook.com/share_partners.php */
function shareFacebook()
{
	var page_url = encodeURIComponent(location.href);
	var title    = encodeURIComponent(document.title);
	window.open('http://www.facebook.com/sharer.php?u='+page_url+'&t='+title,'sharer','toolbar=0,status=0,width=626,height=436');
}

function shareMySpace()
{
	var page_url        = encodeURIComponent(location.href);
	var new_window_link = 'http://www.myspace.com/Modules/PostTo/Pages/?u=' + page_url;
	window.open(new_window_link, 'share_myspace');
}

function shareDigg()
{
	var page_url        = encodeURIComponent(location.href);
	var new_window_link = 'http://digg.com/submit?url=' + page_url + '&topic=food_drink';
	window.open(new_window_link, 'share_myspace');
}

function shareLive()
{
	var page_url        = encodeURIComponent(location.href);
	var new_window_link = 'https://skydrive.live.com/sharefavorite.aspx/.SharedFavorites?url=' + page_url;
	window.open(new_window_link, 'share_twitter');
}

function shareTwitter()
{
	var page_url        = encodeURIComponent(location.href);
	var new_window_link = 'http://twitter.com/home?status=Check out ' + page_url;
	window.open(new_window_link, 'share_twitter');
}

function clickShareMenu()
{
	hideSaveMenu();
	hideRateMenu();
	
	if (menuShareShow)
	{
		hideShareMenu();
		return;
	}
	
	menuShareShow = true;
	menuShare.css('z-index', 905);
	menuShare.slideToggle(ANIMATE_SPEED);
}

function clickSaveMenu()
{
	hideShareMenu();
	hideRateMenu();
	
	if (menuSaveShow)
	{
		hideSaveMenu();
		return;
	}
	
	menuSaveShow = true;
	$('#menu-save .message').html('saving...');
	$.post(getURL(), 
		{
			ajax:   1,
			action: 'save'
		},
		function(data)
		{
			var menuSave = $('#menu-save .message').html(data.html);
		},
		"json"
	);
	
	menuSave.css('z-index', 905);
	menuSave.slideDown(ANIMATE_SPEED);
}

function clickRateMenu()
{
	hideSaveMenu();
	hideShareMenu();
	
	if (menuRateShow)
	{
		hideRateMenu();
		return;
	}
	
	menuRateShow = true;
	$('#menu-rate .message').html('loading...');
	$.post(getURL(), 
		{
			ajax:   1,
			action: 'rate'
		},
		function(data)
		{
			if (data.has_error)
			{
				//alert(data.error_msg);
				$('#menu-rate .message').html(data.error_msg);
			}
			else
			{
				$('#menu-rate .message').html(data.html);
				createInputStars('contextrating');
			}
		},
		"json"
	);
	
	menuRate.css('z-index', 905);
	menuRate.slideDown(ANIMATE_SPEED);

	
}

function hideShareMenu()
{
	menuShareShow = false;
	menuShare.css('z-index', 901);
	menuShare.slideUp(ANIMATE_SPEED);
}
function hideSaveMenu()
{
	menuSaveShow = false;
	menuSave.css('z-index', 901);
	menuSave.slideUp(ANIMATE_SPEED);
}
function hideRateMenu()
{
	menuRateShow = false;
	menuRate.css('z-index', 901);
	menuRate.slideUp(ANIMATE_SPEED);
}


function displaySendEmailForm()
{
	//alert('send email form');
	$('#dialog-email-content').dialog('open');
	
}


function formatErrorMessage(errors)
{
	var msg = 'Please fix the following errors: <ul>';
	for (i in errors)
	{
		msg += '<li>' + errors[i] + '</li>';
	}
	return msg + '</ul>';
}


function sendEmail()
{
	var validates = true;
	errors    = new Array();
	
	validates = validateFromEmail()    && validates;
	validates = validateToEmails()     && validates;
	validates = validateEmailMessage() && validates;
	
	var cc_sender = 0;
	
	if (fieldEmailContentCCSender.attr('checked'))
	{
		cc_sender = 1;
	}
	
	if (validates)
	{
		
		dialogMessageEmailContent.removeClass('error');
		dialogMessageEmailContent.addClass('success');
		
		dialogMessageEmailContent.html( 'sending email...' );
		
		$.post(getURL(), 
		{
			submit: 1,
			ajax:   1,
			action: 'email',
			from_email: fieldEmailContentFromEmail.val(),
			to_emails:  fieldEmailContentToEmails.val(),
			message:    fieldEmailContentMessage.val(),
			cc_sender:  cc_sender
		},
		function(data)
		{
			if (data.indexOf('Error: ') == 0)
			{
				alert(data);
			}
			else
			{
				$('#email-content-form').hide();
				fieldEmailContentToEmails.val('');
				$('#dialog-email-content').dialog('option', 'buttons', dialogMessageEmailCloseButton);
				dialogMessageEmailContent.html(data);
			}
		});
	}
	else
	{
		dialogMessageEmailContent.addClass('error');
		dialogMessageEmailContent.removeClass('success');
		dialogMessageEmailContent.html( formatErrorMessage(errors) );
	}
}

function validateFromEmail()
{
	var fromEmail = fieldEmailContentFromEmail.val();
	
	if (validEmail(fromEmail))
	{
		labelEmailContentFromEmail.removeClass('error');
		return true;
	}
	else
	{
		labelEmailContentFromEmail.addClass('error');
		errors.push("The Your Email field must have a valid email");
		return false;
	}
}

function validateToEmails()
{
	var toEmails = fieldEmailContentToEmails.val();
	
	toEmails = cleanEmailsList(toEmails);
	fieldEmailContentToEmails.val(toEmails);
	
	if (validEmails(toEmails))
	{
		labelEmailContentToEmails.removeClass('error');
		return true;
	}
	else
	{
		labelEmailContentToEmails.addClass('error');
		
		if (toEmails.length == 0)
		{
			errors.push("The Send To field is required");
		}
		else
		{
			errors.push("There is an invalid email in the Send To field");
		}
		return false;
	}
}

function validateEmailMessage()
{
	var message = fieldEmailContentMessage.val();
	if (message.length > 2000)
	{
		errors.push("The Message field must not be more than 2000 characters");
		labelEmailContentMessage.addClass('error');
		return false;
	}
	else
	{
		labelEmailContentMessage.removeClass('error');
		return true;
	}
}



