var pageGetVars;

(function($) {
	var interval;	
	var popup;
	var originalLink;
	var defaults = {
		parentDiv:'body',
		border:null
	};
	
	function validEmail(str){
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
		return filter.test(str);
	};
	
	function updatePos(el) {
		interval = setInterval(function() { 
			$(el).css({ marginTop:-(parseInt($(el).height())) });
		},10);
	};
	
	function stopUpdate(el) {
		clearInterval(interval);	
	};
	
	function sendEmail(from,to,message) {
		var mailBody;
		var mailSubject;
		
		var getVars = $(originalLink).attr('href');
		getVars = getVars.substr(getVars.indexOf('?')+1).split('&');
		var t;
		for(var i = 0; i<getVars.length; i++) {
			t = getVars[i].split('=');
			if(t[0]=='subject') mailSubject = encodeURI(t[1]);
			if(t[0]=='body') mailBody = encodeURI(t[1]);
		}
		$.get('/ajax-data.php', { action:'shareLink', mailFrom:from, mailTo:to, mailBody:(message ? message+'\n\n- - - - - - - - - - - - - - - - - - - - - -\n\n' : '')+mailBody, mailSubject:mailSubject, mailLink:String(window.location) }, messageSent);
	};
	
	function messageSent(res) {
		updatePos(popup);
		urchinTracker('/articles/'+pageGetVars[4]+'/'+pageGetVars[5]+'/email/sent/');
		$(popup).find('form').slideUp(300, function() {
			var n = $('<p>Your message has been sent.<br /><a href="#">Send To Someone Else</a></p>').appendTo(popup);
			$(n).parent().find('a').not('#add-message').eq(0).click(function() { resetPopup(n); return false; }).hide().fadeIn(200, function() { stopUpdate(); });
		});
	};
	
	function resetPopup(n) {
		$(popup).find('input').css({ border:defaults.border }).eq(0).val('');
		updatePos(popup);
		$(popup).find('input[type=submit]').attr('disabled',false).val('Send E-mail');
		$(n).remove(); 
		$(popup).find('form').slideDown(300, function() {
			$(popup).find('input').eq(0).focus();
			stopUpdate();											  
		});	
	};
	
	function closePopup() {
		$(popup).fadeOut(200); 
		return false;
	};

	$.fn.mailPopup = function(options) {
		return this.each(function() {
			popup = $('<div class="popup"><h3>Share This With a Friend</h3><form><fieldset><label><input type="text" name="to" />To:</label><br /><label><input type="text" name="from" />From:</label><a id="add-message" class="right" href="">+ Add Message</a><br /><input class="submit" type="submit" value="Send E-mail" /></fieldset></form><div id="closePopup"></div></div>').insertAfter($(this).parent()).hide();
			$(popup).css({ width:$(popup).width() });
			$('#closePopup').click(closePopup);
			defaults.border = $(popup).find('input').eq(0).css('border');
			
			$('#add-message').click(function() {
				try { updatePos(popup); } catch(e) { };
				$(this).slideUp(300, function() {
					$('<br />').insertBefore(this);
					$('<label><textarea cols="4" rows="4" name="message" />Message:</label>').insertBefore(this).hide().slideDown(300, function() { stopUpdate(); });
					$(this).remove();
				});
				return false;
			});
			$(popup).find('form').submit(function() {
				var to = $(popup).find('input').eq(0).css({ border:defaults.border });
				var from = $(popup).find('input').eq(1).css({ border:defaults.border });
				var message = $(popup).find('textarea').eq(0).css({ border:defaults.border });
				
				if(!validEmail(from.val())) $(from).css({ border:'solid 1px #ff0000' }).focus();
				if(!validEmail(to.val())) $(to).css({ border:'solid 1px #ff0000' }).focus();
				if(!validEmail(from.val()) || !validEmail(to.val())) return false;
				
				$(popup).find('input[type=submit]').val('Sending...').attr('disabled',true);
				sendEmail(from.val(), to.val(), message.val());
				
				return false;						 
			});
			$(this).click(function(e) {		
				originalLink = this;
				var pos = $(this).position();
				var left = pos.left+(parseInt($(this).width())/2)-(parseInt($(popup).width())/2)-15;
				$(popup).css({ marginTop:-(parseInt($(popup).height())), left:(left<0 ? 20 : left) }).fadeIn(200);					   
				$(popup).find('input').eq(0).focus();
				return false;
			});						  
		});
	};
})(jQuery);

$(document).ready(function() {
	$('.email a').mailPopup({ parentDiv:'#news' });
	$('.share li a').click(function() { 
		pageGetVars = String(window.location).split('/');
		var c = this.parentNode;
		if(c.className=='email') return true;
		
		if(pageGetVars.length>5) urchinTracker('/articles/'+pageGetVars[4]+'/'+pageGetVars[5]+'/'+c.className+'/');
		if(c.className!='print') window.open(this.href);
		return false;
	});
});