YAHOO.namespace("Youniverse");

YAHOO.Youniverse.register = function()
{
	
	var dialogPath;
	
	/*
	* Initialise class when window dom loaded
	*/
	this.initClass = function ()
	{
	}
	
	/*
	* Set the dialog path
	* @ url String of dialog controller path	
	*/
	this.setDialogPath = function (url)
	{
		dialogPath=url;
	}
	
	/*
	* Load Register	
	*/
	this.loadRegister = function (code, encodedTargetUrl)
	{
		var callback =
		{
		  success:this.onLoadRegister,
		  failure:this.ajaxFailure,
		  cache: false 
		};
		
		var path = dialogPath;
		
		if(code)
		{
			path += code;
		}
		if (encodedTargetUrl)
		{
			path += (code ? '/' : '0/')+encodedTargetUrl;
		}
		
		var request = YAHOO.util.Connect.asyncRequest('GET', path, callback);
	}
	/*
	* onLoad Register	
	*/
	this.onLoadRegister = function(o)
	{
		response = o.responseText;
		
		dialogBox.setBody(response);
		dialogBox.setHeight();
		dialogBox.openDialog();
		
		setTimeout("register.setFocus()", 1000);
		
		//Validation rules
		var usernameVal = new LiveValidation('username', {validMessage: ' '});
		usernameVal.add( Validate.Length, { minimum: 3 } );
	}
	/*
	* Ajax Failure	
	*/
	this.ajaxFailure = function (o)
	{
		if (o.status > -1)
		{
			alert(msg.translate('err01'));
		}
	}
	
	/*
	* Submit register
	* @ formID is the ID of the form
	*/
	this.submitRegister = function (formID)
	{
		var formObject = document.getElementById(formID+"Form"); 
		
		YAHOO.util.Connect.setForm(formObject);
		
		
		// 13 years old verification
		var today = new Date();
		var dob = new Date(document.getElementById("dob_year").value, document.getElementById("dob_month").value - 1, document.getElementById("dob_day").value);
		// Set 1 day in milliseconds
		var oneDay = 1000 * 60 * 60 * 24;
		
		// Calculate difference btw the two dates, and convert to days
		var diff = Math.ceil((today.getTime() - dob.getTime()) / (oneDay * 365.25));

		if (diff <= 13)
		{
			jQuery.facebox({ ajax: '/dialog/thirteen/' });
		}
		else
		{
			var callback = 
			{ 
				success: this.onSubmitRegister, 
				failure: this.ajaxFailure
			};	
			
			var cObj = YAHOO.util.Connect.asyncRequest('POST', "/register/signup", callback);
			
			//Analytics
			pageTracker._trackPageview('/register/signup');
		}
	}
	
	/*
	* onSubmit Login
	* @ o is the response object
	*/
	this.onSubmitRegister = function (o)
	{
		eval(o.responseText);
		
		if (redirect_to != "")
		{
			window.location.href = redirect_to;
		}
		
		if (demographicsSaved == 1)
		{
			// all good... create processing page, and redirect to results page
			floatingModule.createProcessingPage(resultsPage);
		}
	}
	
	/* 
	* Set focus of the first form item
	*/
	this.setFocus =function ()
	{
		if ( document.getElementById("firstname") == null )
			document.getElementById("UserUsername").focus();
		else
			document.getElementById("firstname").focus();
	}

	/* 
	* Show/Hide States select 
	*/
	this.showHideStates =function (obj)
	{ 
		if (obj.value == "US")
			$("#state").parent().show();
		else
			$("#state").parent().hide();
	}
	 

	this.submitUsernameForm = function()
	{
		var data =  {
						username: $(".username_modal").val(),
						location: $(".location_modal").val()
					};
		jQuery.post("/register/fbc_get_username", data, function(obj){
			if ( obj["err"] )
				eval('dialogBox.displayError(obj["error"], 30, 15)');
			else
				window.location.href = obj["link"];	
		}, "json");
	}

	this.getModuleId = function()
	{
		var register_via_fb = '/register/registerViaFacebook';
		if ( $("#module_id_container").val() != 0 )
		{
			register_via_fb = register_via_fb + "/" + $("#module_id_container").val();
		}

		//jQuery.facebox({ ajax: "/register/fbc_get_username/?location=" + register_via_fb });
		window.location.href = register_via_fb;
	}

	this.loadFinalStep =function()
	{
		if ($("#module_id_container").val() != '0') 
		{
			$.getJSON("/register/check_username?username=" + $(".username").val() + "&password=" + $(".password").val(), function(o){ 
				if (o.isAvailable) 
				{
					$.post('/register/final', 
						{username: $(".username").val(), password: $('.password').val(), module_id_container: $("#module_id_container").val(), encodedtarget: $('#encodedtarget').val()}, 
						function(response) {
							$("#pageRegisterDiv").html(response);
						}
					);
//					var path = '/register/final?username=' + $(".username").val() + '&password=' + $('.password').val() + '&module_id_container=' + $("#module_id_container").val();
//					$("#pageRegisterDiv").load(path);		
				}
				else 
					dialogBox.displayError(o.error, 100, 200);
			});
		}
		else 
		{
			$.getJSON("/register/check_username?username=" + $(".username").val() + "&password=" + $(".password").val(), function(o){ 
				if (o.isAvailable) 
					$('.registerForm').submit();
				else 
					dialogBox.displayError(o.error, 100, 200);
			});

		}		
	}
}
