JAVASCRIPT   185

util.js

Guest on 24th July 2021 06:17:25 AM

  1. /* JavaScript utils */
  2.  
  3. String.prototype.replaceAll = function(str1, str2) {
  4.        
  5.         return this.replace(new RegExp(str1, "g"), str2);
  6. };
  7.  
  8. function isNullOrEmpty(value) {
  9.        
  10.         if(value = undefined || value == null || value == "") {
  11.                 return true;
  12.         } else {
  13.                 return false;
  14.         }
  15. }
  16.  
  17. function isInt(value) {
  18.        
  19.         var intRegex = /^\d+$/;
  20.         return intRegex.test(value);
  21. }
  22.  
  23. function isNumber(value) {
  24.         return !isNaN(parseFloat(value)) && isFinite(value);
  25. }
  26.  
  27. function stripDuplicates(sourceArr) {
  28.    
  29.         var temp = {};
  30.     for (var i = 0; i < sourceArr.length; i++) {
  31.         temp[sourceArr[i]] = true;
  32.     }
  33.    
  34.     var resultArr = [];
  35.     for(var item in temp) {
  36.         resultArr.push(item);
  37.     }
  38.     return resultArr;
  39. }
  40.  
  41. /* JQuery utils */
  42.  
  43. $.fn.executeRequest = function(action, data, resultHandler, faultHandler) {
  44.        
  45.         if(!data) data = {};
  46.         data.action = action;
  47.        
  48.         $.ajax({
  49.                 url: "ajax.php",
  50.                 data: data,
  51.                 type: "POST",
  52.                 success: function(result) {
  53.                        
  54.                         if(resultHandler) {
  55.                                
  56.                                 //$().evaluateJavaScript(result);
  57.                                 resultHandler(result);
  58.                         }
  59.                 },
  60.                 error: function(request, status, error) {
  61.                        
  62.                         if(faultHandler) {
  63.                                 faultHandler(status + "\n\n" + error);
  64.                         }
  65.                 }
  66.         });
  67. }
  68.  
  69. $.fn.submitRequest = function(action, data) {
  70.        
  71.         $().disablePageControls(true);
  72.         $().disablePageFilters(true);
  73.        
  74.         $("#loadProgressIcon").show();
  75.         $("#loadFailureIcon").hide();
  76.        
  77.         $().executeRequest(
  78.                 action,
  79.                 data,
  80.                 function(result) {
  81.                         $("#loadProgressIcon").hide();
  82.                         $("#content").html(result);
  83.                         window.scroll(0, 0);
  84.                 },
  85.                 function(fault) {
  86.                        
  87.                         $("#loadProgressIcon").hide();
  88.                         $("#loadFailureIcon").show();
  89.                 }
  90.         );
  91. }
  92.  
  93. $.fn.printPage = function(action, pageType, pageID, employerID, landscape) {
  94.        
  95.         $().generatePage("print", action, pageType, pageID, employerID, landscape);
  96. }
  97.        
  98. $.fn.pdfPage = function(action, pageType, pageID, employerID, landscape) {
  99.        
  100.         $().generatePage("pdf", action, pageType, pageID, employerID, landscape);
  101. }
  102.  
  103. $.fn.generatePage = function(handler, action, pageType, pageID, employerID, landscape) {
  104.        
  105.         if(landscape) {
  106.                 layout = "L";
  107.         } else {
  108.                 layout = "P";
  109.         }
  110.        
  111.         var customArgs = "";
  112.        
  113.         if(pageID.indexOf("&") != -1) {
  114.                
  115.                 var mergeArgs = pageType + "=" + pageID;
  116.                 var splitArgs = mergeArgs.split("&");
  117.                 for(var i = 0; i < splitArgs.length; i++) {
  118.                        
  119.                         var splitVars = splitArgs[i].split("=");
  120.                         customArgs += '<input type="hidden" name="' + splitVars[0] + '" value="' + splitVars[1] + '"/>';
  121.                 }
  122.                
  123.         } else {
  124.                 customArgs = '<input type="hidden" name="' + pageType + '" value="' + pageID + '"/>';
  125.         }
  126.        
  127.        
  128.         var win = window.open("", "_blank");
  129.         win.document.write(
  130.                 '<h3>Generating Document...</h3><p>Click retry if the process does not complete within 10 seconds.</p>' +
  131.                 '<form id="postForm" method="POST">' +
  132.                 '       <input type="hidden" name="handler" value="' + handler + '"/>' +
  133.                 '       <input type="hidden" name="action" value="' + action + '"/>' +
  134.                 '       <input type="hidden" name="layout" value="' + layout + '"/>' +
  135.                 customArgs +
  136.                 (isNullOrEmpty(employerID)? "":'<input type="hidden" name="employerID" value="' + employerID + '"/>') +
  137.                 '       <input type="submit" value="Retry" onclick="this.disabled = \'disabled\'"/>' +
  138.                 '</form>'+
  139.                 '<script language="JavaScript" type="text/javascript">' +
  140.                 '       document.getElementById("postForm").submit();' +
  141.                 '</script>'
  142.         );
  143.        
  144.         win.focus();
  145. }
  146.  
  147. $.fn.loadResource = function(path) {
  148.        
  149.         var win = window.open(window.location + "/" + path, "_blank");
  150.         win.focus();
  151. }
  152.  
  153. $.fn.disablePageControls = function(isDisabled) {
  154.        
  155.         $("button, input, select, textarea").attr("disabled", isDisabled);
  156. }
  157.  
  158. $.fn.disablePageFilters = function(isDisabled, filterTargets) {
  159.        
  160.         $("#pageEmployerID").attr('disabled', isDisabled);
  161.        
  162.         pageFilterTargets = (filterTargets? filterTargets:[]);
  163. }
  164.  
  165. $.fn.setDisabled = function(disable) {
  166.        
  167.         return this.each(function() {
  168.                 this.disabled = !disable;
  169.         });
  170. }
  171.  
  172. $.fn.toggleDisabled = function() {
  173.        
  174.         return this.each(function() {
  175.                 this.disabled = !this.disabled;
  176.         });
  177. }
  178.  
  179. $.fn.setChecked = function(checked) {
  180.        
  181.         return this.each(function() {
  182.                 this.checked = checked;
  183.         });
  184. }
  185.  
  186. $.fn.toggleChecked = function() {
  187.        
  188.         return this.each(function() {
  189.                 this.checked = !this.checked;
  190.         });
  191. }
  192.  
  193.  
  194.  
  195.  
  196. // XXX: rewite in JQuery, maybe unnessasarry if this is built in to jquery already?
  197. $.fn.evaluateJavaScript = function(pageContent) {
  198.        
  199.         // remove any inline scripts previously added to the head
  200.         $("#ajaxScript").remove();
  201.        
  202.         // create a new inline script container to be placed in the head
  203.         var myScript = document.createElement('script');
  204.         myScript.id = "ajaxScript";
  205.         myScript.type = "text/javascript";
  206.        
  207.         // add all inline scripts to the head script container
  208.         var scriptContent = "";
  209.         while(pageContent.indexOf("<script") > -1 || pageContent.indexOf("</script") > -1) {
  210.                
  211.                 var s = pageContent.indexOf("<script");
  212.                 var s_e = pageContent.indexOf(">", s);
  213.                
  214.                 var e = pageContent.indexOf("</script", s);
  215.                 var e_e = pageContent.indexOf(">", e);
  216.                
  217.                 scriptContent += pageContent.substring(s_e + 1, e);
  218.                
  219.                 pageContent = pageContent.substring(0, s) + pageContent.substring(e_e + 1);
  220.         }
  221.        
  222.         myScript.text = scriptContent;
  223.        
  224.         // add the inline script container to the head
  225.         $(myScript).appendTo("head");
  226. }
  227.  
  228.  
  229. // XXX: is this not maybe built into jquery already
  230.  
  231.  
  232. function getElementLabelText(elementID, containerID) {
  233.        
  234.         var container = document;
  235.         if(containerID) {
  236.                 container = document.getElementById(containerID);
  237.         }
  238.        
  239.         var labels = container.getElementsByTagName("LABEL");
  240.         for(var i = 0; i < labels.length; i++) {
  241.                
  242.                 if(labels[i].htmlFor == elementID) {
  243.                         return labels[i].innerText;
  244.                 }
  245.         }
  246.         return "";
  247. }
  248.  
  249. function getElementsByClassName(findClass, parent) {
  250.        
  251.         parent = parent || document;
  252.         var elements = parent.getElementsByTagName("*");
  253.         var matching = [];
  254.        
  255.         for(var i = 0; i < elements.length; i++) {
  256.                
  257.                 if(elements[i].className.toUpperCase() == findClass.toUpperCase()) {
  258.                         matching.push(elements[i]);
  259.                 }
  260.         }
  261.        
  262.         return matching;
  263. }

Raw Paste


Login or Register to edit or fork this paste. It's free.