jQuery(document).ready(function() {
	
	setUpPage();
	

	function setUpPage(message)
	{	
		

	    //Set login action
		jQuery("#jquerylogon").bind('submit', onLoginSubmit);
	    
		//Set the logout action
		jQuery("#logout").bind('click', onLogoutClick);		
		jQuery("#logoutfooter").bind('click', onLogoutClick);	
/*		jQuery("#logoutfooter").click(function(e){
			e.preventDefault();
			onLogoutClick(e);
			jQuery('html, body').animate({scrollTop:0}, 'slow');
		});*/
		
		//Expand Panel
		jQuery("#open").click(function(e){
			e.preventDefault();
			jQuery("div#loginContainer").slideDown("slow");
			jQuery("div#loginPanel").slideDown("slow");
		});	
		
		// Collapse Panel
		jQuery("#closeLogin").click(function(){
			jQuery("div#loginContainer").slideUp("slow");
			jQuery("div#loginPanel").slideUp("slow");
		});		
		
		// Switch buttons from "Log In | Register" to "Close Panel" on click
		jQuery("#toggle a").click(function () {
			jQuery("#toggle a").toggle();
		});	
		
		//Set the footer login action
		//jQuery("#loginfooter a").bind('click', onFooterLoginClick);
	
		
		jQuery("#loginfooter a").click(function(e){
			
			e.preventDefault();
			// simulate the click on the top panel
			//jQuery("#open").hide();
			//jQuery("#closeLogin").show();				
			jQuery('html, body').animate({scrollTop:0}, 'slow');
			jQuery("div#loginPanel").slideDown("slow");
			jQuery("div#loginContainer").slideDown("slow");
		});	
		
		jQuery("#loginbasket").click(function(e){
			
			e.preventDefault();
			// add the referral hidden field
			jQuery("#jquerylogon, #jqueryregister").append('<input type="hidden" name="referral" value="checkout" />');
			
			// simulate the click on the top panel
			//jQuery("#open").hide();
			//jQuery("#closeLogin").show();				
			jQuery('html, body').animate({scrollTop:0}, 'slow');
			jQuery("div#loginPanel").slideDown("slow");
			jQuery("div#loginContainer").slideDown("slow");
		});	
			
		
	}



	
    
        	
    function onLoginSubmit(e)
    {	
    	e.preventDefault();
    	var form = jQuery("#jquerylogon"); 
    	
    	var options = {
        	url : form.attr('action'),	
            type : form.attr('method'),
        	dataType : 'json',
            data : form.serialize(),
            success : onLoginSuccess,
            failure : onLoginFailure
        };
    	
        jQuery.ajax(options);
    }
    
    function onClickLost(e)
    {	
    	e.preventDefault();
    	var form = jQuery("#jquerylogon"); 
    	
    	var options = {
        	url : form.attr('action'),	
            type : form.attr('method'),
        	dataType : 'json',
            data : form.serialize()  + "&forgot=y",
            success : onLostSuccess,
            failure : onLostFailure
        };
    
        jQuery.ajax(options);
    }
    
    
	
	
    function onLoginSuccess (transport)
    {
		// If login successful	(name returned)	
    	if ( transport.name )
    	{
			// Update the text on the login slider
			var greeting = jQuery('#greeting');
			//var link = jQuery('#toppanel ul.login li:nth-child(4)');
			var footer = jQuery('#customeracc');
			var basket_buttons = jQuery('#basket_buttons');
	
			//greeting.text("Hello " + transport.name);
			greeting.replaceWith('<li id="greeting">Hello ' + transport.name + ' | <a id="logout" class="open" href="/jquerylogout/">Log Out</a></li>');
		
			// Update the footer links
			footer.load("/templates/tpl_logged_in_footer.php",'',setUpPage);
			
			// Update the basket buttons
			basket_buttons.load("/templates/tpl_logged_in_basket_buttons.php",'',setUpPage);

			// close the slider	
			jQuery('div#loginPanel').slideUp('slow');	
			jQuery("div#loginContainer").slideUp("slow");
			
			// redirect
			if ( transport.referral )
			{
				location.href = '/' + transport.referral + '/';
			}
    	}
    	else if ( transport.error )
    	{
			// else (error returned)
			// display the error message
			var error = jQuery('#jqueryloginerr');		
			error.text(transport.error);
			error.show();
    	}
    	else
    	{
    		onLoginFailure;
    	}
    }
    
    function onLostSuccess (transport)
    { 
    	// TODO rename to indicate that this could be a message rather than an error
    	if ( transport.error )
    	{
			// display the error message
			var error = jQuery('#jqueryloginerr');		
			error.text(transport.error);
			error.show();
    	}
    	else
    	{
    		onLostFailure;
    	}
    }     


    function onLoginFailure (transport)
    {
    	alert('There has been an error logging you in. Please try again later');
    }
    
    function onLostFailure (transport)
    {
    	alert('There has been an error. Please try again later');
    }    
        
    
    
    function onLogoutClick(e)
    {	
    	e.preventDefault();

    	var options = {
        	url : '/jquerylogout/',	
            success : onLogout,
            failure : onLoginFailure
        };

        jQuery.ajax(options);
    }    
    	
    function onLogout(transport)
    {

		// Update the text on the login slider
		var greeting = jQuery('#greeting');
		//var link = jQuery('#toppanel ul.login li:nth-child(4)');
    	var footer = jQuery('#customeracc');
    	var basket_buttons = jQuery('#basket_buttons');
		
		// Update the text on the login slider
		//greeting.text("Hello Guest!" );
    	greeting.replaceWith('<li id="greeting"><img alt="" src="/images/login.gif" /><a id="open" class="login open" href="/login/"title="Login or Register an Account">Login / Register</a></li>');
		
		// Update the footer links
		footer.load("/templates/tpl_guest_footer.php",'',setUpPage);	
		
		// Update the basket buttons
		basket_buttons.load("/templates/tpl_guest_basket_buttons.php",'',setUpPage);
    }	
	
	function onFooterLoginClick(e){
		
		e.preventDefault();
		// simulate the click on the top panel
		//jQuery("#toggle a").toggle();				
		jQuery('html, body').animate({scrollTop:0}, 'slow');
		jQuery("div#loginPanel").slideDown("slow");
		jQuery("div#loginContainer").slideUp("slow");
	}	
		
});