ShareModule={};

SharingLinks = 
{
	SHARE_NONE: 0,
	SHARE_EMAIL: 1, 
 	SHARE_SHOUT: 2, 
	SHARE_PM: 3, 
	SHARE_FACEBOOK: 4, 
	SHARE_DIGG: 5, 
	SHARE_TWITTER: 6, 
	SHARE_MYSPACE: 7,
	
	toggleShareMore: function(element)
	{
		var mainOptionsDiv = YAHOO.util.Dom.getAncestorByClassName(element, 'main_options');
		var extraOptionsDiv = YAHOO.util.Dom.getElementsByClassName('popup_extra_options', 'div', mainOptionsDiv);
		
		var extraOptionsDisplay = YAHOO.util.Dom.getStyle(extraOptionsDiv, 'display');
		if(extraOptionsDisplay == "none")
		{
			extraOptionsDisplay = "block";
			element.innerHTML = "close";
		}
		else
		{
			extraOptionsDisplay = "none";
			element.innerHTML = "more...";
			
		}
		YAHOO.util.Dom.setStyle(extraOptionsDiv, 'display', extraOptionsDisplay);
	},
	
	registerShare: function(element, ref)
	{
		var shareContainer = YAHOO.util.Dom.getAncestorByClassName(element, 'share_obj_ref');
		var shareInfo = Nexopia.json(YAHOO.util.Dom.getAncestorByClassName(element, 'share_obj_ref'));
		var formKey = YAHOO.util.Dom.getElementsByClassName('share_link_form_key', 'input', shareContainer)[0];
		YAHOO.util.Connect.asyncRequest("POST", "/share/register/" + ref + "/" + shareInfo.share_type + "/" + shareInfo.share_key.join('/'), 
			new ResponseHandler({}), 'ajax=true&form_key[]=' + formKey.value);
	},
	
	addRef: function(hrefString, ref)
	{
		var resultString = null;
		if(hrefString.indexOf('?') != -1)
		{
			resultString = hrefString + '&';
		}
		else
		{
			resultString = hrefString + '?';
		}
		
		resultString += 'ref=' + ref;
		
		return resultString;
	},
	submitShoutOnEnter: function(event, element) {
		if (!element.value.match(/^\s*$/)) {
			if (event.keyCode == 13) {
				YAHOO.util.Event.preventDefault(event);
				Shouts.limitShoutLength(null, element);
				SharingLinks.shoutPanel.postAndClose(event,element);
			}
		}
	}
};

Overlord.assign({
	minion: "sharing_links:toggle_share_more",
	click: function(event, element) {
		YAHOO.util.Event.preventDefault(event);		
		SharingLinks.toggleShareMore(element);
	}
});

Overlord.assign({
	minion: "share:twitter",
	click: function(event, element) {
		YAHOO.util.Event.preventDefault(event);		
		var shareInfo = Nexopia.json(YAHOO.util.Dom.getAncestorByClassName(element, 'share_obj_ref'));

		var url = encodeURIComponent(SharingLinks.addRef(shareInfo.share_href, SharingLinks.SHARE_TWITTER));
		var statusMessage = encodeURIComponent("Check this out: ");
		var tag = encodeURIComponent(" #nexopia");

		var encodedHref = "http://twitter.com/home?status=" + statusMessage + url + tag;

		// Open a new window/tab with Twitter and the message we want to tweet.
		window.open(encodedHref);
		
		SharingLinks.registerShare(element, SharingLinks.SHARE_TWITTER);

	}
});

Overlord.assign({
	minion: "share:digg",
	click: function(event, element) {
		YAHOO.util.Event.preventDefault(event);
		
		var shareInfo = Nexopia.json(YAHOO.util.Dom.getAncestorByClassName(element, 'share_obj_ref'));
		
		var encodedHref = 'http://digg.com/submit?url=' +
			encodeURIComponent(shareInfo.share_href) + 
			'&title=' + encodeURIComponent(shareInfo.share_title) + 
			'&bodytext=' + encodeURIComponent(shareInfo.share_description);

		window.open(encodedHref);
			
		SharingLinks.registerShare(element, SharingLinks.SHARE_DIGG);
		
		return false;
	}
});

