﻿
Base.UI.Signup = Class.create();
Base.UI.CreateBlog = Class.create();

Base.UI.Signup.init = function()
{
/*
   var username = $id('_TextUsername', null, 'input');
   var email = $id('_TextEmail', null, 'input');
   var verifyEmail = $id('_TextVerifyEmail', null, 'input');
   var pass = $id('_TextPassword', null, 'input');
   var passConfirm = $id('_TextPasswordConfirm', null, 'input');
   var firstName = $id('_TextFirstname', null, 'input');
   var lastName = $id('_TextLastname', null, 'input');
   var month = $id('_SelectMonth', null, 'select');
   var day = $id('_SelectDay', null, 'select');
   var year = $id('_SelectYear', null, 'select');
   var serial = $id('_TextSerial', null, 'input');

   
   Sd.Common.addEvent(username, 'focus', Base.UI.Signup.focus, '');
   Sd.Common.addEvent(username, 'blur', Base.UI.Signup.blur, '');
   Sd.Common.addEvent(email, 'focus', Base.UI.Signup.focus, '');
   Sd.Common.addEvent(email, 'blur', Base.UI.Signup.blur, '');
   Sd.Common.addEvent(verifyEmail, 'focus', Base.UI.Signup.focus, '');
   Sd.Common.addEvent(verifyEmail, 'blur', Base.UI.Signup.blur, '');
   Sd.Common.addEvent(pass, 'focus', Base.UI.Signup.focus, '');
   Sd.Common.addEvent(pass, 'blur', Base.UI.Signup.blur, '');
   Sd.Common.addEvent(passConfirm, 'focus', Base.UI.Signup.focus, '');
   Sd.Common.addEvent(passConfirm, 'blur', Base.UI.Signup.blur, '');
   Sd.Common.addEvent(firstName, 'focus', Base.UI.Signup.focus, '');
   Sd.Common.addEvent(firstName, 'blur', Base.UI.Signup.blur, '');
   Sd.Common.addEvent(lastName, 'focus', Base.UI.Signup.focus, '');
   Sd.Common.addEvent(lastName, 'blur', Base.UI.Signup.blur, '');
   //Sd.Common.addEvent(month, 'focus', Base.UI.Signup.focus, '');
   //Sd.Common.addEvent(month, 'blur', Base.UI.Signup.blur, '');                  
   //Sd.Common.addEvent(day, 'focus', Base.UI.Signup.focus, '');
   //Sd.Common.addEvent(day, 'blur', Base.UI.Signup.blur, '');     
   //Sd.Common.addEvent(year, 'focus', Base.UI.Signup.focus, '');
   //Sd.Common.addEvent(year, 'blur', Base.UI.Signup.blur, '');  
   Sd.Common.addEvent(serial, 'focus', Base.UI.Signup.focus, '');
   Sd.Common.addEvent(serial, 'blur', Base.UI.Signup.blur, '');  


   
   username.onkeypress = Sd.UI.noEnter;
   email.onkeypress = Sd.UI.noEnter;
   verifyEmail.onkeypress = Sd.UI.noEnter;
   pass.onkeypress = Sd.UI.noEnter;
   passConfirm.onkeypress = Sd.UI.noEnter;
   firstName.onkeypress = Sd.UI.noEnter;
   lastName.onkeypress = Sd.UI.noEnter;
   serial.onkeypress = Sd.UI.noEnter;
   */
}

Base.UI.Signup.focus = function()
{

   var info = $id('info', this.parentNode);
   info.visible();

}

Base.UI.Signup.blur = function()
{
   var info = $id('info', this.parentNode);
   info.invisible();
}

Base.UI.Signup.validate = function()
{

   var username = $id('_TextUsername', null, 'input');
   var email = $id('_TextEmail', null, 'input');
   var verifyEmail = $id('_TextVerifyEmail', null, 'input');
   var pass = $id('_TextPassword', null, 'input');
   var passConfirm = $id('_TextPasswordConfirm', null, 'input');
   var firstName = $id('_TextFirstname', null, 'input');
   var lastName = $id('_TextLastname', null, 'input');
   var month = $id('_SelectMonth', null, 'select');
   var day = $id('_SelectDay', null, 'select');
   var year = $id('_SelectYear', null, 'select');

	var error = $id('_Error');
	var result = true;
	
   if(error)
   {
      error.parentNode.removeChild(error);
      error = null;
   }
	
   if(Sd.Validate.requireValue(username) == false)
   {
	   result = false;
	   Base.UI.Signup.addError('Please enter a Username before continuing.');
   }
   if(Sd.Validate.requireValue(email) == false || Sd.Validate.isEmail(email) == false)
   {
	   result = false;
	   Base.UI.Signup.addError('Please enter your (valid) Email Address before continuing.');
   }
   if(email.value != verifyEmail.value)
   {
	   result = false;
	   Base.UI.Signup.addError('The emails you entered to not match.  Please check to make sure you typed them in correctly.');
   }
   if(Sd.Validate.requireValue(pass) == false)
   {
	   result = false;
	   Base.UI.Signup.addError('Please enter a Password before continuing.');
   }
   if(Sd.Validate.requireValue(passConfirm) == false)
   {
	   result = false;
	   Base.UI.Signup.addError('Please confirm your Password before continuing.');
   }
   if(Sd.Validate.requireValue(firstName) == false)
   {
	   result = false;
	   Base.UI.Signup.addError('Please enter your First Name before continuing.');
   }
   if(Sd.Validate.requireValue(lastName) == false)
   {
	   result = false;
	   Base.UI.Signup.addError('Please enter your Last Name before continuing.');
   }
   /*
   if(Sd.Validate.requireValue(month) == false)
   {
	   result = false;
	   Base.UI.Signup.addError('Please select your Birthday Month before continuing.');
   }
   if(Sd.Validate.requireValue(day) == false)
   {
	   result = false;
	   Base.UI.Signup.addError('Please select your Birthday Day before continuing.');
   }
   if(Sd.Validate.requireValue(year) == false)
   {
	   result = false;
	   Base.UI.Signup.addError('Please select your Birthday Year before continuing.');
   }
   */
   if(pass.value.length < 8)
   {
      result = false;
      Base.UI.Signup.addError('Please enter at least 8 characters for your password.');
   }
   if(!/.*[1-9].*/.test(pass.value))
   {
      result = false;
      Base.UI.Signup.addError('Please enter at least 1 numerical character for your password.');
   }
   if(Sd.Validate.isMatch(pass, passConfirm) == false)
   {
	   result = false;
	   Base.UI.Signup.addError('Please re-confirm your Password before continuing. They must match.');
   }
	
	if(result == true)
	{
	   Sd.UI.disableButton($id('_ButtonRegister', null, 'input'));
	   return true;
	}
   else
   {
      var error = $id('_Error');
      scroll(0, error._bounds().top - 10);
      return false;
   }
}

