var time_pc;

var descriptions = new Array('Can you tell us what your name is ?',
                            'And now, what is your lastname ?',
                            'Your email address will be used as a login on TheOpeningHours.co.uk. We never share your email address.',
                            'Your password has to be at least 4 characters long.',
                            'The postcode will help us to give you accurate results for your area. We never share it.');

function verificateName(value, element) {
  if(value == '') {
    document.getElementById('img-'+element.id).style.display = 'none';
    document.getElementById('error').style.display = 'none';
  }
  else if(empty(value)) {
    document.getElementById('img-'+element.id).setAttribute('src', racine+'/css/images/login.gif');

    blockCleaner('error');

    document.getElementById('error').style.display = 'block';
    document.getElementById('error').appendChild(document.createTextNode('The first and last name must not be empty.'));

    document.getElementById('img-'+element.id).style.display = 'inline';
  }
  else {
    var ilegal = false;
    var i;
    var regex = /[a-zA-Z]/;

    for(i = 0; i < value.length && !ilegal; i++) {
      if(!regex.test(value.substr(i, 1)) && value.substr(i, 1) != ' ' && value.substr(i, 1) != '-')
        ilegal = true;
    }

    if(ilegal) {
      document.getElementById('img-'+element.id).setAttribute('src', racine+'/css/images/login.gif');

      blockCleaner('error');

      document.getElementById('error').style.display = 'block';
      document.getElementById('error').appendChild(document.createTextNode('Use only letters, spaces and -.'));
    }
    else {
      document.getElementById('img-'+element.id).setAttribute('src', racine+'/css/images/welcome.gif');
      document.getElementById('error').style.display = 'none';
    }

    document.getElementById('img-'+element.id).style.display = 'inline';
  }
}

function showInfo(id) {
  blockCleaner('description');
  document.getElementById('description').appendChild(document.createTextNode(descriptions[id]));
}

function verificateMail(value, element) {
  var regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$/;

  if(value == '') {
    document.getElementById('img-'+element.id).style.display = 'none';
    document.getElementById('error').style.display = 'none';
  }
  else if(regex.test(value)) {
    document.getElementById('img-'+element.id).setAttribute('src', racine+'/css/images/welcome.gif');
    document.getElementById('error').style.display = 'none';
    document.getElementById('img-'+element.id).style.display = 'inline';
  }
  else {
    setTimeout('giveFocus(\''+element.id+'\');', 30);
    document.getElementById('img-'+element.id).setAttribute('src', racine+'/css/images/login.gif');

    blockCleaner('error');

    setTimeout('document.getElementById(\'error\').style.display = \'block\';', 100);
    document.getElementById('error').appendChild(document.createTextNode('This adress is not a valid mail adress.'));
    document.getElementById('img-'+element.id).style.display = 'inline';
  }
}

function verificatePwd(value, element) {
  if(value == '') {
    document.getElementById('img-'+element.id).style.display = 'none';
    document.getElementById('error').style.display = 'none';
  }
  else if(empty(value)) {
    document.getElementById('img-'+element.id).setAttribute('src', racine+'/css/images/login.gif');

    blockCleaner('error');

    setTimeout('document.getElementById(\'error\').style.display = \'block\';', 100);
    document.getElementById('error').appendChild(document.createTextNode('Your password must not contain spaces.'));
    document.getElementById('img-'+element.id).style.display = 'inline';
  }
  else if(value.length < 4) {
    document.getElementById('img-'+element.id).setAttribute('src', racine+'/css/images/login.gif');

    blockCleaner('error');

    setTimeout('document.getElementById(\'error\').style.display = \'block\';', 100);
    document.getElementById('error').appendChild(document.createTextNode('Your password must be longer.'));
    document.getElementById('img-'+element.id).style.display = 'inline';
  }
  else {
    document.getElementById('img-'+element.id).setAttribute('src', racine+'/css/images/welcome.gif');
    document.getElementById('error').style.display = 'none';
    document.getElementById('img-'+element.id).style.display = 'inline';
  }
}

function verificatePwd2(value, element) {
  if(value == '') {
    document.getElementById('img-'+element.id).style.display = 'none';
    document.getElementById('error').style.display = 'none';
  }
  else if(empty(value)) {
    document.getElementById('img-'+element.id).setAttribute('src', racine+'/css/images/login.gif');

    blockCleaner('error');

    setTimeout('document.getElementById(\'error\').style.display = \'block\';', 100);
    document.getElementById('error').appendChild(document.createTextNode('Your password must not contain spaces.'));
    document.getElementById('img-'+element.id).style.display = 'inline';
  }
  else if(value.length < 4) {
    document.getElementById('img-'+element.id).setAttribute('src', racine+'/css/images/login.gif');

    blockCleaner('error');

    setTimeout('document.getElementById(\'error\').style.display = \'block\';', 100);
    document.getElementById('error').appendChild(document.createTextNode('Your password must be longer.'));
    document.getElementById('img-'+element.id).style.display = 'inline';
  }
  else {
    if(value == document.getElementById('pwd').value) {
      document.getElementById('img-'+element.id).setAttribute('src', racine+'/css/images/welcome.gif');
      document.getElementById('error').style.display = 'none';
      document.getElementById('img-'+element.id).style.display = 'inline';
    }
    else {
      document.getElementById('img-'+element.id).setAttribute('src', racine+'/css/images/login.gif');

      blockCleaner('error');

      setTimeout('document.getElementById(\'error\').style.display = \'block\';', 100);
      document.getElementById('error').appendChild(document.createTextNode('Your passwords are not identical.'));
      document.getElementById('img-'+element.id).style.display = 'inline';
    }
  }
}

