function dateF2U(b){return b.substring(3,5)+"/"+b.substring(0,2)+"/"+b.substring(6,10)}function dateD2F(b){var a=""+b.getDate(),c=""+(b.getMonth()+1);b=""+b.getFullYear();a=a.length==1?"0"+a:a;c=c.length==1?"0"+c:c;return a+"/"+c+"/"+b}vbGeneralDate=0;vbLongDate=1;vbShortDate=2;vbLongTime=3;vbShortTime=4;vbUseSystemDayOfWeek=0;vbSunday=1;vbMonday=2;vbTuesday=3;vbWednesday=4;vbThursday=5;vbFriday=6;vbSaturday=7;vbUseSystem=0;vbFirstJan1=1;vbFirstFourDays=2;vbFirstFullWeek=3;
Date.MonthNames=[null,"January","February","March","April","May","June","July","August","September","October","November","December"];Date.WeekdayNames=[null,"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Date.IsDate=function(b){return!isNaN(new Date(b))};
Date.CDate=function(b){if(Date.IsDate(b))return new Date(b);var a=b.replace(/\-/g,"/");a=b.replace(/\./g,"/");a=b.replace(/ /g,"/");a=a.replace(/pm$/i," pm");a=a.replace(/am$/i," am");if(Date.IsDate(a))return new Date(a);var c=a+"/"+(new Date).getFullYear();if(Date.IsDate(c))return new Date(c);if(a.indexOf(":")){a=a.replace(/ /,"/"+(new Date).getFullYear()+" ");if(Date.IsDate(a))return new Date(a);b=(new Date).toDateString()+" "+b;if(Date.IsDate(b))return new Date(b)}return false};
Date.DateAdd=function(b,a,c){if(!Date.CDate(c))return"invalid date: '"+c+"'";if(isNaN(a))return"invalid number: '"+a+"'";a=new Number(a);c=Date.CDate(c);switch(b.toLowerCase()){case "yyyy":c.setFullYear(c.getFullYear()+a);break;case "q":c.setMonth(c.getMonth()+a*3);break;case "m":c.setMonth(c.getMonth()+a);break;case "y":case "d":case "w":c.setDate(c.getDate()+a);break;case "ww":c.setDate(c.getDate()+a*7);break;case "h":c.setHours(c.getHours()+a);break;case "n":c.setMinutes(c.getMinutes()+a);break;
case "s":c.setSeconds(c.getSeconds()+a);break;case "ms":c.setMilliseconds(c.getMilliseconds()+a);break;default:return"invalid interval: '"+b+"'"}return c};
Date.DateDiff=function(b,a,c,e){if(!Date.CDate(a))return"invalid date: '"+a+"'";if(!Date.CDate(c))return"invalid date: '"+c+"'";e=isNaN(e)||e==0?vbSunday:parseInt(e);var d=Date.CDate(a),f=Date.CDate(c);if("h,n,s,ms".indexOf(b.toLowerCase())==-1){a.toString().indexOf(":")==-1&&d.setUTCHours(0,0,0,0);c.toString().indexOf(":")==-1&&f.setUTCHours(0,0,0,0)}var g=f.valueOf()-d.valueOf();a=new Date(g);a=f.getUTCFullYear()-d.getUTCFullYear();c=f.getUTCMonth()-d.getUTCMonth()+(a!=0?a*12:0);var j=parseInt(c/
3),h=g;g=parseInt(g/1000);var k=parseInt(g/60),l=parseInt(k/60),m=parseInt(l/24),n=parseInt(m/7);if(b.toLowerCase()=="ww"){var i=Date.DatePart("w",d,e)-1;i&&d.setDate(d.getDate()+7-i);(i=Date.DatePart("w",f,e)-1)&&f.setDate(f.getDate()-i);i=Date.DateDiff("w",d,f)+1}switch(b.toLowerCase()){case "yyyy":return a;case "q":return j;case "m":return c;case "y":case "d":return m;case "w":return n;case "ww":return i;case "h":return l;case "n":return k;case "s":return g;case "ms":return h;default:return"invalid interval: '"+
b+"'"}};
Date.DatePart=function(b,a,c){if(!Date.CDate(a))return"invalid date: '"+a+"'";a=Date.CDate(a);switch(b.toLowerCase()){case "yyyy":return a.getFullYear();case "q":return parseInt(a.getMonth()/3)+1;case "m":return a.getMonth()+1;case "y":return Date.DateDiff("y","1/1/"+a.getFullYear(),a)+1;case "d":return a.getDate();case "w":return Date.Weekday(a.getDay()+1,c);case "ww":return Date.DateDiff("ww","1/1/"+a.getFullYear(),a,c)+1;case "h":return a.getHours();case "n":return a.getMinutes();case "s":return a.getSeconds();case "ms":return a.getMilliseconds();
default:return"invalid interval: '"+b+"'"}};Date.MonthName=function(b,a){if(isNaN(b)){if(!Date.CDate(b))return"invalid month: '"+b+"'";b=DatePart("m",Date.CDate(b))}b=Date.MonthNames[b];if(a==true)b=b.substring(0,3);return b};Date.WeekdayName=function(b,a,c){if(isNaN(b)){if(!Date.CDate(b))return"invalid weekday: '"+b+"'";b=DatePart("w",Date.CDate(b))}c=isNaN(c)||c==0?vbSunday:parseInt(c);b=(c-1+parseInt(b)-1+7)%7+1;b=Date.WeekdayNames[b];if(a==true)b=b.substring(0,3);return b};
Date.Weekday=function(b,a){a=isNaN(a)||a==0?vbSunday:parseInt(a);return(parseInt(b)-a+7)%7+1};
Date.FormatDateTime=function(b,a){if(b.toUpperCase().substring(0,3)=="NOW")b=new Date;if(!Date.CDate(b))return"invalid date: '"+b+"'";if(isNaN(a))a=vbGeneralDate;var c=Date.CDate(b);switch(parseInt(a)){case vbGeneralDate:return c.toString();case vbLongDate:return Format(b,"DDDD, MMMM D, YYYY");case vbShortDate:return Format(b,"MM/DD/YYYY");case vbLongTime:return c.toLocaleTimeString();case vbShortTime:return Format(b,"HH:MM:SS");default:return"invalid NamedFormat: '"+a+"'"}};
Date.Format=function(b,a,c,e){if(!Date.CDate(b))return"invalid date: '"+b+"'";if(!a||a=="")return d.toString();var d=Date.CDate(b);this.pad=function(h){if(h.toString().length==1)h="0"+h;return h};b=d.getHours()>=12?"PM":"AM";e=d.getHours();if(e==0)e=12;if(e>12)e-=12;var f=e+":"+this.pad(d.getMinutes())+":"+this.pad(d.getSeconds())+" "+b,g=d.getMonth()+1+"/"+d.getDate()+"/"+(new String(d.getFullYear())).substring(2,4),j=Date.MonthName(d.getMonth()+1)+" "+d.getDate()+", "+d.getFullYear();a=a;a=a.replace(new RegExp("C",
"gi"),"CCCC");a=a.replace(new RegExp("mmmm","gi"),"XXXX");a=a.replace(new RegExp("mmm","gi"),"XXX");a=a.replace(new RegExp("dddddd","gi"),"AAAAAA");a=a.replace(new RegExp("ddddd","gi"),"AAAAA");a=a.replace(new RegExp("dddd","gi"),"AAAA");a=a.replace(new RegExp("ddd","gi"),"AAA");a=a.replace(new RegExp("timezone","gi"),"ZZZZ");a=a.replace(new RegExp("time24","gi"),"TTTT");a=a.replace(new RegExp("time","gi"),"TTT");a=a.replace(new RegExp("yyyy","gi"),d.getFullYear());a=a.replace(new RegExp("yy","gi"),
(new String(d.getFullYear())).substring(2,4));a=a.replace(new RegExp("y","gi"),Date.DatePart("y",d));a=a.replace(new RegExp("q","gi"),Date.DatePart("q",d));a=a.replace(new RegExp("mm","gi"),d.getMonth()+1);a=a.replace(new RegExp("m","gi"),d.getMonth()+1);a=a.replace(new RegExp("dd","gi"),this.pad(d.getDate()));a=a.replace(new RegExp("d","gi"),d.getDate());a=a.replace(new RegExp("hh","gi"),this.pad(d.getHours()));a=a.replace(new RegExp("h","gi"),d.getHours());a=a.replace(new RegExp("nn","gi"),this.pad(d.getMinutes()));
a=a.replace(new RegExp("n","gi"),d.getMinutes());a=a.replace(new RegExp("ss","gi"),this.pad(d.getSeconds()));a=a.replace(new RegExp("s","gi"),d.getSeconds());a=a.replace(new RegExp("t t t t t","gi"),f);a=a.replace(new RegExp("am/pm","g"),d.getHours()>=12?"pm":"am");a=a.replace(new RegExp("AM/PM","g"),d.getHours()>=12?"PM":"AM");a=a.replace(new RegExp("a/p","g"),d.getHours()>=12?"p":"a");a=a.replace(new RegExp("A/P","g"),d.getHours()>=12?"P":"A");a=a.replace(new RegExp("AMPM","g"),d.getHours()>=12?
"pm":"am");a=a.replace(new RegExp("XXXX","gi"),Date.MonthName(d.getMonth()+1,false));a=a.replace(new RegExp("XXX","gi"),Date.MonthName(d.getMonth()+1,true));a=a.replace(new RegExp("AAAAAA","gi"),j);a=a.replace(new RegExp("AAAAA","gi"),g);a=a.replace(new RegExp("AAAA","gi"),Date.WeekdayName(d.getDay()+1,false,c));a=a.replace(new RegExp("AAA","gi"),Date.WeekdayName(d.getDay()+1,true,c));a=a.replace(new RegExp("TTTT","gi"),d.getHours()+":"+this.pad(d.getMinutes()));a=a.replace(new RegExp("TTT","gi"),
e+":"+this.pad(d.getMinutes())+" "+b);a=a.replace(new RegExp("CCCC","gi"),g+" "+f);tz=d.getTimezoneOffset();timezone=tz<0?"GMT-"+tz/60:tz==0?"GMT":"GMT+"+tz/60;return a=a.replace(new RegExp("ZZZZ","gi"),timezone)};IsDate=Date.IsDate;CDate=Date.CDate;DateAdd=Date.DateAdd;DateDiff=Date.DateDiff;DatePart=Date.DatePart;MonthName=Date.MonthName;WeekdayName=Date.WeekdayName;Weekday=Date.Weekday;FormatDateTime=Date.FormatDateTime;Format=Date.Format;
