var cachedInnerHTML = {};

function ajaxLoad(id, url, params, loader, onload) {

  return function() {

    if (loader) {
      if (typeof(cachedInnerHTML[id]) == 'undefined') {
        try {
          cachedInnerHTML[id] = jQuery('#' + loader).html();
        } catch(e) {}
        if (typeof(cachedInnerHTML[id]) == 'undefined') {
          cachedInnerHTML[id] = '';
        }
      }
    }

    if (typeof(params) == 'undefined') {
      params = {};
    }
    params['ajax'] = 1;
    var divURL = url;
    var sep = (divURL.indexOf('?') == -1) ? '?' : '&';
    for (var k in params) {
      divURL += sep + k + '=' + params[k];
      sep = '&';
    }

    var jqEl = jQuery('#' + id);
    var domEl = jqEl.get(0);

    if (loader) {
      jqEl.html(cachedInnerHTML[id]);
    }

    if(typeof(domEl.httpReq) != 'undefined')
       domEl.httpReq.abort();

    domEl.httpReq = jQuery.ajax({
      dataType: 'text',
      url: url,
      data: params,
      cache: true,
      processData: true,
      type: 'post',
      success: function(html){
        jQuery('#' + id).html(html);
      },
      complete: onload
    });

    return domEl.httpReq;

  }

}
