var ajax_post = function(form, options){
    
    var defaults = {
      'response_container': null,
      'response_filter' : "#content > *",
      'response_callback' : function(response){
      },
      'success_filter' : ".success",
      'success_callback' : function(response){
      },
      'semaphore' : function(response){
        return true;
      },
      'error_filter' : ".errorlist",
      'error_callback' :   function(response){
      },
      'type' : "post"
    }
    
    var opts = $.extend({}, defaults, options);
    
    var form = $(form);
    
    var form_data = form.serialize();    
    
    var form_action = form.attr("action");
    form_action = form_action.replace(/([^#])#(.*)/,"$1");
      
    $.ajax(
      {
        url: form_action,
        data: form_data,
				cache: false,
        success: function(response) {
          
          if(opts.semaphore(response)){
            
            
            filtered_response = $(response).find(opts.response_filter);
            
            if(opts.response_container){
              opts.response_container.html(filtered_response);  
            }
            
            opts.response_callback(filtered_response);
            
            if($(response).find(opts.success_filter).length){
            
              opts.success_callback(filtered_response);
            
            } else if ($(response).find(opts.error_filter).length){
            
              opts.error_callback(filtered_response);
            
            }
          }
          
        },
        error: function(a,b,c){
          opts.error_callback([a,b,c]);
        },
        type: opts.type,
        dataType: "html"
      }
    );
    
    return false;
} 
