| /* |
| Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. |
| Available via Academic Free License >= 2.1 OR the modified BSD license. |
| see: http://dojotoolkit.org/license for details |
| */ |
| |
| |
| if(!dojo._hasResource["dojo.date"]){ |
| dojo._hasResource["dojo.date"]=true; |
| dojo.provide("dojo.date"); |
| dojo.date.getDaysInMonth=function(_1){ |
| var _2=_1.getMonth(); |
| var _3=[31,28,31,30,31,30,31,31,30,31,30,31]; |
| if(_2==1&&dojo.date.isLeapYear(_1)){ |
| return 29; |
| } |
| return _3[_2]; |
| }; |
| dojo.date.isLeapYear=function(_4){ |
| var _5=_4.getFullYear(); |
| return !(_5%400)||(!(_5%4)&&!!(_5%100)); |
| }; |
| dojo.date.getTimezoneName=function(_6){ |
| var _7=_6.toString(); |
| var tz=""; |
| var _9; |
| var _a=_7.indexOf("("); |
| if(_a>-1){ |
| tz=_7.substring(++_a,_7.indexOf(")")); |
| }else{ |
| var _b=/([A-Z\/]+) \d{4}$/; |
| if((_9=_7.match(_b))){ |
| tz=_9[1]; |
| }else{ |
| _7=_6.toLocaleString(); |
| _b=/ ([A-Z\/]+)$/; |
| if((_9=_7.match(_b))){ |
| tz=_9[1]; |
| } |
| } |
| } |
| return (tz=="AM"||tz=="PM")?"":tz; |
| }; |
| dojo.date.compare=function(_c,_d,_e){ |
| _c=new Date(Number(_c)); |
| _d=new Date(Number(_d||new Date())); |
| if(_e!=="undefined"){ |
| if(_e=="date"){ |
| _c.setHours(0,0,0,0); |
| _d.setHours(0,0,0,0); |
| }else{ |
| if(_e=="time"){ |
| _c.setFullYear(0,0,0); |
| _d.setFullYear(0,0,0); |
| } |
| } |
| } |
| if(_c>_d){ |
| return 1; |
| } |
| if(_c<_d){ |
| return -1; |
| } |
| return 0; |
| }; |
| dojo.date.add=function(_f,_10,_11){ |
| var sum=new Date(Number(_f)); |
| var _13=false; |
| var _14="Date"; |
| switch(_10){ |
| case "day": |
| break; |
| case "weekday": |
| var _15,_16; |
| var mod=_11%5; |
| if(!mod){ |
| _15=(_11>0)?5:-5; |
| _16=(_11>0)?((_11-5)/5):((_11+5)/5); |
| }else{ |
| _15=mod; |
| _16=parseInt(_11/5); |
| } |
| var _18=_f.getDay(); |
| var adj=0; |
| if(_18==6&&_11>0){ |
| adj=1; |
| }else{ |
| if(_18==0&&_11<0){ |
| adj=-1; |
| } |
| } |
| var _1a=_18+_15; |
| if(_1a==0||_1a==6){ |
| adj=(_11>0)?2:-2; |
| } |
| _11=(7*_16)+_15+adj; |
| break; |
| case "year": |
| _14="FullYear"; |
| _13=true; |
| break; |
| case "week": |
| _11*=7; |
| break; |
| case "quarter": |
| _11*=3; |
| case "month": |
| _13=true; |
| _14="Month"; |
| break; |
| case "hour": |
| case "minute": |
| case "second": |
| case "millisecond": |
| _14="UTC"+_10.charAt(0).toUpperCase()+_10.substring(1)+"s"; |
| } |
| if(_14){ |
| sum["set"+_14](sum["get"+_14]()+_11); |
| } |
| if(_13&&(sum.getDate()<_f.getDate())){ |
| sum.setDate(0); |
| } |
| return sum; |
| }; |
| dojo.date.difference=function(_1b,_1c,_1d){ |
| _1c=_1c||new Date(); |
| _1d=_1d||"day"; |
| var _1e=_1c.getFullYear()-_1b.getFullYear(); |
| var _1f=1; |
| switch(_1d){ |
| case "quarter": |
| var m1=_1b.getMonth(); |
| var m2=_1c.getMonth(); |
| var q1=Math.floor(m1/3)+1; |
| var q2=Math.floor(m2/3)+1; |
| q2+=(_1e*4); |
| _1f=q2-q1; |
| break; |
| case "weekday": |
| var _24=Math.round(dojo.date.difference(_1b,_1c,"day")); |
| var _25=parseInt(dojo.date.difference(_1b,_1c,"week")); |
| var mod=_24%7; |
| if(mod==0){ |
| _24=_25*5; |
| }else{ |
| var adj=0; |
| var _28=_1b.getDay(); |
| var _29=_1c.getDay(); |
| _25=parseInt(_24/7); |
| mod=_24%7; |
| var _2a=new Date(_1b); |
| _2a.setDate(_2a.getDate()+(_25*7)); |
| var _2b=_2a.getDay(); |
| if(_24>0){ |
| switch(true){ |
| case _28==6: |
| adj=-1; |
| break; |
| case _28==0: |
| adj=0; |
| break; |
| case _29==6: |
| adj=-1; |
| break; |
| case _29==0: |
| adj=-2; |
| break; |
| case (_2b+mod)>5: |
| adj=-2; |
| } |
| }else{ |
| if(_24<0){ |
| switch(true){ |
| case _28==6: |
| adj=0; |
| break; |
| case _28==0: |
| adj=1; |
| break; |
| case _29==6: |
| adj=2; |
| break; |
| case _29==0: |
| adj=1; |
| break; |
| case (_2b+mod)<0: |
| adj=2; |
| } |
| } |
| } |
| _24+=adj; |
| _24-=(_25*2); |
| } |
| _1f=_24; |
| break; |
| case "year": |
| _1f=_1e; |
| break; |
| case "month": |
| _1f=(_1c.getMonth()-_1b.getMonth())+(_1e*12); |
| break; |
| case "week": |
| _1f=parseInt(dojo.date.difference(_1b,_1c,"day")/7); |
| break; |
| case "day": |
| _1f/=24; |
| case "hour": |
| _1f/=60; |
| case "minute": |
| _1f/=60; |
| case "second": |
| _1f/=1000; |
| case "millisecond": |
| _1f*=_1c.getTime()-_1b.getTime(); |
| } |
| return Math.round(_1f); |
| }; |
| } |