function togObj(){}
function checkfav(){}

var toggle = new togObj();
var user = new togObj();

user.logged_in = false;


function checkfav()
{
	if(typeof game_id != "undefined")
	{
		// Favourite	
		$.get("/favourites/check/" + game_id + "/0/" + Math.floor(Math.random()*100001) +"/", function(e)
		{
			if(e == "1")
			{
				fav();
			}
			else
			{
				unfav();
			}
		});
	}
}

function check_logged_in()
{
	if(user.logged_in)
	{
		//alert("called: " + user.username);
		return user.username;
	}
	else
	{
		//alert("called - but logged out");
		return false;
	}
}

function start_registration_bubble_roll()
{
	$("#registration").everyTime(5000, scroll_registration_bubble);
}

var i = 1;

function scroll_registration_bubble()
{
	/* Roll registration bubble */
	if(i == 5)
	{
		i=0;
	}

	new_left = i * "420";

	$("#registration img").animate({backgroundPosition : ("-" + new_left + "px 0")},500);

	i++;
}

function stop_registration_bubble_roll()
{
	$("#registration").stopTime();
}

function do_register()
{
	if(!user.logged_in)
	{
		if(!toggle.registration && !toggle.login)
		{
			$('#registration').show();
			$('a.register').parent().addClass('selected');
			$.scrollTo("div#nav", 500, {onAfter: do_rollout} );
			toggle.registration = true;
			
			
		}
	}
}

function do_login()
{
	if(!user.logged_in)
	{
		if(!toggle.registration && !toggle.login)
		{
			$('#login').show();
			$('a.login').parent().addClass('selected');
			$.scrollTo("div#nav", 500, {onAfter: do_rollout} );
			toggle.login = true;
			
		}
	}
}

function do_rollout()
{
	$('#rollout').slideDown("fast");
}

function do_update_panel()
{
	if(toggle.panel)
	{
		$('div.placeholder div.fixed').load("/user/panel/" + Math.floor(Math.random()*100001) +"/", function()
		{
			$("div.points, div.upmedals ul").fadeTo("slow", "0.3", function()
			{
				$(this).fadeTo("fast", "1.0");
			});
			
			bindMedalInteraction();
		});
	}
}

function bindMedalInteraction()
{
	$("div.upmedals li a").unbind().bind("mouseover", function()
	{
		$(this).stop().animate({ top : "-10px", height : "60px" }, 100);
		
		var current = $(this).html();
		
		$("div.upmedals span.note").html(current).show();
		
	}).bind("mouseout", function()
	{
		$(this).stop().animate({ top : "0px", height : "50px"}, 100);
		
		$("div.upmedals span.note").hide();
	});
}