function listPC(value) {
  blockCleaner('list-pc');

  var option = document.createElement('option');
  option.setAttribute('value', 'null');
  option.appendChild(document.createTextNode('-'));
  document.getElementById('list-pc').appendChild(option);

  lpc = createRequest();
  lpc.open('post', racine+'/js/list_pc.php', true);
  lpc.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  lpc.onreadystatechange = listPCControl;
  lpc.send('value='+value);
}

function listPCControl() {
  if(lpc.readyState == 4) {
    if(lpc.status == 200) {
      if(lpc.responseText != 'No city could be found for this postcode.') {
        var select = document.getElementById('list-pc');

        var response = lpc.responseText.split('*');

        var i = 1;
        while(i < response.length- 1) {
          var caracteristic = response[i].split('#');

          var option = document.createElement('option');
          option.setAttribute('value', caracteristic[0] + ' - ' + caracteristic[1]);
          option.appendChild(document.createTextNode(caracteristic[0]));

          select.appendChild(option);
          i++;
        }

        select.style.display = 'none';
        select.style.display = 'inline';
      }
      else
        alert('No city could be found for this postcode.');
    }
  }
}

function controlForm(type) {
  signup_stop = true;
  blockCleaner('error');

  document.getElementById('fname').setAttribute('readonly', 'readonly');
  document.getElementById('lname').setAttribute('readonly', 'readonly');
  document.getElementById('mail').setAttribute('readonly', 'readonly');
  document.getElementById('pwd').setAttribute('readonly', 'readonly');
  document.getElementById('pwd2').setAttribute('readonly', 'readonly');
  document.getElementById('male').setAttribute('disabled', 'disabled');
  document.getElementById('female').setAttribute('disabled', 'disabled');
  document.getElementById('individual').setAttribute('disabled', 'disabled');
  document.getElementById('business').setAttribute('disabled', 'disabled');
  document.getElementById('years').setAttribute('disabled', 'disabled');
  document.getElementById('months').setAttribute('disabled', 'disabled');
  document.getElementById('days').setAttribute('disabled', 'disabled');
  document.getElementById('foreign').setAttribute('disabled', 'disabled');
  document.getElementById('uk').setAttribute('disabled', 'disabled');
  document.getElementById('begin-postcode').setAttribute('disabled', 'disabled');
  document.getElementById('list-pc').setAttribute('disabled', 'disabled');

  var error = '';

  if(empty(document.getElementById('fname').value)) {
    error = '- Firstname is empty<br/>';
  }

  var ilegal = false;
  var i;
  var regex = /[a-zA-Z]/;

  for(i = 0; i < document.getElementById('fname').value.length && !ilegal; i++) {
    if(!regex.test(document.getElementById('fname').value.substr(i, 1)) && document.getElementById('fname').value.substr(i, 1) != ' ' && document.getElementById('fname').value.substr(i, 1) != '-')
      ilegal = true;
  }

  if(ilegal) {
    if(error == '')
      error = '- Firstname contains invalid characters<br/>';
    else
      error += '- Firstname contains invalid characters<br/>';
  }

  if(empty(document.getElementById('lname').value)) {
    if(error == '')
      error = '- Lastname is empty<br/>';
    else
      error += '- Lastname is empty<br/>';
  }

  ilegal = false;

  for(i = 0; i < document.getElementById('lname').value.length && !ilegal; i++) {
    if(!regex.test(document.getElementById('lname').value.substr(i, 1)) && document.getElementById('lname').value.substr(i, 1) != ' ' && document.getElementById('lname').value.substr(i, 1) != '-')
      ilegal = true;
  }

  if(ilegal) {
    if(error == '')
      error = '- Lastname contains invalid characters<br/>';
    else
      error += '- Lastname contains invalid characters<br/>';
  }

  regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$/;

  if(!regex.test(document.getElementById('mail').value)) {
    if(error == '')
      error = '- Email address is incorrect<br/>';
    else
      error += '- Email address is incorrect<br/>';
  }

  vm = createRequest();

  if(type != 'edit')
    vm.open('post', racine+'/js/mail_control.php', true);
  else
    vm.open('post', racine+'/js/mail_control_edit.php', true);

  vm.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  vm.onreadystatechange = registrationControl;
  vm.send('mail='+document.getElementById('mail').value+'&error='+error);
}

