]> git.mxchange.org Git - mailer.git/blobdiff - js/ajax-common.js
Mailer project rwritten:
[mailer.git] / js / ajax-common.js
index 3686444aed6a2cf21094a1f843d069078af2eaed..7d06cd07fbfad0da824af0d8ea7760b70b106a8e 100644 (file)
@@ -37,6 +37,9 @@ var saveChangesId      = null;
 var lastErrorMessage   = null;
 var saveChangesPending = false;
 
+// Counter for success steps
+var counterSuccess = 0;
+
 // Add all footer navigation elements
 footerElements[0] = 'next';
 footerElements[1] = 'previous';
@@ -54,7 +57,7 @@ function isElementVisible (prefix, element) {
        var el = document.getElementById(prefix + '_' + element);
 
        // Is element set?
-       if ((el == null) || (el == undefined)) {
+       if ((el === null) || (el == undefined)) {
                throw new '"' + prefix + '_' + element + '" does not exist.';
        } else if ((el.style.display == undefined) || (el.style.display == '')) {
                throw new '"' + prefix + '_' + element + '" has no style.display element.';
@@ -189,7 +192,7 @@ function setAjaxSuccess (success) {
 function setAjaxReply (reply, isJson) {
        // Is it JSON URL-encoded content?
        //* DEBUG: */ alert('setAjaxReply(): reply=' + reply + ',isJson=' + isJson);
-       if ((isJson != undefined) && (isJson == true)) {
+       if ((isJson != undefined) && (isJson === true)) {
                // Decode URL-encoding (for some reason it must be here ...)
                var localReply = decodeUrlEncoding(reply);
 
@@ -227,7 +230,7 @@ function sendAjaxRequest (level, doValue, extra, isJson) {
                        if (ajax_content.reply_content == undefined) {
                                // This shall not happen
                                throw new 'ajax_content.reply_content not returned from ajax.php, please fix your scripts. (1)';
-                       } else if (ajax_content.reply_content == null) {
+                       } else if (ajax_content.reply_content === null) {
                                // This shall not happen, too
                                throw new 'ajax_content.reply_content=null from ajax.php, please fix your scripts. (2)';
                        }
@@ -261,7 +264,7 @@ function sendAjaxRequest (level, doValue, extra, isJson) {
                                        // This shall not happen
                                        throw new 'ajax_content.reply_content not returned from ajax.php, please fix your scripts. (4)';
                                }
-                       } else if (ajax_content.reply_content == null) {
+                       } else if (ajax_content.reply_content === null) {
                                // This shall not happen, too
                                throw new 'ajax_content.reply_content=null from ajax.php, please fix your scripts. (5)';
                        }
@@ -288,7 +291,7 @@ function enableFooterNavigation (prefix, tabId) {
        resetFooterNavigation();
 
        // Do the AJAX request (JSON as content is enabled)
-       if (sendAjaxRequest(prefix, 'footer_navigation', '&tab=' + tabId, true) == true) {
+       if (sendAjaxRequest(prefix, 'footer_navigation', '&tab=' + tabId, true) === true) {
                // Parse the content
                $.each(getAjaxContent(), function (i, value) {
                        // Enable current element
@@ -313,7 +316,7 @@ function requestAjaxContent (prefix, htmlId, tabId, footerNavigation) {
                // Clicked on a disabled tabId so blur it
                //* DEBUG: */ alert('requestAjaxContent(): prefix=' + prefix + ',htmlId=' + htmlId + ',tabId=' + tabId + ' - DISABLED!');
                return;
-       } else if (formChanged == true) {
+       } else if (formChanged === true) {
                // Has changed form , so output message to browser
                //* DEBUG: */ alert('requestAjaxContent(): prefix=' + prefix + ',htmlId=' + htmlId + ',tabId=' + tabId + ' - FORM CHANGED!');
                displayChangedWarningWindow(prefix, tabId);
@@ -332,7 +335,7 @@ function requestAjaxContent (prefix, htmlId, tabId, footerNavigation) {
                // Fade the old content out
                $('#' + htmlId).fadeOut('fast', function() {
                        // Send AJAX request
-                       if (sendAjaxRequest(prefix, 'request_content', '&tab=' + tabId, false) == true) {
+                       if (sendAjaxRequest(prefix, 'request_content', '&tab=' + tabId, false) === true) {
                                // Add the HTML content
                                $('#' + htmlId).html(getAjaxContent());
 
@@ -342,7 +345,7 @@ function requestAjaxContent (prefix, htmlId, tabId, footerNavigation) {
                                        markTabNavigation(prefix, tabId);
 
                                        // Is the footer navigation enabled?
-                                       if (footerNavigation == true) {
+                                       if (footerNavigation === true) {
                                                // Change footer navigation as well
                                                enableFooterNavigation(prefix, tabId);
                                        } // END - if
@@ -374,9 +377,9 @@ function displayTestWindow (prefix, element) {
        });
 
        // Request it from the AJAX backend
-       if (sendAjaxRequest(prefix, 'test', '', false) == true) {
+       if (sendAjaxRequest(prefix, 'test', '', false) === true) {
                // Transfer the returned content to the prefix_warning_content id
-               $('#' + prefix + '_warning_content').html(getAjaxContent());
+               setWarningContent(prefix, getAjaxContent());
 
                // Fade the warning in
                $('#' + prefix + '_warning').fadeIn('slow', function() {
@@ -389,17 +392,19 @@ function displayTestWindow (prefix, element) {
        }
 }
 
+// Fades slowly in given window
+function fadeInWindow (prefix, id) {
+       // Do the fade-in
+       $('#' + prefix + '_' + id).fadeIn('slow', function() {
+               // Do nothing for now
+       });
+}
+
 // Displays a warning window above the form to warn about changed&unsafed fields
 function displayChangedWarningWindow (prefix, button) {
-       // Fade out warning window, if open
        //* DEBUG: */ alert('displayChangedWarningWindow(): prefix=' + prefix + ',button=' + button + ' - calling closeWarningWindow()');
-       closeWarningWindow(prefix, true, false);
-
-       // Fade error out for eye-candy, if open
-       closeErrorWindow(prefix, true, false);
-
-       // Fade it out for eye-candy
-       closeProgressWindow(prefix, true, false);
+       // Fade all windows out
+       closeAllWindows(prefix);
 
        // Abort here if warningDisplayed is still true
        if (isElementVisible(prefix, 'warning')) {
@@ -408,14 +413,12 @@ function displayChangedWarningWindow (prefix, button) {
        } // END - if
 
        // Request it from the AJAX backend
-       if (sendAjaxRequest(prefix, 'change_warning', '&button=' + button + '&elements=' + changedElements.join(':')) == true) {
+       if (sendAjaxRequest(prefix, 'change_warning', '&button=' + button + '&elements=' + changedElements.join(':')) === true) {
                // Transfer the returned content to the prefix_warning_content id
-               $('#' + prefix + '_warning_content').html(getAjaxContent());
+               setWarningContent(prefix, getAjaxContent());
 
                // Fade the warning in
-               $('#' + prefix + '_warning').fadeIn('slow', function() {
-                       // Do nothing for now
-               });
+               fadeInWindow(prefix, 'warning');
        } else {
                // Display error message
                displayErrorWindow(prefix, getAjaxContent());
@@ -424,15 +427,9 @@ function displayChangedWarningWindow (prefix, button) {
 
 // Displays the error window for given prefix and content
 function displayErrorWindow (prefix, ajax_content) {
-       // Fade out warning window, if open
-       //* DEBUG: */ alert('displayErrorWindow(): prefix=' + prefix + ',ajax_content=' + ajax_content.reply_content + ' - calling closeWarningWindow()');
-       closeWarningWindow(prefix, true, false);
-
-       // Fade it out for eye-candy
-       closeErrorWindow(prefix, true, false);
-
-       // Fade it out for eye-candy
-       closeProgressWindow(prefix, true, false);
+       //* DEBUG: */ alert('displayErrorWindow(): prefix=' + prefix + ',ajax_content=' + ajax_content + ' - calling closeWarningWindow()');
+       // Fade all windows out
+       closeAllWindows(prefix);
 
        // Abort here if errorDisplayed is still true
        if (isElementVisible(prefix, 'error')) {
@@ -442,28 +439,20 @@ function displayErrorWindow (prefix, ajax_content) {
 
        // Copy the response text to the error variable
        if (ajax_content.reply_content != undefined) {
-               $('#' + prefix + '_error_content').html(ajax_content.reply_content);
+               setErrorContent(prefix, ajax_content.reply_content);
        } else {
-               $('#' + prefix + '_error_content').html(ajax_content);
+               setErrorContent(prefix, ajax_content);
        }
 
        // Fade the error in
-       $('#' + prefix + '_error').fadeIn('slow', function() {
-               // Do nothing for now
-       });
+       fadeInWindow(prefix, 'error');
 }
 
 // Displays the progress window for given prefix and content
 function displayProgressWindow (prefix, ajax_content) {
-       // Fade out warning window, if open
        //* DEBUG: */ alert('displayProgressWindow(): prefix=' + prefix + ' - calling closeWarningWindow()');
-       closeWarningWindow(prefix, true, false);
-
-       // Fade it out for eye-candy
-       closeErrorWindow(prefix, true, false);
-
-       // Fade it out for eye-candy
-       closeProgressWindow(prefix, true, false);
+       // Fade all windows out
+       closeAllWindows(prefix);
 
        // Abort here if progressDisplayed is still true
        if (isElementVisible(prefix, 'progress')) {
@@ -480,9 +469,43 @@ function displayProgressWindow (prefix, ajax_content) {
        }
 
        // Fade the progress in
-       $('#' + prefix + '_progress').fadeIn('slow', function() {
-               // Do nothing for now
-       });
+       fadeInWindow(prefix, 'progress');
+}
+
+// Displays the success window for given prefix and content
+function displaySuccessWindow (prefix, ajax_content) {
+       //* DEBUG: */ alert('displaySuccessWindow(): prefix=' + prefix + ' - calling closeWarningWindow()');
+       // Fade all windows out
+       closeAllWindows(prefix);
+
+       // Abort here if successDisplayed is still true
+       if (isElementVisible(prefix, 'success')) {
+               // Make sure this doesn't happen
+               return;
+       } // END - if
+
+       // Copy the response text to the success variable
+       if (ajax_content.reply_content != undefined) {
+               // Set HTML content
+               setSuccessContent(prefix, ajax_content.reply_content);
+       } else {
+               setSuccessContent(prefix, ajax_content);
+       }
+
+       // Fade the success in
+       fadeInWindow(prefix, 'success');
+}
+
+// Sets "warning content"
+function setWarningContent (prefix, content) {
+       // Set HTML content
+       $('#' + prefix + '_warning_content').html(content);
+}
+
+// Sets "error content"
+function setErrorContent (prefix, content) {
+       // Set HTML content
+       $('#' + prefix + '_error_content').html(content);
 }
 
 // Sets "progress content"
@@ -491,27 +514,29 @@ function setProgressContent (prefix, content) {
        $('#' + prefix + '_progress_content').html(content);
 }
 
-// Waits until the window has been closed
-function closeErrorLocked (prefix) {
-       // Has all been loaded?
-       if (!isElementVisible(prefix, 'error')) {
-               // Then release ready()
-               $.holdReady(false);
-       } else {
-               // Recursive call again
-               window.setTimeout('closeErrorLocked(' + prefix + ')', 10);
-       }
+// Sets "success content"
+function setSuccessContent (prefix, content) {
+       // Set HTML content
+       $('#' + prefix + '_success_content').html(content);
+}
+
+// Close all windows
+function closeAllWindows (prefix) {
+       closeWarningWindow(prefix, true, false);
+       closeErrorWindow(prefix, true, false);
+       closeProgressWindow(prefix, true, false);
+       closeSuccessWindow(prefix, true, false);
 }
 
 // Waits until the window has been closed
-function closeProgressLocked (prefix) {
+function closeErrorLocked (prefix) {
        // Has all been loaded?
-       if (!isElementVisible(prefix, 'progress')) {
+       if (!isElementVisible(prefix, 'error')) {
                // Then release ready()
                $.holdReady(false);
        } else {
                // Recursive call again
-               window.setTimeout('closeProgressLocked(' + prefix + ')', 10);
+               window.setTimeout('closeErrorLocked("' + prefix + '")', 10);
        }
 }
 
@@ -520,7 +545,7 @@ function closeErrorWindow (prefix, waitClose, resetCurrentTabId) {
        // Is the error displayed?
        if (isElementVisible(prefix, 'error')) {
                // Shall we wait ("sync") until the animation has completed?
-               if (waitClose == true) {
+               if (waitClose === true) {
                        // Hold the ready status
                        $.holdReady(true);
                } // END - if
@@ -528,25 +553,37 @@ function closeErrorWindow (prefix, waitClose, resetCurrentTabId) {
                // Yes, then fade it out
                $('#' + prefix + '_error').fadeOut('fast', function() {
                        // Set current tab id to default
-                       if (resetCurrentTabId == true) {
+                       if (resetCurrentTabId === true) {
                                setCurrentTabId(defaultTabId);
                        } // END - if
                });
 
                // Shall this animation be "synchronized"?
-               if (waitClose == true) {
+               if (waitClose === true) {
                        // Wait for the window has been closed
                        closeErrorLocked(prefix);
                } // END - if
        } // END - if
 }
 
+// Waits until the window has been closed
+function closeProgressLocked (prefix) {
+       // Has all been loaded?
+       if (!isElementVisible(prefix, 'progress')) {
+               // Then release ready()
+               $.holdReady(false);
+       } else {
+               // Recursive call again
+               window.setTimeout('closeProgressLocked("' + prefix + '")', 10);
+       }
+}
+
 // Closes an progress window
 function closeProgressWindow (prefix, waitClose, resetCurrentTabId) {
        // Is the progress displayed?
        if (isElementVisible(prefix, 'progress')) {
                // Shall we wait ("sync") until the animation has completed?
-               if (waitClose == true) {
+               if (waitClose === true) {
                        // Hold the ready status
                        $.holdReady(true);
                } // END - if
@@ -554,19 +591,57 @@ function closeProgressWindow (prefix, waitClose, resetCurrentTabId) {
                // Yes, then fade it out
                $('#' + prefix + '_progress').fadeOut('fast', function() {
                        // Set current tab id to default
-                       if (resetCurrentTabId == true) {
+                       if (resetCurrentTabId === true) {
                                setCurrentTabId(defaultTabId);
                        } // END - if
                });
 
                // Shall this animation be "synchronized"?
-               if (waitClose == true) {
+               if (waitClose === true) {
                        // Wait for the window has been closed
                        closeProgressLocked(prefix);
                } // END - if
        } // END - if
 }
 
+// Waits until the window has been closed
+function closeSuccessLocked (prefix) {
+       // Has all been loaded?
+       if (!isElementVisible(prefix, 'success')) {
+               // Then release ready()
+               $.holdReady(false);
+       } else {
+               // Recursive call again
+               window.setTimeout('closeSuccessLocked("' + prefix + '")', 10);
+       }
+}
+
+// Closes an success window
+function closeSuccessWindow (prefix, waitClose, resetCurrentTabId) {
+       // Is the success displayed?
+       if (isElementVisible(prefix, 'success')) {
+               // Shall we wait ("sync") until the animation has completed?
+               if (waitClose === true) {
+                       // Hold the ready status
+                       $.holdReady(true);
+               } // END - if
+
+               // Yes, then fade it out
+               $('#' + prefix + '_success').fadeOut('fast', function() {
+                       // Set current tab id to default
+                       if (resetCurrentTabId === true) {
+                               setCurrentTabId(defaultTabId);
+                       } // END - if
+               });
+
+               // Shall this animation be "synchronized"?
+               if (waitClose === true) {
+                       // Wait for the window has been closed
+                       closeSuccessLocked(prefix);
+               } // END - if
+       } // END - if
+}
+
 // Waits until the window has been closed
 function closeWarningLocked (prefix) {
        // Has all been loaded?
@@ -575,7 +650,7 @@ function closeWarningLocked (prefix) {
                $.holdReady(false);
        } else {
                // Recursive call again
-               window.setTimeout('closeWarningLocked(' + prefix + ')', 10);
+               window.setTimeout('closeWarningLocked("' + prefix + '")', 10);
        }
 }
 
@@ -586,7 +661,7 @@ function closeWarningWindow (prefix, waitClose, resetCurrentTabId) {
        if (isElementVisible(prefix, 'warning')) {
                // Shall we wait ("sync") until the animation has completed?
                //* DEBUG: */ alert('prefix=' + prefix + ',waitClose=' + waitClose + ',warningDisplayed=true');
-               if (waitClose == true) {
+               if (waitClose === true) {
                        // Hold the ready status
                        $.holdReady(true);
                } // END - if
@@ -594,13 +669,13 @@ function closeWarningWindow (prefix, waitClose, resetCurrentTabId) {
                // Yes, then fade it out
                $('#' + prefix + '_warning').fadeOut('fast', function() {
                        // Set current tab id to default
-                       if (resetCurrentTabId == true) {
+                       if (resetCurrentTabId === true) {
                                setCurrentTabId(defaultTabId);
                        } // END - if
                });
 
                // Shall this animation be "synchronized"?
-               if (waitClose == true) {
+               if (waitClose === true) {
                        // Wait for the window has been closed
                        //* DEBUG: */ alert('prefix=' + prefix + ',waitClose=' + waitClose + ' - LOCKED!');
                        closeWarningLocked(prefix);
@@ -612,7 +687,7 @@ function closeWarningWindow (prefix, waitClose, resetCurrentTabId) {
 function doFooterPage (prefix, htmlId, button) {
        //* DEBUG: */ alert('doFooterPage(): prefix=' + prefix + ',htmlId=' + htmlId + ',button=' + button + ' - ENTERED!');
        // Has something being changed?
-       if (formChanged == true) {
+       if (formChanged === true) {
                // Output message to browser
                displayChangedWarningWindow(prefix, button);
 
@@ -628,10 +703,10 @@ function doFooterPage (prefix, htmlId, button) {
 
        // Is there a 'next' entry?
        //* DEBUG: */ alert('doFooterPage(): button=' + button + ',currentTabId=' + currentTabId + ',nextPage[currentTabId]=' + nextPage[currentTabId]);
-       if ((button == 'next') && (nextPage[currentTabId] != null)) {
+       if ((button == 'next') && (nextPage[currentTabId] !== null)) {
                // Then call the AJAX requester
                var page = nextPage[currentTabId];
-       } else if ((button == 'previous') && (previousPage[currentTabId] != null)) {
+       } else if ((button == 'previous') && (previousPage[currentTabId] !== null)) {
                // Then call the AJAX requester
                var page = previousPage[currentTabId];
        }
@@ -743,7 +818,7 @@ function saveChanges (prefix) {
        if (changedElements.length == 0) {
                // This should not happen
                displayErrorWindow(prefix, '<div class="ajax_error_message">saveChanges() called with no changed elements.</div>');
-       } else if (saveChangesId == null) {
+       } else if (saveChangesId === null) {
                // saveChangesId is not det
                displayErrorWindow(prefix, '<div class="ajax_error_message">saveChangesId is not set. Please add <em>saveChanges = \'foo_bar\';</em> to your code.</div>');
        }
@@ -759,12 +834,12 @@ function saveChanges (prefix) {
         * Send the request to the AJAX backend, it doesn't matter from which page
         * this was requested.
         */
-       if (sendAjaxRequest(prefix, 'save_changes', '&tab=' + currentTabId + '&' + serializedData, true) == true) {
+       if (sendAjaxRequest(prefix, 'save_changes', '&tab=' + currentTabId + '&' + serializedData, true) === true) {
                // Get the content
                var ajax_content = getAjaxContent();
 
                // Progress the returned content
-               if (progressAjaxResponseContent(prefix, ajax_content) == true) {
+               if (progressAjaxResponseContent(prefix, ajax_content) === true) {
                        // Mark all elements as unchanged
                        markAllElementsAsUnchanged();
 
@@ -804,7 +879,7 @@ function saveChanges (prefix) {
 // Waiting for resources being loaded
 function saveChangesLocked () {
        // Has all been loaded?
-       if (saveChangesPending == false) {
+       if (saveChangesPending === false) {
                // Then release ready()
                $.holdReady(false);
        } else {
@@ -844,3 +919,72 @@ function doSaveChangesContinue (prefix, htmlId, tab) {
        // Load requested content
        requestAjaxContent(prefix, htmlId, tab);
 }
+
+// Registers common things (close button, drap&drop)
+function registerCommons (prefix) {
+       //-----------------------------------------
+       //             Close buttons
+       //-----------------------------------------
+       $('#' + prefix + '_error_close').click(function () {
+               // Close the window
+               closeErrorWindow(prefix);
+       });
+
+       $('#' + prefix + '_warning_close').click(function () {
+               // Close the window
+               closeWarningWindow(prefix);
+       });
+
+       $('#' + prefix + '_success_close').click(function () {
+               // Close the window
+               closeSuccessWindow(prefix);
+       });
+
+       //-----------------------------------------
+       //              Drag'N'Drop
+       //-----------------------------------------
+       $('#' + prefix + '_progress').draggable({
+               opacity: 0.85
+       });
+
+       $('#' + prefix + '_warning').draggable({
+               opacity: 0.85
+       });
+
+       $('#' + prefix + '_success').draggable({
+               opacity: 0.85
+       });
+
+       $('#' + prefix + '_error').draggable({
+               opacity: 0.85
+       });
+}
+
+// Update progress bar
+function updateProgressBar (maxValue) {
+       // Increment counter
+       counterSuccess++;
+
+       // Do only update <= 100% values
+       if (counterSuccess <= maxValue) {
+               // Update progress bar
+               $('#progressbar').progressbar({
+                       value: (counterSuccess / maxValue * 100)
+               });
+       } // END - if
+}
+
+// Updates a given "status" field
+function updateStatusField (id, cssClass, statusMessage) {
+       // Set message
+       $('#' + id).html(statusMessage);
+
+       // Is a cssClass set?
+       if (cssClass != '') {
+               // Add it
+               $('#' + id).addClass(cssClass);
+       } else {
+               // Remove all classes
+               $('#' + id).removeClass();
+       }
+}