	function validateEmailAddr(email_addr) {
		var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		return reg.test(email_addr);
	}

	function showError(id, msg) {
		$("#" +id).html(msg);
	}

	function sendAuthCode(){
		var args = $("#signin_id").serialize();
		$("#signInForm").block({ message: "Sending e-mail..." }); 
		$.ajax({
				url: ajaxURLs['sendAuthCode'],
				data: args,
				success: function(data) {
					$("#signInForm").unblock();
					$('#signInForm').dialog('close');
					$('#regConfirmForm').dialog('open');
					$('#regConfirmUsername').prepend($('#signin_username').val());
				},
				error: function(data) {
					$("#signInForm").unblock();
					$('#signInForm').dialog('close');
					$('#regConfirmForm').dialog('open');
					$('#regConfirmUsername').prepend($('#signin_username').val());
				}
		});
	}

	function signup() {
		$("#signup_error").html("");
		var cb = $("#signup_tos").attr("checked");
		var errMsg = "";
		if (!cb) {
			showError("signup_error", "Please agree to the terms of service!");
			return;
		} var name = $("#signup_fullname").val();
		var username = $("#signup_username").val();
		var pwd = $("#signup_password").val();
		var pwd1 = $("#signup_password1").val();

		if (!validateEmailAddr(username)) { 
			showError("signup_error", "Please type a valid email address (me@example.com)");
			return;			
		}

		if(name.length < 1){
			showError("signup_error", "Please enter your name");
			return;				
		}
		
		if (pwd != pwd1) {
			showError("signup_error", "Passwords do not match");
			return;				
		}

		if (pwd.length < 5) {
			showError("signup_error", "Password should be more than 5 characters");
			return;				
		}

  	    var args = $("#signup_id").serialize();
  	  	$("#signUpForm").block({ message: "Signing up..." }); 
      	$.ajax({
      		  url: ajaxURLs['getCaptcha'],
      		  data: args,
      		  success: function(data) {
      			$("#signUpForm").unblock();
    		  	if (data.statusCode == "USERNAME_UNAVAILABLE") {
    		  		$("#signup_error").html("Username is not available. Please select another one!");
    		  	} else {
					$('#signUpForm').dialog('close');
					$('#regConfirmForm').dialog('open');
					$('#regConfirmUsername').prepend(data.user.username);
    		  	}
      		  },
      		  failure: function(data) {
      			  alert("Sorry. There was a problem in signup!");
      		  },
			  error: function(data){ 
				document.getElementById("captchaFieldDiv").innerHTML = data.responseText;
      			$("#signUpForm").unblock();
			  }
      	});  		
	}

	function signin() {
		$("#signin_error").html("");
		document.getElementById('sendAuthCodeDiv').style.display = "none"; 

		var username = $("#signin_username").val();
		var pwd = $("#signin_password").val();

		if (username.length == 0) {
			showError("signin_error", "Please type your email address");
			return;			
		}

		if (pwd.length == 0) {
			showError("signin_error", "Please type a password");
			return;			
		}		

  	    var args = $("#signin_id").serialize();
  	  	$("#signInForm").block({ message: "Signing in..." }); 
      	$.ajax({
      		  url: ajaxURLs['signin'],
      		  data: args,
      		  success: function(data) {
      			$("#signInForm").unblock();
							if (data.statusCode == "LOGIN_ERROR") {
								$("#signin_error").html("Sorry your user name and password does not match. Please correct and try again!");
							} else if (!data.user.activated) {
								document.getElementById('sendAuthCodeDiv').style.display = "inline"; 
								document.getElementById('signin_userId').value = data.user.userId;
							} else {
								window.location.reload( false ); 
							}
      		  },
      		  failure: function(data) {
      			  alert("Sorry. There was a problem in signin!");
      		  }
      	});  		
	}	
	
	$(document).ready(function() {

		$("#signUpForm").dialog({
		    title: "Sign Up for Caloricious",
			autoOpen: false,
			draggable: false,
			height: 400,
			width: 450,
			modal: true,
			buttons: {'Signup': function() {
		    			signup();
					  },
			          'Cancel': function() {
			          	$(this).dialog('close');
			          }}
		});	

		$("#signInForm").dialog({
		    title: "Sign In",
			autoOpen: false,
			draggable: false,
			height: 250,
			width: 450,
			modal: true,
			buttons: {'Signin': function() {
		    			signin();
					  },
			          'Cancel': function() {
			          	$(this).dialog('close');
			          }}
		});			

		$("#regConfirmForm").dialog({
		    title: "Confirm email address",
			autoOpen: false,
			draggable: false,
			height: 200,
			width: 450,
			modal: true,
			buttons: { 'Close': function() {
			          	$(this).dialog('close');
					window.location.reload( false ); 
			          }}
		});			
				
		$("#sendAuthCodeA").click( function() {
				sendAuthCode();
		});

		$("#signUpLink").click( function() {
			$.ajax({
				url: ajaxURLs['getCaptcha'],
				success: function(data) {
					document.getElementById("captchaFieldDiv").innerHTML = data.responseText;
				},
				error: function(data) {
					document.getElementById("captchaFieldDiv").innerHTML = data.responseText;
				}
			});

			$('#signUpForm').dialog('open');
		});
			
		$("#signInLink").click( function() {
			$('#signInForm').dialog('open');
		});
			
	});


