// ajax submit
jQuery.fn.submitAjax = function(opt) {
  var form = $(this);

  form.find('input[type=submit]').attr('disabled', true);
  var btn = opt && opt.btn ? opt.btn : form.find('input[type=submit]').eq(0);
  btn.data('val', btn.attr('value')).attr('value', 'Please wait...');
  form.data('opt', opt);

  $.ajax({
    form: form,
    url: opt && opt.url ? opt.url : form.attr('action'),
    data: form.serialize(),
    type: 'POST',
		success: function(data) {
      var opt = this.form.data('opt');

      this.form.find('input[type=submit]').attr('disabled', false);
      var btn = opt && opt.btn ? opt.btn : this.form.find('input[type=submit]').eq(0);
      btn.attr('value', btn.data('val'));

      var successRegexp = new RegExp(opt && opt.successRegexp ? opt.successRegexp : '^ok$');
      if (data.match(successRegexp)) {
        if (this.form.data('opt') && this.form.data('opt').success)
          this.form.data('opt').success(this.form, data);
      }
      else {
        if (this.form.data('opt') && this.form.data('opt').failure)
          this.form.data('opt').failure(this.form);
        alert(data);
      }
    }
  })
};