$(document).ready(function() {
  if($('#victim_details').length == 1) {
    $('#victim_details').parent().append('<p><a href="javascript:// Choose a different victim" id="refresh_victim" rel="'+$('input#VictimId').val()+'">Choose a different victim</a></p>');

    $('#previous_victim').live('click',function(){
      $.get('/guardian/'+$(this).attr('rel'),null,function($data){
        $('#victim_details').fadeOut('normal',function(){
          $('#victim_details').html($data).fadeIn();

          if($previous_id!=undefined){
            $('#refresh_victim').attr('rel',$('input#VictimId').val());
            if($('#previous_victim').length==0){
              $('#refresh_victim').before('<a href="javascript:// Choose a different victim" id="previous_victim" rel="'+$previous_id+'">&lt;&lt; Previous victim</a> | ')
            }
            else {
              $('#previous_victim').attr('rel',$previous_id);
            }
          }
        });
      });
    });

    $('#refresh_victim').click(function(){
      $.get('/guardian',{
        prev_id : $(this).attr('rel')
      },function($data){
        $('#victim_details').fadeOut('normal',function(){
          $('#victim_details').html($data).fadeIn();

          if($previous_id!=undefined){
            $('#refresh_victim').attr('rel',$('input#VictimId').val());
            if($('#previous_victim').length==0){
              $('#refresh_victim').before('<a href="javascript:// Choose a different victim" id="previous_victim" rel="'+$previous_id+'">&lt;&lt; Previous victim</a> | ')
            }
            else {
              $('#previous_victim').attr('rel',$previous_id);
            }
          }
        });
      });
    });
  }
});

jQuery.fn.validate = function() {
  $form = this;

  if($form.length==1) {
    // On Submit
    $form.submit(function(){
      $errors = [];
      $i=0;

      $form.find('span.input_error').remove();

      $form.find(':input').css('outline','').each(function() {
        $msg = $(this).validate_field();

        if($msg!='') {
          $errors[$i++] = $msg;
          $(this).css('outline','solid 1px #EE0000');
          $(this).parent().append(['<span class="input_error">',$msg,'</span>'].join(''));
        }
      });

      if($errors.length > 0) {
        alert(['You have the following errors:',$errors.join("\n- ")].join("\n\n- "));
        return false;
      }

      return true;
    });

    // On blur
    $form.find(':input').blur(function(){
      $msg = $(this).validate_field();

      $(this).css('outline','');
      $(this).parent().find('span.input_error').remove();

      if($msg!='') {
        $(this).css('outline','solid 1px #EE0000');
        $(this).parent().append(['<span class="input_error">',$msg,'</span>'].join(''));
      }
    });

  }
}

jQuery.fn.validate_field = function() {
  $field = this;
  $msg = '';
  $label = $field.parent().children('label').eq(0).text();

  if($label.trim()=='') {
    $label = $field.attr('title');
  }
  if($label.trim()=='') {
    $label = $field.attr('name');
  }


  if($field.val().trim() == '') {
    if($field.parent().hasClass('required')) {
      $msg = [$label, 'cannot be empty.'].join(' ');
    }
  }
  else {
    if($field.parent().hasClass('email')) {
      if(!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test($field.val())) {
        $msg = [$label, 'is not a valid email address.'].join(' ');
      }
    }
    if($field.parent().hasClass('phone')) {
      if(!/^[\d\s]+$/.test($field.val())) {
        $msg = [$label, 'is not a valid telephone number.'].join(' ');
      }
    }
    if($field.parent().hasClass('zip')) {
      if(!/[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2}/.test($field.val())) {
        $msg = [$label, 'is not a valid post code.'].join(' ');
      }
    }
  }

  return $msg;
}