$(document).ready(function(e)
{

	$.getJSON("/user/authenticate/" + Math.floor(Math.random()*100001) +"/",
    function(data){
    	if(data.auth.status == "johnnytwoshoes")
    	{
			$('ul.login').fadeIn("fast");
			user.logged_in = false;
			
			if(typeof page_init_unregistered == "function")
			{
				page_init_unregistered();
			}
    	}
    	else
    	{
    		user.username = data.auth.username;
    		$('a.username span').html(user.username);
    		$('ul.signedin').fadeIn("fast");
    		user.logged_in = true;
			
			if(typeof page_init == "function")
			{
				page_init();
			}
			
    		if(typeof game_id != 'undefined')
    		{
    			checkfav();
    		}

			$.getScript("/lib/scripts/jts.notification.js");
    	}
    });

	toggle.panel = false;	
	toggle.registration = false;
	toggle.login = false;
	toggle.fav = false;

	$('li.fav a').attr("href","javascript:void(0)").bind("click",function(e)
	{
		toggleFav(false);
	});

	$('a.username').attr("href","javascript:void(0)").bind("click",function(e)
	{
		togglePanel(false);
	});
	
	function toggleFav(callback)
	{
		if(toggle.panel)
		{
			togglePanel(true);
		}
		else if(toggle.fav)
		{
			$('li.fav a').parent().removeClass("selected");
			
			$('#rollout').slideUp('fast',function(e)
			{
				toggle.fav = false;
				if(callback)
				{
					togglePanel(false);
				}
			});
		}
		else
		{
			$('li.fav a').parent().addClass("selected");
			
			$('div.placeholder div.fixed').load("/favourites/get/" + Math.floor(Math.random()*100001) +"/",function()
			{
				$('#rollout').slideDown('fast');
				toggle.fav = true;
			}).parent().show();
		}
	}

	function togglePanel(callback)
	{
		if(toggle.fav)
		{
			toggleFav(true);
		}
		else if(toggle.panel)
		{
			$('a.username').parent().removeClass("selected");
			
			$('#rollout').slideUp('fast',function(e)
			{
				toggle.panel = false;
				if(callback)
				{
					toggleFav(false);
				}
			});
		}
		else
		{
			$('a.username').parent().addClass("selected");
			
			$('div.placeholder div.fixed').load("/user/panel/" + Math.floor(Math.random()*100001) +"/",function()
			{
				
				
				$('#rollout').slideDown('fast');
				toggle.panel = true;
				
				bindMedalInteraction();		
				
				
			}).parent().show();
		}
	}
	
	$('#frm_login').ajaxForm(
	{ 
		dataType:  'json',
		beforeSubmit: function()
		{
			$('#login input').attr("disabled","disabled");
			$('#login input.submit').attr("src","/lib/images/btn_sending.gif");
		},
        success:	processLogin
	});
	
	function processLogin(data)
	{
		
	    $('#login p em').hide();
		
    	$('#login input').removeAttr("disabled");
    	$('#login input.submit').attr("src","/lib/images/btn_login.png");
    	
    	var e = data.login.message;
    	
    	if(e != "ok")
    	{
    		$('#login p.email em').html("Incorrect login details").show();
    	}
    	else
    	{
    		user.username = data.login.username;
    		user.logged_in = true;
    		
	    	$('#login input.submit').attr("src","/lib/images/btn_success.png");
	    	toggleLogin(false);
	    	
	    	$('ul.login').fadeOut("fast",function()
	    	{
	    		$('a.username span').html(user.username);
	    		$('ul.signedin').fadeIn("fast",function(e)
	    		{
	    			checkfav();
	
					if(typeof page_init == "function")
					{
						page_init();
					}
	    		});
	    	});
	
		
	
			var url = String(document.location).split("/");
					
			for(i=0; i<url.length; i++)
			{				
				if(url[i] == "forum")
				{					
					window.location.reload();
				}
			}
    	};
	}
	
	$('#frm_register').ajaxForm(
	{ 
		dataType:  'json',
		beforeSubmit: function()
		{
			$('#registration input').attr("disabled","disabled");
			$('#registration input.submit').attr("src","/lib/images/btn_sending.gif");
		},
        success:   processRegistration
	});
	
	function processRegistration(data) {
	    
	    $('#registration p em').hide();
	    
	    var e = data.register.errors.length;
	    
	    if(e > 0)
	    {	
	    	$('#registration input').removeAttr("disabled");
	    	$('#registration input.submit').attr("src","/lib/images/btn_register.png");
	    	for(var i=0;i<e;i++)
	    	{
	    		if(data.register.errors[i].elem == "username")
	    		{
	    			$('#registration p.username em').show().html(data.register.errors[i].message);
	    		}
	    		
	    		
	    		if(data.register.errors[i].elem == "email")
	    		{
	    			$('#registration p.email em').show().html(data.register.errors[i].message);
	    		}
	    		
	    		
	    		if(data.register.errors[i].elem == "password" || data.register.errors[i].elem == "passconf")
	    		{
	    			$('#registration p.password em').show().html(data.register.errors[i].message);
	    		}
	    	}
	    }
	    else
	    {
	    	//$('#registration input').removeAttr("disabled");
	    	$('#registration input.submit').attr("src","/lib/images/btn_success.png");
	    	toggleRegistration(false);
	    	
	    	$('ul.login').fadeOut("fast",function()
	    	{
	    		user.username = $('p.username input').attr("value");
	    		user.logged_in = true;
	    		$('a.username span').html(user.username);
	    		$('ul.signedin').fadeIn("fast");
	
				$("#rollout").after("<div id='new_reg'></div>");
				$("#new_reg").load("/user/registration_panel", function()
				{
					$("#new_reg a.close").bind("click", function()
					{
						$("#new_reg").slideUp("fast");
						
						return false;
					});
					
					$("#new_reg").slideDown("fast");
					
					if(typeof page_init == "function")
					{
						page_init();
					}
				});
				
	    	});
	    }
	}
		
	
	$('a.register').attr("href","javascript:void(0)").bind("click",function(e)
	{
		toggleRegistration(false);
		start_registration_bubble_roll();
	});

	$('a.login').attr("href","javascript:void(0)").bind("click",function(e)
	{
		toggleLogin(false);
	});
	
	function toggleRegistration(callback)
	{
		if(toggle.login)
		{
			toggleLogin(true);
		}
		else if(!toggle.registration)
		{
			$('#registration').show();
			$('a.register').parent().addClass('selected');
			$('#rollout').slideDown("fast");
			
			toggle.registration = true;
		}
		else
		{
			$('a.register').parent().removeClass('selected');
			$('#rollout').slideUp("fast",function(e)
			{
				$('#registration').hide();
				
				toggle.registration = false;
				if(callback)
				{
					toggleLogin(false);
				}
				
				stop_registration_bubble_roll();
			});
		}
	}
	function toggleLogin(callback)
	{
		if(toggle.registration)
		{
			toggleRegistration(true);
		}
		else if(!toggle.login)
		{
			$('#login').show();
			$('a.login').parent().addClass('selected');
			$('#rollout').slideDown("fast");
			
			toggle.login = true;
		}
		else
		{
			$('a.login').parent().removeClass('selected');
			$('#rollout').slideUp("fast",function(e)
			{
				$('#login').hide();
				toggle.login = false;
				if(callback)
				{
					toggleRegistration(false);
				}
			});
		}
	}
	

});