function checkLength(o, n, min, max, tips) {
  if ( o.val().length > max || o.val().length < min ) {
    o.addClass('ui-state-error');
    tips.text("Length of " + n + " must be between "+min+" and "+max+".").effect("highlight",{},1500);
    return false;
  }
  return true;
}

function checkRegexp(o,regexp,n,tips) {
  if ( !( regexp.test( o.val() ) ) ) {
    o.addClass('ui-state-error');
    tips.text(n).effect("highlight",{},1500);
    return false;
  }
  return true;
}

//Registration Dialog Box
$(function() {
  var email = $("#register-dialog #email"),
	  email_confirm = $("#register-dialog #email_confirm"),
	  privacy_policy = $("#register-dialog #privacy_policy"),
	  first_name = $("#register-dialog #first_name"),
	  last_name = $("#register-dialog #last_name"),
	  allFields = $([]).add(email).add(email_confirm).add(first_name).add(last_name).add(privacy_policy),
	  tips = $("#register-dialog #validateTips");

  var dialog = $('#register-dialog');
  var panel1 = $('#register-step1');
  var panel3 = $('#register-complete'); 
  var form = $('#register-form');
  
  var show_step1 = function () {
	  dialog.dialog('option', 'title', panel1.attr('title'));
	  dialog.dialog('option', 'buttons', {'Register': do_step1, Cancel: closedlg});
	  panel1.removeClass('hidden');	  
	  panel3.addClass('hidden');
	  if (pageTracker != undefined && pageTracker != null) pageTracker._trackPageview("/register_page1");
  };

  var show_complete = function () {
	  dialog.dialog('option', 'title', panel3.attr('title'));
	  dialog.dialog('option', 'buttons', {'Close': closedlg});
	  panel1.addClass('hidden');	  
	  panel3.removeClass('hidden');	  
	  if (pageTracker != undefined && pageTracker != null) pageTracker._trackPageview("/register_complete");
	  $.get('http://www.googleadservices.com/pagead/conversion/1039486612/?label=SL6TCKrF2AEQlJ3V7wM&guid=ON&script=0');
  };

  var do_step1 = function() {
    if (form.valid()) {
      $.post("/register/create_profile.do", { email: email.val(),  
      		first_name: first_name.val(), last_name: last_name.val()}, 
  	    	function(data, textStatus) {
      			if (data.success)	show_complete();
      			else {
      				$("#register-step1 #validateTips").text(data.message).addClass("error");
      			}	
          }, "json" );
    }
  };

  var closedlg = function() 
  {
  	allFields.val('').removeClass('ui-state-error');
	  dialog.dialog('option', 'hide', 'blind');
  	dialog.dialog('close'); 
  };
  
  dialog.dialog({
    bgiframe: true,
    autoOpen: false,
    resizable: false,
    width: 550,
    modal: true,
    close: function() { allFields.val('').removeClass('ui-state-error'); }
  });

  $("#register-form").validate({
 	rules: {
	  first_name: "required",
	  last_name: "required",
	  email: { required:true, email:true, remote: "/register/check_email.do"},
	  email_confirm: { required:true, equalTo: "#register-step1 #email" },
	  privacy_policy: "required"
  },
	messages: {
		first_name: "Enter your first name.",
		last_name: "Enter your last name.",
		email: { required: "Please enter your email address.", remote: "Email address is already in use"}, 
		email_confirm: { required: "Please re-enter your email address to confirm.", equalTo: "Confirmed email is different from the email entered above." }, 
		privacy_policy: "Privacy Policy is required."
	},
  onkeyup: false
  });
  
  $('.register-link').click(function(c) {
    c.preventDefault();
  	show_step1();
    dialog.dialog('option', 'show', 'blind');
    dialog.dialog('open');
    setTimeout('$("#register-dialog #email").focus()', 500);
  });

  $("#join-form").validate({
	  rules: {
		  first_name: "required",
		  last_name: "required",
		  email: { required:true, email:true, remote: "/register/check_email.do"},
		  privacy_policy: "required"
	  },
	  messages: {
			first_name: "",
			last_name: "",
			email: { required: "", remote: "Email address is already in use"}, 
			privacy_policy: "Required."
	  },
	  onkeyup: false
  });
	  
  $("#join-form2").validate({
	  rules: {
		  first_name: "required",
		  last_name: "required",
		  email: { required:true, email:true, remote: "/register/check_email.do"},
		  privacy_policy: "required"
	  },
	  messages: {
			first_name: "",
			last_name: "",
			email: { required: "", remote: "Email address is already in use"}, 
			privacy_policy: "Required."
	  },
	  onkeyup: false
  });


});


