var nl = true;

$(document).ready(function() {
  input_text_labels();

  if ($('form#inschrijven').length > 0) {
    $.cookie('ochtendsessie', $('input[name=ochtendsessie]').val(), { path: '/' });
    $.cookie('middagsessie',  $('input[name=middagsessie]').val(), { path: '/' });
    $.cookie('code',  $('input[name=code]').val(), { path: '/' });
  } 
  
  nl = ($('body.english').length == 0);

  $('input:text.relatienummer, input:text.rekeningnummer').keydown(function(e) {
    return (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 96 && e.keyCode <= 105 || e.keyCode == 8 || e.keyCode == 37 ||e.keyCode == 39); // 1,2,3,4,5,6,7,8,9, backspace, arrow left/right
  })

  // show/hide relatienummer
  $('form#inschrijven input#lidpvda_ja').click(function() {
    $('#lidpvda_ja_label').text(nl ? 'Ja, relatienummer: ' : 'Yes, relation number: ');
    $('input.text[name=relatienummer]').show();
  });
  $('form#inschrijven input#lidpvda_nee').click(function() {
    $('#lidpvda_ja_label').text(nl ? 'Ja' : 'Yes');
    $('input.text[name=relatienummer]').hide();
  });

  // klik op label werkt ook
  $('div.radiogroup span').click(function() {
    $(this).prev('input.radio').click();
  });
  
  $('div.checkbox span').click(function() {
    $(this).prev('input.checkbox').click();
  });
  
  // form submit - validate!
  $('body.inschrijven form').submit(validate);
  
  $('input.text').focus(function() { $(this).removeClass('error') });
  $('input.radio').click(function() { $(this).parent('div').removeClass('error') });
});

function validate() {
  var errmsg = [];

  $('div.required, form#inschrijven input.required:visible').each(function() {
    var name  = $(this).attr('name');
    var title = $(this).attr('title');
    var error = $(this).attr('errortitle');
    var val   = $(this).val() || $('input:hidden', this).val() || $('input:radio:checked', this).length;
    if (val == '' || val == title) {
      $(this).addClass('error');
      errmsg.push(error || title || name);
    }
  });
  var email = $('input.email').val();
  if (errmsg.length == 0 && !isValidEmailAddress(email)) {
    $('input.email').addClass('error');
    errmsg.push('email');
  }
  var postcode = $('input.postcode').val();
  if (errmsg.length == 0 && nl && postcode.search(/\d\d\d\d\s*[a-zA-Z]{2}/) == -1) {
    $('input.postcode').addClass('error');
    errmsg.push('postcode');
    $('label.postcode').text('onjuiste postcode');
  }
  var telefoon = $('input.telefoon').val();
  if (errmsg.length == 0 && telefoon == '') {
    $('input.telefoon').addClass('error');
    errmsg.push('telefoon');
  }
  var gebdatum = $('input.gebdatum').val();
  if (errmsg.length == 0 && nl && gebdatum.search(/\d\d-\d\d-\d\d\d\d/) == -1) {
    $('input.gebdatum').addClass('error');
    errmsg.push('geboortedatum');
    $('label.gebdatum').text('bijvoorbeeld 02-05-1964');
  }
  var rekeningnummer = $('input.rekeningnummer').val();
  if (errmsg.length == 0 && nl && rekeningnummer.length == 0) {
    $('input.rekeningnummer').addClass('error');
    errmsg.push('rekeningnummer');
    $('label.rekeningnummer').text('ongeldig rekeningnummer');
  }
  if (errmsg.length > 0) {
    $('#errmsg').text((nl ? 'Fout: vul ook de volgende velden in: ' : 'Error: fill in these fields: ') + errmsg.join(', '));
    return false;
  }
  return true;
}

function isValidEmailAddress(emailAddress) {
  var pattern = new   RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
  return pattern.test(emailAddress);
}

function input_text_labels() {
  $('input.text').each(function() {
    var defvalue = $(this).attr('title');
    if($.trim(this.value) == "" || this.value == defvalue) {
      this.value = defvalue;
      $(this).addClass('dimmed');
    }

    $(this).focus(function() {
      if(this.value == defvalue) {
        this.value = "";
        $(this).removeClass('dimmed');
        //$(this).removeClass('required');
      }
    });
    
    $(this).blur(function() {
      if($.trim(this.value) == "")
        this.value = defvalue;
      if(this.value == defvalue)
        $(this).addClass('dimmed');
    });
  });
  
}

