var article_toolbar = {
	init: function() {
		// nexus page needs special handling since page url does not match what we want to share
		if (document.location.href.match(/nexus/gi)) {		
			var fbIframe = $('.article_toolbar_fblike iframe');
			var twitterIframe = $('.article_toolbar_tweet iframe');
			var plusOneIframe = $('.article_toolbar_plusone div')
			
			var fbLikeSrc = fbIframe.attr('src');
			var twitterSrc = twitterIframe.attr('src');
			var plusOneSrc = plusOneIframe.attr('data-href');
			
			fbLikeSrc = fbLikeSrc.replace('/raap/nexus',email_this_url);
			twitterSrc = twitterSrc.replace('/raap/nexus',email_this_url);
			plusOneSrc = plusOneSrc.replace('/raap/nexus',email_this_url);
			
			$(function(){
				//re-write share items
				fbIframe.attr('src',fbLikeSrc);
				twitterIframe.attr('src',twitterSrc);
				
				var params = {
					href: plusOneSrc,
					size: 'medium',
					width: '120px'
				};
				gapi.plusone.render($('.article_toolbar_plusone div')[0],params);
			});
		}
		
		
		var self = this;
		
		//create IE-specific dropshadow box for IE 7/8
		$('.no-boxshadow .article_toolbar .email_dropdown').append('<div class="inner_shadow"></div>');
		$('.no-boxshadow .article_toolbar .article_toolbar_email').append('<div class="inner_shadow"></div>');
		
		$('.article_toolbar_email').click(function(){
			var $email_dropdown = $(this).parent().children('.email_dropdown');
			if ($email_dropdown.is(':visible')) {
				self.hideEmail($email_dropdown);
			}
			else {
				self.expand_email($email_dropdown);
			}
			return false;
		});
	},
	expand_email: function($email_dropdown){
		var self = article_toolbar;
		
		$('.email_dropdown_send').click(function(){return self.send($email_dropdown);});
		$('.email_dropdown_cancel').click(function(){return self.hideEmail($email_dropdown);});
		
		$email_dropdown.find('.success_message').hide();
		$email_dropdown.find('fieldset').show();
		
		self.enableFields($email_dropdown);
		

		if (!$email_dropdown[0].email_this) {
			var address = "/email-this" + $email_dropdown.find('input[name=path]').val();
			$.ajax({
				url: address,
				success: function(data){
					$email_dropdown[0].email_this = eval('(' + data + ')');
					self.populate_fields($email_dropdown);
				}
			});
		} else {
			self.populate_fields($email_dropdown);
		}
		$email_dropdown.siblings('.article_toolbar_email').addClass('on');
		$email_dropdown.show();
		
		return false;
	},
	populate_fields: function($email_dropdown) {
		$email_dropdown.find('span[name=captcha_expression]').html($email_dropdown[0].email_this.captcha_exp);
		$email_dropdown.find('input[name=captcha_answer]').val('');
		$email_dropdown.find('input[name=name]').val($email_dropdown[0].email_this.name || mag_user.first_name);
		$email_dropdown.find('input[name=email]').val($email_dropdown[0].email_this.email || mag_user.email);
		$email_dropdown.find('input[name=friend_email]').val($email_dropdown[0].email_this.friend_email);
		$email_dropdown.find('textarea[name=message]').val($email_dropdown[0].email_this.message);
		
		if ($email_dropdown[0].email_this.errorstring == "There was a problem with the email address used.  Please enter a valid email address.\n"){
			$email_dropdown[0].email_this.errorstring = "There is an error in one or more of the e-mail addresses you have provided";
		}
		if ($email_dropdown[0].email_this.errorstring == "Problem with CAPTCHA: Invalid answer for key"){
			$email_dropdown[0].email_this.errorstring = "Please make sure your answer is entered correctly";
		}
		if ($email_dropdown[0].email_this.errorstring == "Problem with CAPTCHA: "){
			$email_dropdown[0].email_this.errorstring = "Please make sure your answer is entered correctly";
		}
		if ($email_dropdown[0].email_this.errorstring == "There was a problem with in sending your email.  Please try again.\n"){
			$email_dropdown[0].email_this.errorstring = "There is something wrong with one or more of your friends' email addresses that you typed in.";
		}
	},
	send: function($email_dropdown) {
		if ($email_dropdown.find('input[name=name]').attr('disabled')) {
			return false;
		}
		var self = article_toolbar;
		var 	$error_message = $email_dropdown.find('.error_message'),
				name = $email_dropdown.find('input[name=name]').val(),
				email = $email_dropdown.find('input[name=email]').val(),
				captcha_answer = $email_dropdown.find('input[name=captcha_answer]').val(),
				friend_email = $email_dropdown.find('input[name=friend_email]').val(),
				message = $email_dropdown.find('textarea[name=message]').val();
		
		if (name.replace(/^\s+|\s+$/g, '') === ''){
			$error_message.html("Please fill in your name").show();
			return false;
		}
		if (email.replace(/^\s+|\s+$/g, '') === ''){
			$error_message.html('Please fill in your e-mail address').show();
			return false;
		}
		if (!self.isValidEmail(email)){
			$error_message.html('Your e-mail address as entered does not appear to be a correct e-mail address').show();
			return false;
		}
		if (captcha_answer.replace(/^\s+|\s+$/g, '') === ''){
			$error_message.html("Please fill in an answer").show();
			return false;
		}
		if (friend_email.replace(/^\s+|\s+$/g, '') === ''){
			$error_message.html("There is something wrong with one or more of your friends' email addresses that you typed in.").show();
			return false;
		}
		self.disableFields($email_dropdown);
		$error_message.hide();
		
		$email_dropdown[0].email_this.name = name;
		$email_dropdown[0].email_this.email = email;
		$email_dropdown[0].email_this.friend_email = friend_email;
		$email_dropdown[0].email_this.message = message;
		$email_dropdown[0].email_this.captcha_answer = captcha_answer;
		
		$.ajax({
			url: "/email-this/email-this",
			data: {
				"article_id" : $email_dropdown[0].email_this.article_id,
				"captcha_answer" : $email_dropdown[0].email_this.captcha_answer,
				"captcha_key" : $email_dropdown[0].email_this.captcha_key,
				"name" : $email_dropdown[0].email_this.name,
				"email" : $email_dropdown[0].email_this.email,
				"friend_email" : $email_dropdown[0].email_this.friend_email,
				"friend_name" : $email_dropdown[0].email_this.friend_name,
				"message" : $email_dropdown[0].email_this.message
			},
			success: function(data){
				data = eval('(' + data + ')')
				if (data.save_success) {
					$email_dropdown[0].reset();
					delete $email_dropdown[0].email_this;
					$email_dropdown.find('fieldset').hide();
					$email_dropdown.find('.success_message').show();
				} else {
					if (data.errorstring.match(/Problem with CAPTCHA: No answer found for key/gi)) {
						$error_message.html("Answer has expired or been submitted previously.  Please try again.").show();
					}
					if (data.errorstring.match(/There was a problem with the email address used.  Please enter a valid email address./gi)) {
						$error_message.html("There is something wrong with one or more of your friends' email addresses that you typed in.").show();
					}
					$email_dropdown[0].email_this = data;
					self.expand_email($email_dropdown);
				}
			}
		});
		
		return false;
	},
	isValidEmail: function(email) {
		var expression = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
		return expression.test(email);
	},
	enableFields: function($email_dropdown) {
		$email_dropdown.find('input, textarea').attr('disabled',false);
	},
	disableFields: function($email_dropdown) {
		$email_dropdown.find('input, textarea').attr('disabled',true);
	},
	hideEmail: function($email_dropdown) {
		$email_dropdown.hide();
		$email_dropdown.siblings('.article_toolbar_email').removeClass('on');
		return false;
	},
	clearFields: function($email_dropdown) {
	
	}
}
article_toolbar.init();
