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 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 span").fadeTo("fast", "0.3", function()
			{
				$(this).fadeTo("normal", "1.0");
			});
		});
	}
}

$(document).ready(function(e)
{

	$("a#top").bind("click",function()
	{
	
		$.scrollTo("#wrapper", 500);
		
		return false;
	});
	$.getJSON("/user/authenticate/" + Math.floor(Math.random()*100001) +"/",
    function(data){
    	if(data.auth.status == "johnnytwoshoes")
    	{
			$('ul.login').fadeIn("fast");
			user.logged_in = false;
    	}
    	else
    	{
    		user.username = data.auth.username;
    		$('a.username').html(user.username);
    		$('ul.signedin').fadeIn("fast");
    		user.logged_in = true;
			
			if(typeof page_init == "function")
			{
				page_init();
			}
			
    		if(typeof game_id != 'undefined')
    		{
    			checkfav();
    		}
    	}
    });

	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("stay");
			
			$('#rollout').slideUp('fast',function(e)
			{
				toggle.fav = false;
				if(callback)
				{
					togglePanel(false);
				}
			});
		}
		else
		{
			$('li.fav a').parent().addClass("stay");
			
			$('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;
			}).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').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').html(user.username);
	    		$('ul.signedin').fadeIn("fast");
	    	});
	    }
	}
		
	
	$('a.register').attr("href","javascript:void(0)").bind("click",function(e)
	{
		toggleRegistration(false);
	});

	$('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);
				}
			});
		}
	}
	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);
				}
			});
		}
	}
});