home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / xampp / xampp-cocoon-addon-1.4.9-installer.exe / utils.js < prev    next >
Encoding:
JavaScript  |  2004-07-12  |  5.5 KB  |  206 lines

  1. /*
  2.  * Copyright 1999-2004 The Apache Software Foundation
  3.  *
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  *
  8.  *     http://www.apache.org/licenses/LICENSE-2.0
  9.  *
  10.  *  Unless required by applicable law or agreed to in writing, software
  11.  *  distributed under the License is distributed on an "AS IS" BASIS,
  12.  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  *  See the License for the specific language governing permissions and
  14.  *  limitations under the License.
  15.  */
  16.  
  17. /*
  18.  * WARNING: this file is supposed to be cross-browser. All browser-specific features
  19.  * should be wrapped with a function call and factored out in the "browser_dependent.js"
  20.  * file. Please, keep it this way.
  21.  *
  22.  */
  23.  
  24. // ----------------------------- Utility Functions -------------------------
  25.  
  26. function getMonth(number) {
  27.     switch (number) {
  28.         case  0: return "January";
  29.         case  1: return "February";
  30.         case  2: return "March";
  31.         case  3: return "April";
  32.         case  4: return "May";
  33.         case  5: return "June";
  34.         case  6: return "July";
  35.         case  7: return "August";
  36.         case  8: return "September";
  37.         case  9: return "October";
  38.         case 10: return "November";
  39.         case 11: return "December";
  40.     }
  41. }
  42.  
  43. function getDate() {
  44.     var date = new Date();
  45.     var month = getMonth(date.getMonth());
  46.     var day = date.getDate();
  47.     var year = date.getFullYear();
  48.     return month + " " + day + ", " + year;
  49. }
  50.  
  51. function getTime() {
  52.     var time = new Date();
  53.     var hour = time.getHours();
  54.     var minute = time.getMinutes();
  55.     return ((hour < 10) ? "0" : "") + hour + ((minute < 10) ? ":0" : ":") + minute;
  56. }
  57.  
  58. function getFullDate() {
  59.     return (new Date()).toGMTString();
  60. }
  61.  
  62. function getISODate() {
  63.     // taken from http://321webliftoff.net/isodatetime.php, many thanks!
  64.     var today = new Date();
  65.     var year  = today.getYear();
  66.     if (year < 2000)    // Y2K Fix, Isaac Powell
  67.     year = year + 1900; // http://onyx.idbsu.edu/~ipowell
  68.     var month = today.getMonth() + 1;
  69.     var day  = today.getDate();
  70.     var hour = today.getHours();
  71.     var hourUTC = today.getUTCHours();
  72.     var diff = hour - hourUTC;
  73.     var hourdifference = Math.abs(diff);
  74.     var minute = today.getMinutes();
  75.     var minuteUTC = today.getUTCMinutes();
  76.     var minutedifference;
  77.     var second = today.getSeconds();
  78.     var timezone;
  79.     if (minute != minuteUTC && minuteUTC < 30 && diff < 0) { hourdifference--; }
  80.     if (minute != minuteUTC && minuteUTC > 30 && diff > 0) { hourdifference--; }
  81.     if (minute != minuteUTC) {
  82.         minutedifference = ":30";
  83.     } else {
  84.         minutedifference = ":00";
  85.     }
  86.     if (hourdifference < 10) { 
  87.         timezone = "0" + hourdifference + minutedifference;
  88.     } else {
  89.         timezone = "" + hourdifference + minutedifference;
  90.     }
  91.     if (diff < 0) {
  92.         timezone = "-" + timezone;
  93.     } else {
  94.         timezone = "+" + timezone;
  95.     }
  96.     if (month <= 9) month = "0" + month;
  97.     if (day <= 9) day = "0" + day;
  98.     if (hour <= 9) hour = "0" + hour;
  99.     if (minute <= 9) minute = "0" + minute;
  100.     if (second <= 9) second = "0" + second;
  101.     return year + "-" + month + "-" + day + "T" + hour + ":" + minute + ":" + second + timezone;
  102. }
  103.  
  104. var trimRE = /(^\s+)|(\s+$)/g;
  105.  
  106. function trimWhitespace(str) {
  107.     if (!str) return '';
  108.     return str.replace(trimRE, '');
  109. }
  110.  
  111. var saneRE = /\n+/g;
  112.  
  113. function trimNewlines(str) {
  114.     if (!str) return '';
  115.     return str.replace(saneRE, '');
  116. }
  117.  
  118. function isWhitespace(str) {
  119.     return trimWhitespace(str).length == 0;
  120. }
  121.  
  122. function getPreviousMeaningfulNode(node) {
  123.     if (node) {
  124.         var previous = node.previousSibling;
  125.         if (previous) {
  126.             if (previous.nodeType == NodeType.TEXT_NODE) {
  127.                 if (!isWhitespace(previous.nodeValue)) {
  128.                     return previous;
  129.                 } else {
  130.                     return getPreviousMeaningfulNode(previous);
  131.                 }
  132.             } else {
  133.                 return previous;
  134.             }
  135.         } else {
  136.             return node;
  137.         }
  138.     } else {
  139.         return null;
  140.     }
  141. }
  142.  
  143. function getNextMeaningfulNode(node) {
  144.     if (node) {
  145.         var next = node.nextSibling;
  146.         if (next) {
  147.             if (next.nodeType == NodeType.TEXT_NODE) {
  148.                 if (!isWhitespace(next.nodeValue)) {
  149.                     return next;
  150.                 } else {
  151.                     return getNextMeaningfulNode(next);
  152.                 }
  153.             } else {
  154.                 return next;
  155.             }
  156.         } else {
  157.             return node;
  158.         }
  159.     } else {
  160.         return null;
  161.     }
  162. }
  163.  
  164.  
  165. function getPath(node) {
  166.     if (node) {
  167.         var name = node.nodeName;
  168.         if (node.parentNode) {
  169.             return getPath(node.parentNode) + "/" + name;
  170.         } else if (name != "#document") {
  171.             return name;
  172.         }
  173.     } 
  174.     return "";
  175. }
  176.  
  177. /*
  178.  * Detach the live array returned by some DOM functions
  179.  * and make it static (means that it doesn't change if you work
  180.  * on the DOM). Very useful to avoid nasty recursion when working
  181.  * on getElementByTagName()
  182.  */
  183. function detach(liveArray) {
  184.     var staticArray = new Array(liveArray.length);
  185.     for (var i = 0; i < liveArray.length; i++) {
  186.         staticArray[i] = liveArray[i];
  187.     }
  188.     return staticArray;
  189. }
  190.  
  191. NodeType = { 
  192.      ELEMENT_NODE: 0x01,
  193.      ATTRIBUTE_NODE: 0x02,
  194.      TEXT_NODE: 0x03,
  195.      CDATA_NODE: 0x04,
  196.      ENTITY_REFERENZE_NODE: 0x05,
  197.      ENTITY_NODE: 0x06,
  198.      SCRIPT_NODE: 0x07,
  199.      COMMENT_NODE: 0x08,
  200.      DOCUMENT_NODE: 0x09,
  201.      DOCUMENT_FRAGMENT_NODE: 0x0a,
  202.      NOTATION_NODE: 0x0b
  203. };
  204.  
  205. // ------------------------------ end of file --------------------------
  206.