home *** CD-ROM | disk | FTP | other *** search
/ Freelog 117 / FreelogNo117-OctobreNovembre2013.iso / Theme / 8GadgetPack / 8GadgetPackSetup.msi / Gadgets.7z / Gadgets / StickyNotesOnline.gadget / Scripts / Lib / StdLib.js < prev    next >
Text File  |  2011-06-16  |  6KB  |  168 lines

  1. ∩╗┐    Date.fromString = (function () {
  2.         var defaults = {
  3.             order : 'MDY',
  4.             strict : false
  5.         };
  6.         var months = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG",
  7.             "SEP", "OCT", "NOV", "DEC"];
  8.         var abs = ["AM", "PM", "AFTERNOON", "MORNING"];
  9.         var mark = function (str, val) {
  10.             var lval = val.toLowerCase();   
  11.             var regex = new RegExp('^' + lval + '|(.*[^:alpha:])' + lval, 'g');
  12.             return str.replace(regex, '$1' + val);
  13.         };
  14.         var normalize = function (str) {
  15.             str = str.toLowerCase();
  16.             str = str.replace(/[^:a-z0-9]/g, '-');
  17.             for (var i=0; i<months.length; i++) str = mark(str, months[i]);
  18.             for (var i=0; i<abs.length; i++) str = mark(str, abs[i]);
  19.             str = str.replace(/[a-z]/g, '');
  20.             str = str.replace(/([0-9])([A-Z])/g, '$1-$2');
  21.             str = ('-' + str + '-').replace(/-+/g, '-');
  22.             return str;
  23.         };
  24.         var find_time = function (norm) {
  25.         var obj = {date:norm, time:''};
  26.         obj.time = norm.replace(/^.*-(\d\d?(:\d\d){1,2}(-(AM|PM))?)-.*$/, '$1');
  27.         if (obj.time == obj.date)
  28.             obj.time = norm.replace(/^.*-(\d\d?-(AM|PM))-.*$/, '$1');
  29.         if (obj.time == obj.date) obj.time = '';
  30.             obj.date = norm.replace(obj.time, '');
  31.         obj.time = ('-' + obj.time + '-').replace(/-+/g, '-');
  32.         obj.date = ('-' + obj.date + '-').replace(/-+/g, '-');
  33.         return obj;
  34.     };
  35.  
  36.     var find_year = function (norm) {
  37.         var year = null;
  38.         // Check for a 4-digit year
  39.         year = norm.replace(/^.*-(\d\d\d\d)-.*$/, '$1');
  40.         if (year != norm) return year; else year = null;
  41.         // Check for a 2-digit year, over 32.
  42.         year = norm.replace(/^.*-((3[2-9])|([4-9][0-9]))-.*$/, '$1');
  43.         if (year != norm) return year; else year = null;
  44.         // Check for a single 2-digit number with a leading 0
  45.         var matches = norm.match(/-0\d-/g);
  46.         if (matches && matches.length == 1) return matches[0].substring(1,3);
  47.         // Day is always by month, so check for explicit months in 
  48.         // first or third spot
  49.         year = norm.replace(/^.*-[A-Z]{3}-\d\d?-(\d\d?)-.*$/, '$1');
  50.         if (year != norm) return year; else year = null;
  51.         year = norm.replace(/^.*-(\d\d?)-\d\d?-[A-Z]{3}-.*$/, '$1');
  52.         if (year != norm) return year; else year = null;
  53.         // If all else fails, use the setting for the position of the year.
  54.         var pos = '$3';
  55.         if (defaults.opts.order.charAt(0) == 'Y') pos = '$1';
  56.         else if (defaults.opts.order.charAt(1) == 'Y') pos = '$2';
  57.         year = norm.replace(/^.*-(\d\d?)-([A-Z]{3}|\d{1,2})-(\d\d?)-.*$/, pos);
  58.         if (year != norm) return year; else year = null;
  59.         return year;
  60.     };
  61.  
  62.   var find_month = function (norm, year) {
  63.     // Check for an explicity month
  64.     var matches = norm.match(/[A-Z]{3}/);
  65.     if (matches && matches.length) return matches[0];
  66.     // Remove the year, and unless obviously wrong, use order
  67.     // to chose which one to use for month.
  68.     var parts = norm.replace(year + '-', '').split('-');
  69.     if (parts.length != 4) return null;
  70.     var order = defaults.opts.order;
  71.     var md = order.indexOf('M') < order.indexOf('D')? 1: 2;
  72.     return (parseInt(parts[md], 10) <= 12)? parts[md]: parts[md==1? 2: 1];
  73.   };
  74.  
  75.   var find_day  = function (norm, year, month) {
  76.     return norm.replace(year, '').replace(month, '').replace(/-/g, '');
  77.   };
  78.  
  79.   var create_absolute = function (obj) {
  80.     var time = obj.time.replace(/[-APM]/g, '');
  81.     var parts = time.split(':');
  82.     parts[1] = parts[1] || 0;
  83.     parts[2] = parts[2] || 0;
  84.     var ihr = parseInt(parts[0], 10);
  85.     if (obj.time.match(/-AM-/) && ihr == 12) parts[0] = 0;
  86.     else if (obj.time.match(/-PM-/) && ihr < 12) parts[0] = ihr + 12;
  87.     parts[0] = ("0" + parts[0]).substring(("0" + parts[0]).length - 2);
  88.     parts[1] = ("0" + parts[1]).substring(("0" + parts[1]).length - 2);
  89.     parts[2] = ("0" + parts[2]).substring(("0" + parts[2]).length - 2);
  90.     time = parts.join(':');
  91.     var strict = defaults.opts.strict;
  92.     if (!obj.year && !strict) obj.year = (new Date()).getFullYear();
  93.     var year = parseInt(obj.year, 10);
  94.     if (year < 100) {
  95.       year += (year<70? 2000: 1900);
  96.     }
  97.     if (!obj.month && !strict) obj.month = (new Date()).getMonth() + 1;
  98.     var month = String(obj.month);
  99.     if (month.match(/[A-Z]{3}/)) {
  100.       month = "JAN-FEB-MAR-APR-MAY-JUN-JUL-AUG-SEP-OCT-NOV-DEC-"
  101.           .indexOf(month) / 4 + 1;
  102.     }
  103.     month = ("0" + month).substring(("0" + month).length - 2);
  104.     if (!obj.day && !strict) obj.day = (new Date()).getDate();
  105.     var day = ("0" + obj.day).substring(("0" + obj.day).length - 2);
  106.     var date = new Date();
  107.     date.setTime(Date.parse(year + '/' + month + '/' + day + ' ' + time));
  108.     return date;
  109.   };
  110.  
  111.   var parse = function (norm) {
  112.     return absolute(norm);
  113.   };
  114.  
  115.   var absolute = function (norm) {
  116.     var obj = find_time(norm);
  117.     obj.norm = norm;
  118.     obj.year = find_year(obj.date);
  119.     obj.month = find_month(obj.date, obj.year);
  120.     obj.day = find_day(obj.date, obj.year, obj.month);
  121.     return create_absolute(obj);
  122.   };
  123.  
  124.   return function (fuzz, opts) {
  125.     defaults.opts = { order: defaults.order, strict: defaults.strict };
  126.     if (opts && opts.order) defaults.opts.order = opts.order;
  127.     if (opts && opts.strict != undefined) defaults.opts.strict = opts.strict;
  128.     var date = parse(normalize(fuzz));
  129.     return date;
  130.   };
  131.  
  132. })();
  133.  
  134.  
  135. if (typeof window.DOMParser != "undefined") {
  136.     function DOMParser() {}
  137.     
  138.     DOMParser.prototype.parseFromString = function (str, contentType) {
  139.         if (window.ActiveXObject) {
  140.             var d = new ActiveXObject("MSXML.DomDocument");
  141.             d.loadXML(str);
  142.             return d;
  143.         } else if (window.XMLHttpRequest) {
  144.             var req = new XMLHttpRequest;
  145.             req.open("GET", "data:" + (contentType || "application/xml") +
  146.                             ";charset=utf-8," + encodeURIComponent(str), false);
  147.             if (req.overrideMimeType) {
  148.                 req.overrideMimeType(contentType);
  149.             }
  150.             req.send(null);
  151.             return req.responseXML;
  152.         }
  153.     }
  154. }
  155.  
  156. String.prototype.trim = function() {
  157.     return this.replace(/^\s+|\s+$/g, "");
  158. }
  159. String.prototype.ltrim = function() {
  160.     return this.replace(/^\s+/, "");
  161. }
  162. String.prototype.rtrim = function() {
  163.     return this.replace(/\s+$/, "");
  164. }
  165.  
  166. String.prototype.bool = function() {
  167.     return (/^true$/i).test(this); 
  168. }