	
	/*
	JS
	--------------------------------------------------------------------------------------------  
	@site				sho.com/site
	@project			sho (970)
	@package			common
	@file				Membership.js
	@author				dpaul
	@modified			10.02.09
	@note				added check for 3rd party use
	@desc				Manager for membership functions, simple version
	@depend				Prototype
	
	/* =:Membership
	-------------------------------------------------------------------------------------------- */  
	sho.common.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()
		{	
		    // quit if on dev, we're using Dashboard.js there.
		    if(sho.settings.environment == 'DEVELOPMENT') return;
			
			// prefix urls w/ absolute path if in third party mode
			Object.keys(_urls).each(function(u){
				if( !sho.settings.isLocal ) _urls[u] = 'http://www.sho.com'+ _urls[u];
			});
			
			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(){
					// fail silently // Debugger.t( 'A connection failure has occurred.' );
				}
			});
		}
		
		function updateMemberTools()
		{
			$('membership-tools').update(( _isLogged ) ? 
				'<p>Hi '+ _user.email +'.&nbsp;&nbsp;<a href="javascript:sho.common.Membership.editProfile();">'+
				'My Profile</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="javascript:sho.common.Membership.logout();">Log Out</a></p>'
				:
				'<p>You are not logged in.&nbsp;&nbsp;<a href="javascript:sho.common.Membership.login();">Log In</a> '+
				'or <a href="javascript:sho.common.Membership.register();">Register</a></p>' );		
		}
		
		/*
		support oneclick unsubscribe to be legal **/
		function setUnsubscribeHandler() 
		{	
			if (!$('remove_newsletter')) { return; }
			var sendButton = $('remove_newsletter').select('a#submit'); 
   			if (sendButton) { sendButton.invoke('observe', 'click', unsubscribe); }
 		}	
		
				
		
		/* =:Runtime
		---------------------------------------------------------------------------------------- */
		function login()
		{
			document.location = _urls.login;
		}
		
		
		function 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", sho.common.Membership.init );
	
	/* No surrender, No delete! */
	
	
	