Overlord.assign({
	minion: "share:facebook",
	click: function(event, element) {
		YAHOO.util.Event.preventDefault(event);
		
		var shareInfo = Nexopia.json(YAHOO.util.Dom.getAncestorByClassName(element, 'share_obj_ref'));
		
		window.open('http://www.facebook.com/sharer.php?u='+
			encodeURIComponent(SharingLinks.addRef(shareInfo.share_href,SharingLinks.SHARE_FACEBOOK))+'&t='+
			encodeURIComponent(shareInfo.share_title),
			'sharer','toolbar=0,status=0,width=626,height=436');
			
		SharingLinks.registerShare(element, SharingLinks.SHARE_FACEBOOK);
		
		return false;
	}
});

Overlord.assign({
	minion: "share:myspace",
	click: function(event, element) {
		YAHOO.util.Event.preventDefault(event);
		var shareInfo = Nexopia.json(YAHOO.util.Dom.getAncestorByClassName(element, 'share_obj_ref'));
		var length = 3;
		var targetUrl = 'http://www.myspace.com/index.cfm?fuseaction=postto&' + 't=' + encodeURIComponent(shareInfo.share_title)
			+ '&c=' + encodeURIComponent(shareInfo.share_description) + '&u=' + encodeURIComponent(SharingLinks.addRef(shareInfo.share_href, SharingLinks.SHARE_MYSPACE)) + '&l=' + length;
		window.open(targetUrl);
		
		SharingLinks.registerShare(element, SharingLinks.SHARE_MYSPACE);
	}
});

Overlord.assign({
	minion: "share:shout",
	click: function(event, element) {
		YAHOO.util.Event.preventDefault(event);
		var shareInfo = Nexopia.json(YAHOO.util.Dom.getAncestorByClassName(element, 'share_obj_ref'));
		var targetUrl = '/share/shout?longUrl=' + encodeURIComponent(SharingLinks.addRef(shareInfo.share_href, SharingLinks.SHARE_SHOUT));
			
		SharingLinks.shoutPanel = new AsyncPanel({ 
			exit_path: '/my/shouts/submit', 
			exit_method: 'POST',
			form_id: 'share_shout_form', 
			ajax_exit: true,
			path: targetUrl
		});
		SharingLinks.shoutPanel.open();
		SharingLinks.registerShare(element, SharingLinks.SHARE_SHOUT);
	}
});

Overlord.assign({
	minion: "share:email",
	click: function(event, element) {
		YAHOO.util.Event.preventDefault(event);
		var shareInfo = Nexopia.json(YAHOO.util.Dom.getAncestorByClassName(element, 'share_obj_ref'));
		var targetUrl = '/share/email?title=' + encodeURIComponent(shareInfo.share_title) + '&href=' + encodeURIComponent(SharingLinks.addRef(shareInfo.share_href, SharingLinks.SHARE_EMAIL)) +
			'&description=' + encodeURIComponent(shareInfo.share_description) + '&type_description=' + encodeURIComponent(shareInfo.share_type_description);
			
		var panel = new AsyncPanel({ 
			exit_path: '/share/email/submit', 
			exit_method: 'POST',
			form_id: 'share_by_email_form', 
			ajax_exit: true,
			path: targetUrl
		});
		panel.open();
		
		SharingLinks.registerShare(element, SharingLinks.SHARE_EMAIL);
	}
});

Overlord.assign({
	minion: "share:pm",
	click: function(event, element) {
		YAHOO.util.Event.preventDefault(event);
		var shareInfo = Nexopia.json(YAHOO.util.Dom.getAncestorByClassName(element, 'share_obj_ref'));
		var targetUrl = '/my/share/pm?title=' + encodeURIComponent(shareInfo.share_title) + '&href=' + encodeURIComponent(SharingLinks.addRef(shareInfo.share_href, SharingLinks.SHARE_PM)) +
			'&description=' + encodeURIComponent(shareInfo.share_description) + '&type_description=' + encodeURIComponent(shareInfo.share_type_description);
			
		window.open(targetUrl);
		
		SharingLinks.registerShare(element, SharingLinks.SHARE_PM);
	}
});

Overlord.assign({
	minion: "share:shout_login_link",
	load: function(element) {
		element.href = element.href + "?referer=" +  encodeURIComponent(document.location);
	}
});

Overlord.assign({
	minion: "share:shouts:submit_on_enter",
	keypress: SharingLinks.submitShoutOnEnter,
	scope: SharingLinks
});

