	
	/*
	JS
	--------------------------------------------------------------------------------------------  
	@site			sho.com (v5)
	@file			Membership.js
	@author			dpaul
	@modified		04.27.09
	@desc			Manager for membership functions, simple version
	@note			Trailing slash dropped form deleteaccount url, which had prevented users from
	@note			reaching the action
	@note			IE7, IE6 were caching the user xml action, adding date hash seems to fix this.
	@depend			Prototype
	
	/* =:Membership
	-------------------------------------------------------------------------------------------- */  
	SHO.Membership = function()
	{	
		var _urls = {
			logincheck:		'/site/user/userxml.do',
			logout:			'/site/membership/logout.do',
			login:			'/site/membership/loginform.do',
			register:		'/site/membership/registerform.do',
			editprofile:	'/site/membership/editprofile.do',
			deleteaccount:	'/site/membership/deleteaccount.do'
		}
		
		var _isLogged;
		var _user;
		var _inMembershipSection = false;
		
		/* =:Startup
		  ---------------------------------------------------------------------------------------- */  
		function init(){	
			doLoginCheck();
			setUnsubscribeHandler();
		}
		
		function doLoginCheck()
		{
			if(!$('membership-tools')){ return; }
			
			//<user>
			//		<username>mydronegmailcom</username>
			//		<userEmail>mydrone@gmail.com</userEmail>
			//	</user>
			new Ajax.Request ( _urls.logincheck + '?hash=' +(new Date().getTime()), 
			{ 
				method:'get',
				onComplete: function( transport )
				{ 
					var data = transport.responseText;
					if((data.indexOf( '</userEmail>' )) !== -1 && ( data.indexOf( '</username>' ) !== -1)){
						_isLogged = true;
						_user = {
							name:data.match(/<username>(.+)<\/username>/)[1],
							email:data.match(/<userEmail>(.+)<\/userEmail>/)[1]
						};
					}
					updateMemberTools();
				},
				onFailure: function(){
					Debugger.t( 'A connection failure has occurred.' );
				}
			});
		}
		
		function updateMemberTools()
		{
			$('membership-tools').update(( _isLogged ) ? 
				'<p>Hi '+ _user.email +'.&nbsp;&nbsp;<a href="javascript:SHO.Membership.editProfile();">'+
				'My Profile</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="javascript:SHO.Membership.logout();">Log Out</a></p>'
				:
				'<p>You are not logged in.&nbsp;&nbsp;<a href="javascript:SHO.Membership.login();">Log In</a> '+
				'or <a href="javascript:SHO.Membership.register();">Register</a></p>' );		
		}
		
		function setUnsubscribeHandler() 
		{	
			if (!$('remove_newsletter')) { return; }
			var sendButton = $('remove_newsletter').select('a#submit'); 
   			if (sendButton) { sendButton.invoke('observe', 'click', unsubscribe); }
 		}	
		
				
		
		/* =:Runtime
		  ---------------------------------------------------------------------------------------- */
		function login()
		{
			//setPortal( 'login' );
			document.location = _urls.login;
		}
		
		
		function editProfile()
		{
			//setPortal('editprofile');
			document.location = _urls.editprofile
		}
		
		
		function logout()
		{
			if( document.location.toString().indexOf( '/site/membership/') !== -1 )
			{
				_inMembershipSection = true;
			}
			
			new Ajax.Request ( _urls.logout, 
			{ 
				method:'get',
				onComplete: function( transport )
				{ 
					if( transport.reponseText !== null )
					{
						_isLogged = false; 
						
						$('membership-tools').update('Goodbye.');
						(function(){ 
							if( !_inMembershipSection ){ updateMemberTools(); }
							else { document.location = '/site/home.do';}
						}).delay(1);
					}
				},
				onFailure: function(){
					Debugger.t( 'A connection failure has occurred.' );
				}
			});
		}
		
		function register(){
			document.location = _urls.register;
		}
		
		function deleteAccount(){
			Dialogs.out( 'Permanently delete your SHO.com account and profile?', [
				{ label:'cancel', onclick:'close' },
				{ label:'delete', onclick:(function(){
					document.location = _urls.deleteaccount;
				}) }
			]);
		}
		
		function unsubscribe(event) {	
			var form = document.unsubscribe;
			if (form) {
				form.action = '/site/membership/remove_confirm.do';
				form.submit();
			}
			event.stop();
		}
		
		
		/* =:Reveal Public Methods
		  ---------------------------------------------------------------------------------------- */   
		return {
			init:init,
			editProfile:editProfile,
			login:login,
			logout:logout,
			register:register,
			deleteAccount:deleteAccount,
			unsubscribe:unsubscribe
		}
	
	}();
	
	// Add to onload stack
	document.observe("dom:loaded", function() { 
		SHO.Membership.init();
	});	
	
	
	