Base.UI.Signup.addError = function(message)
{
	var error = $id('_Error');
	if(!error)
	{
      var form = $id('_SignupForm')
	   error = $new('div', '_Error', 'error');
	   form.insertBefore(error, form._children()[1]);
	}	
	if(error.innerHTML.trim() != '') error.innerHTML += '\n<br/>';
	error.innerHTML += '&bull;&nbsp;&nbsp;' + message;
}

Base.UI.CreateBlog.init = function()
{
   var subdomain = $id('_TextSubdomain', null, 'input');
   var name = $id('_TextName', null, 'input');
   var desc = $id('_TextDesc', null, 'textarea');
   
   Sd.Common.addEvent(subdomain, 'focus', Base.UI.Signup.focus, '');
   Sd.Common.addEvent(subdomain, 'blur', Base.UI.Signup.blur, '');
   Sd.Common.addEvent(name, 'focus', Base.UI.Signup.focus, '');
   Sd.Common.addEvent(name, 'blur', Base.UI.Signup.blur, '');
   Sd.Common.addEvent(desc, 'focus', Base.UI.Signup.focus, '');
   Sd.Common.addEvent(desc, 'blur', Base.UI.Signup.blur, '');

   subdomain.onkeypress = Base.UI.CreateBlog.checkSubdomain;
   name.onkeypress = Sd.UI.noEnter;
}

function catchEnter(e)
{
   if(!e && window.event) e = window.event;
   if(!e) return true;
   var key = e.keyCode ? e.keyCode : e.which;
   var result = key != 13;

   if(result == false)
   {
      e.cancel = true;
      e.returnValue = false;
      if(e.preventDefault) e.preventDefault();
   }

   return result;
}

Base.UI.CreateBlog.checkSubdomain = function(e)
{
   if(!e && window.event) e = window.event;
   if(!e) return true;
   var key = e.keyCode ? e.keyCode : e.which;

   if(key == 13)
   {
      e.cancel = true;
      e.returnValue = false;
      if(e.preventDefault) e.preventDefault();
      return false;
   }   

   var result = true;
   var keyChar = String.fromCharCode(key);
   var subdomain = $id('_TextSubdomain', null, 'input');
  
   if(!(/^[\da-z\-]*$/i.test(keyChar))) result = false;
   if (key == null || key < 47) result = true;
   if(subdomain.value.length == 0 && keyChar == '-') result = false;
   if(subdomain.value.substring(0, 1) == '-') subdomain.value = subdomain.value.substring(1);
   
   if(result == false)
   {
      e.cancel = true;
      e.returnValue = false;
      if(e.preventDefault) e.preventDefault();
      return false;
   }  
   
   return true;     	
}

Base.UI.CreateBlog.validate = function()
{
   var subdomain = $id('_TextSubdomain', null, 'input');
   var name = $id('_TextName', null, 'input');
   var desc = $id('_TextDesc', null, 'textarea');
   var result = true;

   if(Sd.Validate.requireValue(subdomain) == false)
   {
	   result = false;
	   Base.UI.CreateBlog.addError('Please a Blog Site Address before continuing.');
   }
   if(subdomain.value.substring(0, 1) == '-')
   {
	   result = false;
	   Base.UI.CreateBlog.addError('The Blog Site Address cannot begin with a hyphen ( - ).');
   }   
   if(Sd.Validate.requireValue(name) == false)
   {
	   result = false;
	   Base.UI.CreateBlog.addError('Please enter a Blog Name before continuing.');
   }
   if(Sd.Validate.requireValue(desc) == false)
   {
	   result = false;
	   Base.UI.CreateBlog.addError('Please enter your Blog Description before continuing.');
   }

	if(result == true)
	{
	   Sd.UI.disableButton($id('_ButtonCreateBlog', null, 'input'));
	   return true;
	}
   else
   {
      var error = $id('_Error');
      scroll(0, error._bounds().top - 10);
      return false;
   }
}

Base.UI.CreateBlog.addError = function(message)
{
	var error = $id('_Error');
	if(!error)
	{
      var form = $id('_CreateBlogForm')
	   error = $new('div', '_Error', 'error');
	   form.insertBefore(error, form._children()[1]);
	}	
	if(error.innerHTML.trim() != '') error.innerHTML += '\n<br/>';
	error.innerHTML += '&bull;&nbsp;&nbsp;' + message;
}