  var fader1 = null;
  var fader2 = null;

  function validate()
  {
    $(".error").addClass("noShow");
    var oneFailed = false;
    //Reverse order so the focus starts from the top of the page
    if (!validateSecurityCheck(true)) 
      oneFailed = true;
    if (!validateAcceptTerms()) 
      oneFailed = true;
    if (!validateAccountIDBetfair(true)) 
      oneFailed = true;
    if (!validateAccountIDIASBet(true)) 
      oneFailed = true;
    if (!validateSuburb(true))
      oneFailed = true;
    if (!validateEmailAddress(true)) 
      oneFailed = true;
    if (!validatePasswords(true)) 
      oneFailed = true;
    if (!validateUsername(true)) 
      oneFailed = true;
    if (!validateFirstName(true)) 
      oneFailed = true;
    if (!validateLastName(true)) 
      oneFailed = true;
    return !oneFailed;
  }

  function validateFirstName(doFocus)
  {
    var field = $("#txtFirstName");
    var filter = /^([a-zA-Z_\.\-\'])+$/;
    if (isEmpty(field.val()))
    {
      showErrorMessage('FirstNameError','txtFirstName','Please enter a first name');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else if (!filter.test(field.val())) 
    {
      showErrorMessage('FirstNameError','txtFirstName','Your name cannot contain symbols or numbers');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else
      hideErrorMessage('FirstNameError','txtFirstName');
    return true;
  }

  function validateLastName(doFocus)
  {
    var field = $("#txtLastName");
    var filter = /^([a-zA-Z_\.\-\'])+$/;
    if (isEmpty(field.val()))
    {
      showErrorMessage('LastNameError','txtLastName','Please enter a last name (Surname)');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else if (!filter.test(field.val())) 
    {
      showErrorMessage('LastNameError','txtLastName','Your name cannot contain symbols or numbers');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else
      hideErrorMessage('LastNameError','txtLastName');
    return true;
  }


  function validateSuburb(doFocus)
  {
    var field = $("#txtSuburbError");
    var filter = /^([a-zA-Z\s])+$/;
    if (isEmpty(field.val()))
    {
      showErrorMessage('SuburbError','txtSuburb','Please enter a suburb or town');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else if (!filter.test(field.val())) 
    {
      showErrorMessage('SuburbError','txtSuburb','Your suburb cannot contain symbols or numbers');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else
      hideErrorMessage('SuburbError','txtSuburb');
    return true;
  }

  function validateUsername(doFocus)
  {
    var field = document.getElementById('txtRegisterUsername');
    var filter = /^([a-zA-Z0-9_\.\-])+$/;
    var filter2 = /^([0-9])+$/;
    if (isEmpty(field.value))
    {
      showErrorMessage('UsernameError','txtRegisterUsername','Please enter a username');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else if (!filter.test(field.value)) 
    {
      showErrorMessage('UsernameError','txtRegisterUsername','Your username cannot contain symbols or spaces and must be between 2 and 12 characters.');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else if (filter2.test(field.value)) 
    {
      showErrorMessage('UsernameError','txtRegisterUsername','Your username must contain at least one letter.');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else if (field.value.length < 2 || field.value.length > 12)
    {
      showErrorMessage('UsernameError','txtRegisterUsername','Your username cannot contain symbols or spaces and must be between 2 and 12 characters.<br/><br/>The username ' + field.value + ' is ' + field.value.length + ' characters');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else
      hideErrorMessage('UsernameError','txtRegisterUsername');
    return true;
  }

  function validatePasswords(doFocus)
  {
    var field1 = document.getElementById('txtPassword1');
    var field2 = document.getElementById('txtPassword2');
    var filter = /^([a-zA-Z0-9_\.\-])+$/;
    if (isEmpty(field1.value))
    {
      showErrorMessage('Password1Error',new Array('txtPassword1','txtPassword2'),'Please enter a password');
      if (doFocus == true)
        field1.focus();
      return false;
    }
    else if (isEmpty(field2.value))
    {
      showErrorMessage('Password2Error',new Array('txtPassword1','txtPassword2'),'Please enter the same password again');
      if (doFocus == true)
        field1.focus();
      return false;
    }
    else if (field1.value != field2.value)
    {
      showErrorMessage('Password1Error',new Array('txtPassword1','txtPassword2'),'Your passwords do not match');
      if (doFocus == true)
        field1.focus();
      return false;
    }
    //Check to see if the password meets the security requirements
    else if (!filter.test(field1.value) || field1.value.length < 6)
    {
      showErrorMessage('Password1Error',new Array('txtPassword1','txtPassword2'),'Your password must be 6 or more characters and cannot contain spaces or symbols');
      if (doFocus == true)
        field1.focus();
      return false;
    }
    else
    {
      hideErrorMessage('Password1Error',new Array('txtPassword1','txtPassword2'));
      hideErrorMessage('Password2Error',new Array('txtPassword1','txtPassword2'));
    }
    return true;
  }

  function validateEmailAddress(doFocus)
  {
    var field = document.getElementById('txtEmailAddress');
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (isEmpty(field.value))
    {
      showErrorMessage('EmailAddressError','txtEmailAddress','Please enter an email address');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else if (!filter.test(field.value)) 
    {
      showErrorMessage('EmailAddressError','txtEmailAddress','Your email address is not valid');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else
      hideErrorMessage('EmailAddressError','txtEmailAddress');
    return true;
  }

  function validateSecurityCheck(doFocus)
  {
    var field = document.getElementById('txtCode');
    var filter = /^([a-zA-Z0-9_\.\-])+$/;
    if (isEmpty(field.value))
    {
      showErrorMessage('CodeError','txtCode','Please enter the security text you see in the image above');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else
      hideErrorMessage('CodeError','txtCode');
    return true;
  }

  function validateAccountIDBetfair(doFocus)
  {
    var field = document.getElementById('txtAccountIDBetfair');
    var filter = /^([a-zA-Z0-9_\.\-])+$/;
    if (isEmpty(field.value))
    {
      showErrorMessage('AccountIDBetfairError','txtAccountIDBetfair','Please enter your betfair username');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else if (!filter.test(field.value) || field.value.length < 6 || field.value.length > 20)
    {
      showErrorMessage('AccountIDBetfairError','txtAccountIDBetfair','This is not a valid betfair username.  Please ensure you have entered the correct username.');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else
      hideErrorMessage('AccountIDBetfairError','txtAccountIDBetfair');
    return true;
  }

  function validateAccountIDIASBet(doFocus)
  {
    var field = document.getElementById('txtAccountIDIASBet');
    var filter = /^([a-zA-Z0-9_\.\-])+$/;
    if (isEmpty(field.value))
    {
      return true;
    }
    else if (!filter.test(field.value) || field.value.length < 6 || field.value.length > 20)
    {
      showErrorMessage('AccountIDIASBetError','txtAccountIDIASBet','This is not a valid IASBet username.  Please ensure you have entered the correct username to receive the free Insider Selections or alternativly, clear this field and continue without the free offer.');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else
      hideErrorMessage('AccountIDIASBetError','txtAccountIDIASBet');
    return true;
  }

  function validateSuburb(doFocus)
  {
    var field = document.getElementById('txtSuburb');
    var filter = /^([a-zA-Z0-9_\.\-\'])+$/;
    if (isEmpty(field.value))
    {
      showErrorMessage('SuburbError','txtSuburb','Please enter your suburb/town');
      if (doFocus == true)
        field.focus();
      return false;
    }
    else
      hideErrorMessage('SuburbError','txtSuburb');
    return true;
  }

  function validateAcceptTerms()
  {
    if (!$("#cbAcceptedTerms").is(':checked'))
    {
      showErrorMessage('AcceptedTermsError','AcceptedTermsOuter','Please accept the terms and conditions');
    }
    else
      hideErrorMessage('AcceptedTermsError','AcceptedTermsOuter');
    return true;
  }

  function showErrorMessage(errorField, inputField, message)
  {
    $("#"+errorField).addClass('registerErrorField');
    $("#"+errorField).html(message);
    $("#"+errorField).removeClass('noShow');
    $("#"+inputField).addClass('registerFieldError');
  }

  function hideErrorMessage(field,inputField)
  {
    $("#"+field).addClass('noShow');
    $("#"+field).html('');
    $("#"+inputField).removeClass('registerFieldError');
  }


  function isEmpty( inputStr ) 
  { 
    if ( null == inputStr || "" == inputStr ) 
      return true; 
    else
      return false; 
  }
  
  function trackPage()
  {
    if (document.getElementById('registered') != null)
    {
      pageTracker._trackPageview("/register/Completed.html");
    }
    else
    {
      pageTracker._trackPageview("/register/Step1.html");
    }
  }

  $(document).ready(function() 
  { 
    $("#txtFirstName").focus();
    $("#btnUpdate").click(function() { 
      //undisable so the fields submit
      $("#txtReferral").attr("disabled","");
    });
  });