jQuery(function(){
  var ajaxLoader = jQuery('<img class="ajax-loader" src="images/ajax-loader.gif" alt="loading..." />');
  ajaxLoader.appendTo('body');
  jQuery('.text-field').each(function(){
    var $this = jQuery(this);
    $this.val($this.siblings('label').text()).focus(function(){
      var el = jQuery(this);
      if (el.val() == el.siblings('label').text()) {
        el.val('');
      }
    }).blur(function(){
      var el = jQuery(this);
      if (el.val() == '') {
        el.val(el.siblings('label').text());
      }
    });
  });
  jQuery('#contact form').submit(function(){
    var $this = jQuery(this);
    var submit_button = $this.find('input[type=submit]');
    jQuery('.error').val('');
    jQuery('.text-field').each(function(){
      var $this = jQuery(this);
      if ($this.val() == $this.siblings('label').text()) {
        $this.val('');
      }
    });
    submit_button.attr('disabled', 'disabled');
    ajaxLoader.insertAfter(submit_button).fadeIn();
    jQuery.post('ajax.php', {name : jQuery('#name').val(), email : jQuery('#email').val(), message : jQuery('#message').val(), nonce : jQuery('input[name=nonce]').val()}, function(response){
      switch (response.status) {
        case 'ok' :
            $this.siblings('h2').siblings().css('overflow', 'hidden').animate({height : 0}, 500);
            $this.siblings('h2').fadeOut(function(){
              jQuery(this).text("Thanks for contacting me! I'll get back to you asap!").addClass('success').fadeIn().siblings().remove();
            });
          break;
        case 'failed' :
          submit_button.attr('disabled','');
          var index, element;
          for (index in response.errors) {
            element = jQuery('#' + response.errors[index]);
            element.addClass('error').data('origValue', element.val()).focus(function(){
              var $this = jQuery(this);
              $this.val($this.data('origValue')).removeClass('error');
            }).blur(function(){
              var $this = jQuery(this);
              $this.data('origValue', $this.val());
            });
            if (response.errors[index] != 'email') {
              element.val('Your ' + response.errors[index] + ' is required');
            }
            else {
              element.val('Invalid email address');
            }
          }
          break;
      }
      ajaxLoader.fadeOut().appendTo('body');
    }, 'json');
    return false;
  });
});