function registrationControl() {
if(vm.readyState == 4 && vm.status == 200) {
  var response = vm.responseText.split('/');
  var error = response[0];

  if(response[1] != '1') {
    if(error == '')
      error = '- This email address is already being used<br/>';
    else
      error += '- This email address is already being used<br/>';
  }

  if(response[2] == 'edit') {
    if(!empty(document.getElementById('pwd').value)) {
      if(empty(document.getElementById('pwd2').value)) {
        if(error == '')
          error = '- Please re-enter your new password<br/>';
        else
          error += '- Please re-enter your new password<br/>';
      }
      else if(document.getElementById('pwd').value != document.getElementById('pwd2').value) {
        if(error == '')
          error = '- Passwords are not identical<br/>';
        else
          error += '- Passwords are not identical<br/>';
      }
    }
  }
  else {
    if(empty(document.getElementById('pwd').value) || empty(document.getElementById('pwd2').value)) {
      if(error == '')
        error = '- Passwords (or one of them) are empty<br/>';
      else
        error += '- Passwords (or one of them) are empty<br/>';
    }
    else if(document.getElementById('pwd').value.length < 4 || document.getElementById('pwd2').value.length < 4) {
      if(error == '')
        error = '- Passwords must be longer<br/>';
      else
        error += '- Passwords must be longer<br/>';
    }
    else if(document.getElementById('pwd').value != document.getElementById('pwd2').value) {
      if(error == '')
        error = '- Passwords are not identical<br/>';
      else
        error += '- Passwords are not identical<br/>';
    }
  }

  if(!document.getElementById('male').checked && !document.getElementById('female').checked) {
    if(error == '')
      error = '- Please select your gender<br/>';
    else
      error += '- Please select your gender<br/>';
  }
  
  if(!document.getElementById('individual').checked && !document.getElementById('business').checked) {
    if(error == '')
      error = '- You haven\'t chosen your status<br/>';
    else
      error += '- You haven\'t chosen your status<br/>';
  }

  if(!document.getElementById('foreign').checked && document.getElementById('list-pc').value == 'null') {
    if(error == '')
      error = '- You haven\'t chosen your postcode<br/>';
    else
      error += '- You haven\'t chosen your postcode<br/>';
  }

  if(error == '') {
    document.getElementById('fname').removeAttribute('readonly');
    document.getElementById('lname').removeAttribute('readonly');
    document.getElementById('mail').removeAttribute('readonly');
    document.getElementById('pwd').removeAttribute('readonly');
    document.getElementById('pwd2').removeAttribute('readonly');
    document.getElementById('male').removeAttribute('disabled');
    document.getElementById('female').removeAttribute('disabled');
    document.getElementById('individual').removeAttribute('disabled');
    document.getElementById('business').removeAttribute('disabled');
    document.getElementById('years').removeAttribute('disabled');
    document.getElementById('months').removeAttribute('disabled');
    document.getElementById('days').removeAttribute('disabled');
    document.getElementById('days').removeAttribute('disabled', 'disabled');
    document.getElementById('foreign').removeAttribute('disabled', 'disabled');
    document.getElementById('uk').removeAttribute('disabled', 'disabled');
    document.getElementById('begin-postcode').removeAttribute('disabled', 'disabled');
    document.getElementById('list-pc').removeAttribute('disabled', 'disabled');

    document.getElementById('signup-form').submit();
  }
  else {
    alert('Hmmm... There are some mistakes... Let\'s try another time !');

    setTimeout('document.getElementById(\'error\').style.display = \'block\';', 100);
    document.getElementById('error').innerHTML = error;

    document.getElementById('fname').removeAttribute('readonly');
    document.getElementById('lname').removeAttribute('readonly');
    document.getElementById('mail').removeAttribute('readonly');
    document.getElementById('pwd').removeAttribute('readonly');
    document.getElementById('pwd2').removeAttribute('readonly');
    document.getElementById('male').removeAttribute('disabled');
    document.getElementById('female').removeAttribute('disabled');
    document.getElementById('individual').removeAttribute('disabled');
    document.getElementById('business').removeAttribute('disabled');
    document.getElementById('years').removeAttribute('disabled');
    document.getElementById('months').removeAttribute('disabled');
    document.getElementById('days').removeAttribute('disabled');
    document.getElementById('foreign').removeAttribute('disabled', 'disabled');
    document.getElementById('uk').removeAttribute('disabled', 'disabled');
    document.getElementById('begin-postcode').removeAttribute('disabled', 'disabled');
    document.getElementById('list-pc').removeAttribute('disabled', 'disabled');
  }
}

signup_stop = false;
}

function newList(valeur) {
  clearTimeout(time_pc);
  time_pc = setTimeout('listPC(\''+valeur+'\');', 100);
  lpc.abort();
}