function sendRequest(requestType, requestData, source, completeFunc) { sendRequestAdv(requestType, requestData, source, completeFunc, null, null, false); } function sendRequestAdv(requestType, requestData, source, completeFunc, messageFunc, messageDelay, binaryInput) { var divId = createDivRelative("loadingDiv", source); $('#' + divId).html(" Wait..."); $('#' + divId).animate( { opacity: 1, left: "+=30" }, 300, function() { $.ajax( { url: "request/" + requestType + ".php", type: "POST", data: requestData, contentType: (binaryInput ? false : "application/x-www-form-urlencoded; charset=UTF-8"), processData: !binaryInput, dataType: 'text', // type of response success: function(response) { updateAfterRequest(divId, response, completeFunc, 200, messageFunc, messageDelay); }, error: function(xhr, textStatus, errorThrown) { updateAfterRequest(divId, xhr.responseText, completeFunc, xhr.status, messageFunc, messageDelay); } } ); } ); } function updateAfterRequest(divId, response, completeFunc, status, messageFunc, messageDelay) { if(messageFunc == null) { messageFunc = function(success, status, response) { return response; }; } var message = messageFunc((status == 200), status, response); $('#' + divId).html(" " + message); setTimeout( function() { $('#' + divId).animate( { opacity: 0, left: "+=50" }, 500, function() { removeDiv(divId); } ); if(completeFunc != null) { completeFunc((status == 200), status, response); } }, (messageDelay != null ? messageDelay : (status == 200 ? 1000 : 6000)) ); }