var submitForm = function(form_id,fade,btn_id){

  var myForm = $("#"+form_id)[0];

  if(btn_id){
    var submit_btn = $('#'+btn_id); //, "input[type='submit']");
    var submit_btn_value = submit_btn.attr("value");
    submit_btn.attr("value", "Processing...");
    submit_btn.attr("disabled", true);
  }

  $("#notify").hide();
  $("#msg").fadeOut("fast");

  //clearUnusedFields();
  $.ajax({
    type: 'POST'
    , url: myForm.action
    , dataType: 'json'
    , data: $("input,select,textarea", myForm)
    , success: function(data){
      if(data.success){
        $("#msg").css('background-color','lightgreen');
        $("#msg").text(data.msg);
        $("#msg").fadeIn("fast");
        $("#msg").fadeOut(7500);
        if(data.other && data.other.url){ window.location = data.other.url; }
      } else {
        var show_error_messages = (data.other && data.other.show_field_error_messages) ? true : false;
        var msg = show_error_messages ? '<ul style="text-align:left">' : data.msg;
        var fields = data.results;
        var cssField = null;
        for(x in fields){
          var showError = true;
          if(fields[x].error){
            if(!fields[x].required && $('#'+fields[x].name).length == 0){
              showError = false;
            }
            if(showError) {
              msg += show_error_messages ? '<li>' + fields[x].error + '</li>' : '';
              cssField = (fields[x].type=="checkbox") ? "checkbox_" + fields[x].name : fields[x].name;
              $('#'+cssField).css({'background-color' : '#FFC0CB'});
            }
          } else {
            cssField = (fields[x].type=="checkbox") ? "checkbox_" + fields[x].name : fields[x].name;
            if(fields[x].type=="text" || fields[x].type=="select") { $('#'+cssField).css({'background-color' : 'white'}); }
            else if(fields[x].type=="checkbox") { $('#'+cssField).css({'background-color' : ''}); }
          }
        }
        msg += show_error_messages ? '</ul>' : '';

        if(btn_id){
          submit_btn.attr('value',submit_btn_value);
          submit_btn.attr('disabled',false);
        }

        $("#notify").html(msg); //change the message

        if(fade){
          $("#notify").fadeIn("fast");
          $("#notify").fadeOut(7500);
        } else {
          $("#notify").show();
        }
      }
    }
  });

  //initTextFields();
  return false;

};
