Changeset 7890 in spip-zone


Ignore:
Timestamp:
Dec 12, 2006, 1:39:18 PM (14 years ago)
Author:
spipcarto@…
Message:

MAJ datePicker

Location:
_plugins_/_stable_/forms/forms_et_tables_1_9_1/javascript
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/javascript/datePicker.js

    r7069 r7890  
    77 *   http://www.opensource.org/licenses/mit-license.php
    88 *
    9  * $LastChangedDate: 2006-10-08 19:08:47 +0100 (Sun, 08 Oct 2006) $
    10  * $Rev: 23 $
     9 * $LastChangedDate: 2006-11-26 17:52:59 +0000 (Sun, 26 Nov 2006) $
     10 * $Rev: 33 $
    1111 */
    12 eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[(function(e){return d[e]})];e=(function(){return'\\w+'});c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('$.q=4(){8(1d.23==J){1d.23={3g:4(){}}}3 1D=[\'2z\',\'3s\',\'2A\',\'34\',\'3b\',\'2D\',\'2E\',\'2M\',\'2G\',\'2H\',\'2I\',\'2v\'];3 1w=[\'2J\',\'2w\',\'2K\',\'3r\',\'2N\',\'2O\',\'2P\'];3 10={p:\'2Q\',n:\'2R\',c:\'2S\'};3 11=\'G/D/F\';3 x;3 r;3 M;3 l;3 1p=4(1Q){3 s=\'0\'+1Q;f s.2U(s.1n-2)};3 O=4(E){1T(11.1x()){K\'F-D-G\':k=E.1o(\'-\');f j h(k[0],S(k[1])-1,k[2]);K\'G/D/F\':k=E.1o(\'/\');f j h(k[2],S(k[1])-1,S(k[0]));K\'D/G/F\':1V:3 1q=1q?1q:[2,1,0];k=E.1o(\'/\');f j h(k[2],S(k[0])-1,S(k[1]))}};3 1A=4(d){3 16=d.9();3 14=1p(d.b()+1);3 12=1p(d.Q());1T(11.1x()){K\'F-D-G\':f 16+\'-\'+14+\'-\'+12;K\'G/D/F\':f 12+\'/\'+14+\'/\'+16;K\'D/G/F\':1V:f 14+\'/\'+12+\'/\'+16}};3 Z=4(E){3 L=j h();8(E==J){d=j h(L.9(),L.b(),1)}B{d=E;d.1R(1)}8((d.b()<x.b()&&d.9()==x.9())||d.9()<x.9()){d=j h(x.9(),x.b(),1)}B 8((d.b()>r.b()&&d.9()==r.9())||d.9()>r.9()){d=j h(r.9(),r.b(),1)}3 1b=$.W({t:\'u-o\'},\'\');3 P=$(1b);3 1f=17;3 2a=x.Q();3 1r=\'\';8(!(d.b()==x.b()&&d.9()==x.9())){1f=C;3 1X=j h(d.9(),d.b()-1,1);3 1h=$.A({X:\'15:;\'},10.p);$(1h).V(4(){$.q.1m(1X,g);f C});1r=$.W({t:\'1y-2Z\'},\'<\',1h)}3 1j=17;3 2c=r.Q();1s=\'\';8(!(d.b()==r.b()&&d.9()==r.9())){1j=C;3 1Y=j h(d.9(),d.b()+1,1);3 1i=$.A({X:\'15:;\'},10.n);$(1i).V(4(){$.q.1m(1Y,g);f C});1s=$.W({t:\'1y-31\'},1i,\'>\')}3 1k=$.A({X:\'15:;\'},10.c);$(1k).V(4(){$.q.2b()});P.13($.W({t:\'1y-35\'},1k),$.36({},1D[d.b()],\' \',d.9()));3 1u=$.25({});1O(3 i=0;i<7;i++){3 18=1w[i];1u.1z($.37({38:\'39\',3a:18,1W:18},18.3c(0,1)))}3 19=$.3d();3 28=(j h(d.9(),d.b()+1,0)).Q();3 m=-d.3e();3 2k=(j h()).Q();3 2h=d.b()==L.b()&&d.9()==L.9();3 w=0;1U(w++<6){3 1B=$.25({});1O(3 i=0;i<7;i++){3 Y={};8(m<0||m>=28){H=\' \'}B 8(1f&&m<2a-1){H=m+1;Y.t=\'2d\'}B 8(1j&&m>2c-1){H=m+1;Y.t=\'2d\'}B{d.1R(m+1);3 1v=1A(d);H=$.A({X:\'#\',2f:1v},m+1);$(H).V(4(e){$.q.24($.3i(g,\'2f\'),g);f C});8(M&&M==1v){$(H).3k(\'3l\')}}8(2h&&m+1==2k){Y.t=\'L\'}1B.1z($.3p(Y,H));m++}19.1z(1B)}P.13($.2o({2p:2},$.2q({},1u),19),1r,1s);8($.2m.2g){P.13(1g.2r(\'2s\'))}P.1J({\'1K\':\'2t\'});f 1b};3 T=4(c){$(\'v.u-o a\',l).1t();$(\'v.u-o\',l).20();$(\'v.u-o\',l).2u();l.13(c)};3 I=4(){$(\'v.u-o a\',l).1t();$(\'v.u-o\',l).20();$(\'v.u-o\',l).1J({\'1K\':\'2y\'});$(1g).1t(\'1Z\',1l);2B l;l=2C};3 2F=4(e){3 1E=e.2j?e.2j:(e.1P?e.1P:0);8(1E==27){I()}f C};3 1l=4(e){3 1e=$.2m.2g?1d.2T.2V:e.1e;3 1S=$(1e).R(\'v.u-o\');8(1S.2W(0).t!=\'N-1c-21\'){I()}};f{26:4(){8(l){I()}g.2X();3 z=$(\'z\',$(g).R(\'z\'))[0];x=z.1a;r=z.U;l=$(g).R(\'v.u-o\');3 d=$(z).1M();8(d!=\'\'){8(1A(O(d))==d){M=d;T(Z(O(d)))}B{M=C;T(Z())}}B{M=C;T(Z())}$(1g).32(\'1Z\',1l)},1m:4(d,e){T(Z(d))},24:4(d,y){3f=d;$(\'z\',$(y).R(\'z\')).1M(d);I(y)},2b:4(){I(g)},1N:4(i){i.2e=17},1L:4(i){f i.2e!=J},3j:4(2i){11=2i},3o:4(2l,1F,1G){1w=2l;1D=1F;10=1G},1H:4(i,w){8(w==J)w={};8(w.1I==J){i.1a=j h()}B{i.1a=O(w.1I)}8(w.2n==J){i.U=j h();i.U.2x(i.U.9()+5)}B{i.U=O(w.2n)}}}}();$.29.R=4(s){3 y=g;1U(17){8($(s,y).1n>0){f(y)}y=y.30();8(y[0].1n==0){f C}}};$.29.q=4(a){g.3h(4(){8(g.3m.1x()!=\'z\')f;$.q.1H(g,a);8(!$.q.1L(g)){3 1C=$.A({X:\'15:;\',t:\'N-1c\',1W:\'22 N\'},$.33({},\'22 N\'));$(1C).V($.q.26);$(g).3n(\'<v 3q="N-1c-21"></v>\').2Y($.W({t:\'u-o\'})).2L(1C);$.q.1N(g)}})};',62,215,'|||var|function||||if|getFullYear||getMonth||||return|this|Date||new|dParts|_openCal|curDay||calendar||datePicker|_lastDate||className|popup|div||_firstDate|ele|input||else|false|mm|dIn|yyyy|dd|dayStr|_closeDatePicker|undefined|case|today|_selectedDate|date|_strToDate|jCalDiv|getDate|findClosestParent|Number|_draw|_endDate|click|DIV|href|atts|_getCalendarDiv|navLinks|dateFormat|dD|append|dM|javascript|dY|true|day|tBody|_startDate|calDiv|picker|window|target|firstMonth|document|prevLink|nextLink|finalMonth|closeLink|_checkMouse|changeMonth|length|split|_zeroPad|parts|prevLinkDiv|nextLinkDiv|unbind|headRow|dStr|days|toLowerCase|link|appendChild|_dateToStr|thisRow|calBut|months|key|aMonths|aNavLinks|setDateWindow|startDate|css|display|isInited|val|setInited|for|which|num|setDate|cp|switch|while|default|title|lastMonth|nextMonth|mousedown|empty|holder|Choose|console|selectDate|TR|show||lastDay|fn|firstDate|closeCalendar|lastDate|inactive|_inited|rel|msie|thisMonth|format|keyCode|todayDate|aDays|browser|endDate|TABLE|cellspacing|THEAD|createElement|iframe|block|remove|December|Monday|setFullYear|none|January|March|delete|null|June|July|_handleKeys|September|October|November|Sunday|Tuesday|after|August|Thursday|Friday|Saturday|Prev|Next|Close|event|substring|srcElement|get|blur|before|prev|parent|next|bind|SPAN|April|close|H3|TH|scope|col|abbr|May|substr|TBODY|getDay|selectedDate|log|each|attr|setDateFormat|addClass|selected|nodeName|wrap|setLanguageStrings|TD|class|Wednesday|Febuary'.split('|'),0,{}))
     12eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('4.x=8(){9(1s.2p==M){1s.2p={2E:8(){}}}3 1C=[\'2F\',\'2G\',\'3p\',\'2H\',\'3q\',\'2I\',\'3X\',\'3a\',\'2M\',\'2N\',\'32\',\'35\'];3 1B=[\'2P\',\'2Q\',\'2Z\',\'3f\',\'2T\',\'2U\',\'3U\'];3 R={p:\'2V\',n:\'2W\',c:\'2X\',b:\'30 14\'};3 19=\'1H\';3 y="/";3 K;3 A;3 F;3 S;3 v;3 1E=8(2r){3 s=\'0\'+2r;h s.31(s.1j-2)};3 15=8(L){2n(19){Q\'1O\':u=L.1q(y);h t r(u[0],13(u[1])-1,u[2]);Q\'1H\':u=L.1q(y);h t r(u[2],13(u[1])-1,13(u[0]));Q\'2k\':1P:3 1D=1D?1D:[2,1,0];u=L.1q(y);h t r(u[2],13(u[0])-1,13(u[1]))}};3 1o=8(d){3 1d=d.f();3 18=1E(d.g()+1);3 1b=1E(d.Y());2n(19){Q\'1O\':h 1d+y+18+y+1b;Q\'1H\':h 1b+y+18+y+1d;Q\'2k\':1P:h 18+y+1b+y+1d}};3 V=8(L){3 O=t r();9(L==M){d=t r(O.f(),O.g(),1)}E{d=L;d.2a(1)}9((d.g()<A.g()&&d.f()==A.f())||d.f()<A.f()){d=t r(A.f(),A.g(),1)}E 9((d.g()>F.g()&&d.f()==F.f())||d.f()>F.f()){d=t r(F.f(),F.g(),1)}3 P=4("<l>").o(\'m\',\'C-B\');3 1i=1c;3 25=A.Y();3 1m=\'\';9(!(d.g()==A.g()&&d.f()==A.f())){1i=G;3 2C=t r(d.f(),d.g()-1,1);3 2h=4("<a>").U(\'W:;\').J(R.p).16(8(){4.x.1r(2C,k);h G});1m=4("<l>").o(\'m\',\'1p-3w\').J(\'&38;\').j(2h)}3 1n=1c;3 28=F.Y();1y=\'\';9(!(d.g()==F.g()&&d.f()==F.f())){1n=G;3 1T=t r(d.f(),d.g()+1,1);3 1U=4("<a>").U(\'W:;\').J(R.n).16(8(){4.x.1r(1T,k);h G});1y=4("<l>").o(\'m\',\'1p-3b\').J(\'&3c;\').3d(1U)}3 1V=4("<a>").o(\'U\',\'W:;\').J(R.c).16(8(){4.x.2i()});P.j(4("<l>").o(\'m\',\'1p-3e\').j(1V),4("<3g>").J(1C[d.g()]+\' \'+d.f()));3 1f=4("<20>");21(3 i=K;i<K+7;i++){3 I=i%7;3 17=1B[I];1f.j(4("<3h>").o({\'3i\':\'3j\',\'3k\':17,\'1l\':17,\'m\':(I==0||I==6?\'22\':\'I\')}).J(17.3m(0,1)))}3 1v=4("<3n>");3 24=(t r(d.f(),d.g()+1,0)).Y();3 q=K-d.3o();9(q>0)q-=7;3 2f=(t r()).Y();3 2e=d.g()==O.g()&&d.f()==O.f();3 w=0;1W(w++<6){3 1w=4("<20>");21(3 i=0;i<7;i++){3 I=(K+i)%7;3 Z={\'m\':(I==0||I==6?\'22 \':\'I \')};9(q<0||q>=24){N=\' \'}E 9(1i&&q<25-1){N=q+1;Z[\'m\']+=\'29\'}E 9(1n&&q>28-1){N=q+1;Z[\'m\']+=\'29\'}E{d.2a(q+1);3 1h=1o(d);N=4("<a>").o({\'U\':\'W:;\',\'2c\':1h}).J(q+1).16(8(e){4.x.26(4.o(k,\'2c\'),k);h G})[0];9(S&&S==1h){4(N).o(\'m\',\'3s\')}}9(2e&&q+1==2f){Z[\'m\']+=\'O\'}1w.j(4("<3u>").o(Z).j(N));q++}1v.j(1w)}P.j(4("<3y>").o(\'3z\',2).j("<2l>").3B("2l").j(1f).1Z().j(1v.3E())).j(1m).j(1y);9(4.1M.1N){3 1G=[\'<1G m="3G" 3H="-1" \',\'3I="1u:1I; 3J:3L;\',\'3M: 0;\',\'3N:0;\',\'z-3O:-1; 3P:3Q(3R=\\\'0\\\');\',\'3S:2z;\',\'3T:2z"/>\'].3V(\'\');P.j(1g.3W(1G))}P.1Y({\'1u\':\'1I\'});h P[0]};3 10=8(c){4(\'l.C-B a\',v).1A();4(\'l.C-B\',v).23();4(\'l.C-B\',v).2D();v.j(c)};3 T=8(){4(\'l.C-B a\',v).1A();4(\'l.C-B\',v).23();4(\'l.C-B\',v).1Y({\'1u\':\'2L\'});4(1g).1A(\'1X\',1k);2O v;v=2R};3 2S=8(e){3 1L=e.2u?e.2u:(e.2w?e.2w:0);9(1L==27){T()}h G};3 1k=8(e){3 1x=4.1M.1N?1s.33.34:e.1x;3 1Q=4(1x).X(\'l.C-B\');9(1Q.36(0).37!=\'14-1e-2B\'){T()}};h{1K:8(){h R.b},2q:8(){9(v){T()}k.39();3 D=4(\'D\',4(k).X(\'D\'))[0];A=D.1F;F=D.11;K=D.K;v=4(k).X(\'l.C-B\');3 d=4(D).2b();9(d!=\'\'){9(1o(15(d))==d){S=d;10(V(15(d)))}E{S=G;10(V())}}E{S=G;10(V())}4(1g).3l(\'1X\',1k)},1r:8(d,e){10(V(d))},26:8(d,H){3r=d;3 $1t=4(\'D\',4(H).X(\'D\'));$1t.2b(d);$1t.3t(\'3v\');T(H)},2i:8(){T(k)},1R:8(i){i.2j=1c},2A:8(i){h i.2j!=M},3A:8(2m,1z){19=2m.2o();y=1z?1z:"/"},3K:8(2s,2v,2y){1B=2s;1C=2v;R=2y},2x:8(i,w){9(w==M)w={};9(w.1J==M){i.1F=t r()}E{i.1F=15(w.1J)}9(w.2t==M){i.11=t r();i.11.2J(i.11.f()+5)}E{i.11=15(w.2t)};i.K=w.1S==M?0:w.1S}}}();4.2g.X=8(s){3 H=k;1W(1c){9(4(s,H).1j>0){h(H)}H=H.1Z();9(H[0].1j==0){h G}}};4.2g.x=8(a){k.3x(8(){9(k.3F.2o()!=\'D\')h;4.x.2x(k,a);9(!4.x.2A(k)){3 1a=4.x.1K();3 12;9(a&&a.2Y){12=4(k).o({\'m\':\'14-1e\',\'1l\':1a})}E{12=4("<a>").o({\'U\':\'W:;\',\'m\':\'14-1e\',\'1l\':1a}).j("<2d>"+1a+"</2d>")}4(k).3C(\'<l m="14-1e-2B"></l>\').2K(4("<l>").o({\'m\':\'C-B\'})).3D(12);12.16(4.x.2q);4.x.1R(k)}})};',62,246,'|||var|jQuery||||function|if||||||getFullYear|getMonth|return||append|this|div|class||attr||curDay|Date||new|dParts|_openCal||datePicker|dateSeparator||_firstDate|calendar|popup|input|else|_lastDate|false|ele|weekday|html|_firstDayOfWeek|dIn|undefined|dayStr|today|jCalDiv|case|navLinks|_selectedDate|_closeDatePicker|href|_getCalendarDiv|javascript|findClosestParent|getDate|atts|_draw|_endDate|calBut|Number|date|_strToDate|click|day|dM|dateFormat|chooseDate|dD|true|dY|picker|headRow|document|dStr|firstMonth|length|_checkMouse|title|prevLinkDiv|finalMonth|_dateToStr|link|split|changeMonth|window|theInput|display|tBody|thisRow|target|nextLinkDiv|separator|unbind|days|months|parts|_zeroPad|_startDate|iframe|dmy|block|startDate|getChooseDateStr|key|browser|msie|ymd|default|cp|setInited|firstDayOfWeek|nextMonth|nextLink|closeLink|while|mousedown|css|parent|tr|for|weekend|empty|lastDay|firstDate|selectDate||lastDate|inactive|setDate|val|rel|span|thisMonth|todayDate|fn|prevLink|closeCalendar|_inited|mdy|thead|format|switch|toLowerCase|console|show|num|aDays|endDate|keyCode|aMonths|which|setDateWindow|aNavLinks|3000px|isInited|holder|lastMonth|remove|log|January|February|April|June|setFullYear|before|none|September|October|delete|Sunday|Monday|null|_handleKeys|Thursday|Friday|Prev|Next|Close|inputClick|Tuesday|Choose|substring|November|event|srcElement|December|get|className|lt|blur|August|next|gt|prepend|close|Wednesday|h3|th|scope|col|abbr|bind|substr|tbody|getDay|March|May|selectedDate|selected|trigger|td|change|prev|each|table|cellspacing|setDateFormat|find|wrap|after|children|nodeName|bgiframe|tabindex|style|position|setLanguageStrings|absolute|top|left|index|filter|Alpha|Opacity|width|height|Saturday|join|createElement|July'.split('|'),0,{}))
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/javascript/datePicker_source.js

    r7069 r7890  
    77 *   http://www.opensource.org/licenses/mit-license.php
    88 *
    9  * $LastChangedDate: 2006-10-08 19:08:47 +0100 (Sun, 08 Oct 2006) $
    10  * $Rev: 23 $
     9 * $LastChangedDate: 2006-11-26 17:52:59 +0000 (Sun, 26 Nov 2006) $
     10 * $Rev: 33 $
    1111 */
    12  
    13 $.datePicker = function()
     12
     13jQuery.datePicker = function()
    1414{
    1515        // so that firebug console.log statements don't break IE
    1616        if (window.console == undefined) { window.console = {log:function(){}}; }
    17        
    18         var months = ['January', 'Febuary', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
     17
     18        var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
    1919        var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    20         var navLinks = {p:'Prev', n:'Next', c:'Close'};
    21         var dateFormat = 'dd/mm/yyyy';
     20        var navLinks = {p:'Prev', n:'Next', c:'Close', b:'Choose date'};
     21        var dateFormat = 'dmy';
     22        var dateSeparator = "/";
     23        var _firstDayOfWeek;
    2224        var _firstDate;
    2325        var _lastDate;
    24        
     26
    2527        var _selectedDate;
    2628        var _openCal;
    27        
    28         var _zeroPad = function(num) { 
     29
     30        var _zeroPad = function(num) {
    2931                var s = '0'+num;
    30                 return s.substring(s.length-2) 
     32                return s.substring(s.length-2)
    3133                //return ('0'+num).substring(-2); // doesn't work on IE :(
    3234        };
    3335        var _strToDate = function(dIn)
    3436        {
    35                 switch (dateFormat.toLowerCase()) {
    36                         case 'yyyy-mm-dd':
    37                                 dParts = dIn.split('-');
     37                switch (dateFormat) {
     38                        case 'ymd':
     39                                dParts = dIn.split(dateSeparator);
    3840                                return new Date(dParts[0], Number(dParts[1])-1, dParts[2]);
    39                         case 'dd/mm/yyyy':
    40                                 dParts = dIn.split('/');
     41                        case 'dmy':
     42                                dParts = dIn.split(dateSeparator);
    4143                                return new Date(dParts[2], Number(dParts[1])-1, Number(dParts[0]));
    42                         case 'mm/dd/yyyy':
     44                        case 'mdy':
    4345                        default:
    4446                                var parts = parts ? parts : [2, 1, 0];
    45                                 dParts = dIn.split('/');
     47                                dParts = dIn.split(dateSeparator);
    4648                                return new Date(dParts[2], Number(dParts[0])-1, Number(dParts[1]));
    4749                }
     
    5254                var dM = _zeroPad(d.getMonth()+1);
    5355                var dD = _zeroPad(d.getDate());
    54                 switch (dateFormat.toLowerCase()) {
    55                         case 'yyyy-mm-dd':
    56                                 return dY + '-' + dM + '-' + dD;
    57                         case 'dd/mm/yyyy':
    58                                 return dD + '/' + dM + '/' + dY;
    59                         case 'mm/dd/yyyy':
     56                switch (dateFormat) {
     57                        case 'ymd':
     58                                return dY + dateSeparator + dM + dateSeparator + dD;
     59                        case 'dmy':
     60                                return dD + dateSeparator + dM + dateSeparator + dY;
     61                        case 'mdy':
    6062                        default:
    61                                 return dM + '/' + dD + '/' + dY;
    62                 }
    63         };
    64        
     63                                return dM + dateSeparator + dD + dateSeparator + dY;
     64                }
     65        };
     66
    6567        var _getCalendarDiv = function(dIn)
    6668        {
     
    7476                        d.setDate(1);
    7577                }
    76                 // check that date is within allowed limits:           
     78                // check that date is within allowed limits:
    7779                if ((d.getMonth() < _firstDate.getMonth() && d.getFullYear() == _firstDate.getFullYear()) || d.getFullYear() < _firstDate.getFullYear()) {
    7880                        d = new Date(_firstDate.getFullYear(), _firstDate.getMonth(), 1);;
     
    8082                        d = new Date(_lastDate.getFullYear(), _lastDate.getMonth(), 1);;
    8183                }
    82                
    83                 var calDiv = $.DIV({className:'popup-calendar'}, '');
    84                 var jCalDiv = $(calDiv);
     84
     85                var jCalDiv = jQuery("<div>").attr('class','popup-calendar');
    8586                var firstMonth = true;
    8687                var firstDate = _firstDate.getDate();
    87                
     88
    8889                // create prev and next links
    8990                var prevLinkDiv = '';
    90                 if (!(d.getMonth() == _firstDate.getMonth() && d.getFullYear() == _firstDate.getFullYear())) { 
     91                if (!(d.getMonth() == _firstDate.getMonth() && d.getFullYear() == _firstDate.getFullYear())) {
    9192                        // not in first display month so show a previous link
    9293                        firstMonth = false;
    9394                        var lastMonth = new Date(d.getFullYear(), d.getMonth()-1, 1);
    94                         var prevLink = $.A({href:'javascript:;'}, navLinks.p);
    95                         $(prevLink).click(function()
     95                        var prevLink = jQuery("<a>").href('javascript:;').html(navLinks.p).click(function()
    9696                        {
    97                                 $.datePicker.changeMonth(lastMonth, this);
     97                                jQuery.datePicker.changeMonth(lastMonth, this);
    9898                                return false;
    9999                        });
    100                         prevLinkDiv = $.DIV({className:'link-prev'}, '<', prevLink);
    101                 }
    102                
     100                        prevLinkDiv = jQuery("<div>").attr('class','link-prev').html('&lt;').append(prevLink);
     101                }
     102
    103103                var finalMonth = true;
    104104                var lastDate = _lastDate.getDate();
    105105                nextLinkDiv = '';
    106                 if (!(d.getMonth() == _lastDate.getMonth() && d.getFullYear() == _lastDate.getFullYear())) { 
     106                if (!(d.getMonth() == _lastDate.getMonth() && d.getFullYear() == _lastDate.getFullYear())) {
    107107                        // in the last month - no next link
    108108                        finalMonth = false;
    109109                        var nextMonth = new Date(d.getFullYear(), d.getMonth()+1, 1);
    110                         var nextLink = $.A({href:'javascript:;'}, navLinks.n);
    111                         $(nextLink).click(function()
     110                        var nextLink = jQuery("<a>").href('javascript:;').html(navLinks.n).click(function()
    112111                        {
    113                                 $.datePicker.changeMonth(nextMonth, this);
     112                                jQuery.datePicker.changeMonth(nextMonth, this);
    114113                                return false;
    115114                        });
    116                         nextLinkDiv = $.DIV({className:'link-next'}, nextLink, '>');
    117                 }
    118                
    119                 var closeLink = $.A({href:'javascript:;'}, navLinks.c);
    120                 $(closeLink).click(function()
    121                 {
    122                         $.datePicker.closeCalendar();
     115                        nextLinkDiv = jQuery("<div>").attr('class','link-next').html('&gt;').prepend(nextLink);
     116                }
     117
     118                var closeLink = jQuery("<a>").attr('href','javascript:;').html(navLinks.c).click(function()
     119                {
     120                        jQuery.datePicker.closeCalendar();
    123121                });
    124                
     122
    125123                jCalDiv.append(
    126                         $.DIV({className:'link-close'}, closeLink),
    127                         $.H3({}, months[d.getMonth()], ' ', d.getFullYear())
     124                        jQuery("<div>").attr('class', 'link-close').append(closeLink),
     125                        jQuery("<h3>").html(months[d.getMonth()] + ' ' + d.getFullYear())
    128126                );
    129                
    130                 var headRow = $.TR({});
    131                 for (var i=0; i<7; i++) {
    132                         var day = days[i];
    133                         headRow.appendChild(
    134                                 $.TH({scope:'col', abbr:day, title:day}, day.substr(0, 1))
     127                var headRow = jQuery("<tr>");
     128                for (var i=_firstDayOfWeek; i<_firstDayOfWeek+7; i++) {
     129                        var weekday = i%7;
     130                        var day = days[weekday];
     131                        headRow.append(
     132                                jQuery("<th>").attr({'scope':'col', 'abbr':day, 'title':day, 'class':(weekday == 0 || weekday == 6 ? 'weekend' : 'weekday')}).html(day.substr(0, 1))
    135133                        );
    136134                }
    137                
    138                 var tBody = $.TBODY();
    139                
     135
     136                var tBody = jQuery("<tbody>");
     137
    140138                var lastDay = (new Date(d.getFullYear(), d.getMonth()+1, 0)).getDate();
    141                 var curDay = -d.getDay();
    142                
     139                var curDay = _firstDayOfWeek - d.getDay();
     140                if (curDay > 0) curDay -= 7;
     141
    143142                var todayDate = (new Date()).getDate();
    144143                var thisMonth = d.getMonth() == today.getMonth() && d.getFullYear() == today.getFullYear();
    145                
     144
    146145                var w = 0;
    147146                while (w++<6) {
    148                         var thisRow = $.TR({});
     147                        var thisRow = jQuery("<tr>");
    149148                        for (var i=0; i<7; i++) {
    150                                 var atts = {};
    151                                
     149                                var weekday = (_firstDayOfWeek + i) % 7;
     150                                var atts = {'class':(weekday == 0 || weekday == 6 ? 'weekend ' : 'weekday ')};
     151
    152152                                if (curDay < 0 || curDay >= lastDay) {
    153153                                        dayStr = ' ';
    154154                                } else if (firstMonth && curDay < firstDate-1) {
    155155                                        dayStr = curDay+1;
    156                                         atts.className = 'inactive';
     156                                        atts['class'] += 'inactive';
    157157                                } else if (finalMonth && curDay > lastDate-1) {
    158158                                        dayStr = curDay+1;
    159                                         atts.className = 'inactive';
     159                                        atts['class'] += 'inactive';
    160160                                } else {
    161161                                        d.setDate(curDay+1);
    162162                                        var dStr = _dateToStr(d);
    163                                         dayStr = $.A({href:'#', rel:dStr}, curDay+1);
    164                                         $(dayStr).click(function(e)
     163                                        dayStr = jQuery("<a>").attr({'href':'javascript:;', 'rel':dStr}).html(curDay+1).click(function(e)
    165164                                        {
    166                                                 $.datePicker.selectDate($.attr(this, 'rel'), this);
     165                                                jQuery.datePicker.selectDate(jQuery.attr(this, 'rel'), this);
    167166                                                return false;
    168                                         });
     167                                        })[0];
    169168                                        if (_selectedDate && _selectedDate==dStr) {
    170                                                 $(dayStr).addClass('selected');
     169                                                jQuery(dayStr).attr('class','selected');
    171170                                        }
    172171                                }
    173                                
     172
    174173                                if (thisMonth && curDay+1 == todayDate) {
    175                                         atts.className = 'today';
     174                                        atts['class'] += 'today';
    176175                                }
    177                                 thisRow.appendChild($.TD(atts, dayStr));
     176                                thisRow.append(jQuery("<td>").attr(atts).append(dayStr));
    178177                                curDay++;
    179178                        }
    180                         tBody.appendChild(thisRow);
    181                 }
    182                
     179                        tBody.append(thisRow);
     180                }
     181
    183182                jCalDiv.append(
    184                         $.TABLE({cellspacing:2}, $.THEAD({}, headRow), tBody),
    185                         prevLinkDiv,
    186                         nextLinkDiv
    187                 );
    188 
    189                 if ($.browser.msie) {
    190                        
     183                        jQuery("<table>").attr('cellspacing',2).append("<thead>")
     184                        .find("thead").append(headRow).parent().append(tBody.children())
     185                ).append(prevLinkDiv).append(nextLinkDiv);
     186
     187                if (jQuery.browser.msie) {
     188
    191189                        // we put a styled iframe behind the calendar so HTML SELECT elements don't show through
    192                         jCalDiv.append(document.createElement('iframe'));
    193 
     190                        var iframe = [  '<iframe class="bgiframe" tabindex="-1" ',
     191                                                        'style="display:block; position:absolute;',
     192                                                        'top: 0;',
     193                                                        'left:0;',
     194                                                        'z-index:-1; filter:Alpha(Opacity=\'0\');',
     195                                                        'width:3000px;',
     196                                                        'height:3000px"/>'].join('');
     197                        jCalDiv.append(document.createElement(iframe));
    194198                }
    195199                jCalDiv.css({'display':'block'});
    196                 return calDiv;
     200                return jCalDiv[0];
    197201        };
    198202        var _draw = function(c)
     
    205209                // memory so only one chunk of memory is used when you open the calendar (which is also freed when you
    206210                // close the calendar).
    207                 $('div.popup-calendar a', _openCal).unbind();
    208                 $('div.popup-calendar', _openCal).empty();
    209                 $('div.popup-calendar', _openCal).remove();
     211                jQuery('div.popup-calendar a', _openCal).unbind();
     212                jQuery('div.popup-calendar', _openCal).empty();
     213                jQuery('div.popup-calendar', _openCal).remove();
    210214                _openCal.append(c);
    211215        };
    212216        var _closeDatePicker = function()
    213217        {
    214                 $('div.popup-calendar a', _openCal).unbind();
    215                 $('div.popup-calendar', _openCal).empty();
    216                 $('div.popup-calendar', _openCal).css({'display':'none'});
    217                
     218                jQuery('div.popup-calendar a', _openCal).unbind();
     219                jQuery('div.popup-calendar', _openCal).empty();
     220                jQuery('div.popup-calendar', _openCal).css({'display':'none'});
     221
    218222                /*
    219                 if ($.browser.msie) {
     223                if (jQuery.browser.msie) {
    220224                        _openCal.unbind('keypress', _handleKeys);
    221225                } else {
    222                         $(window).unbind('keypress', _handleKeys);
     226                        jQuery(window).unbind('keypress', _handleKeys);
    223227                }
    224228                */
    225                 $(document).unbind('mousedown', _checkMouse);
     229                jQuery(document).unbind('mousedown', _checkMouse);
    226230                delete _openCal;
    227231                _openCal = null;
     
    238242        var _checkMouse = function(e)
    239243        {
    240                 var target = $.browser.msie ? window.event.srcElement : e.target;
    241                 var cp = $(target).findClosestParent('div.popup-calendar');
     244                var target = jQuery.browser.msie ? window.event.srcElement : e.target;
     245                var cp = jQuery(target).findClosestParent('div.popup-calendar');
    242246                if (cp.get(0).className != 'date-picker-holder') {
    243247                        _closeDatePicker();
    244248                }
    245249        };
    246        
     250
    247251        return {
     252                getChooseDateStr: function()
     253                {
     254                        return navLinks.b;
     255                },
    248256                show: function()
    249257                {
     
    252260                        }
    253261                        this.blur();
    254                         var input = $('input', $(this).findClosestParent('input'))[0];
     262                        var input = jQuery('input', jQuery(this).findClosestParent('input'))[0];
    255263                        _firstDate = input._startDate;
    256264                        _lastDate = input._endDate;
    257                         _openCal = $(this).findClosestParent('div.popup-calendar');
    258                         var d = $(input).val();
     265                        _firstDayOfWeek = input._firstDayOfWeek;
     266                        _openCal = jQuery(this).findClosestParent('div.popup-calendar');
     267                        var d = jQuery(input).val();
    259268                        if (d != '') {
    260269                                if (_dateToStr(_strToDate(d)) == d) {
     
    271280                        }
    272281                        /*
    273                         if ($.browser == "msie") {
     282                        if (jQuery.browser == "msie") {
    274283                                _openCal.bind('keypress', _handleKeys);
    275284                        } else {
    276                                 $(window).bind('keypress', _handleKeys);
     285                                jQuery(window).bind('keypress', _handleKeys);
    277286                        }
    278287                        */
    279                         $(document).bind('mousedown', _checkMouse);
     288                        jQuery(document).bind('mousedown', _checkMouse);
    280289                },
    281290                changeMonth: function(d, e)
    282291                {
    283                        
     292
    284293                        _draw(_getCalendarDiv(d));
    285294                },
     
    287296                {
    288297                        selectedDate = d;
    289                         $('input', $(ele).findClosestParent('input')).val(d);
     298                        var $theInput = jQuery('input', jQuery(ele).findClosestParent('input'));
     299                        $theInput.val(d);
     300                        $theInput.trigger('change');
    290301                        _closeDatePicker(ele);
    291302                },
     
    302313                        return i._inited != undefined;
    303314                },
    304                 setDateFormat: function(format)
     315                setDateFormat: function(format,separator)
    305316                {
    306317                        // set's the format that selected dates are returned in.
    307                         // options are 'dd/mm/yyyy' (european), 'mm/dd/yyyy' (americian) and 'yyyy-mm-dd' (unicode)
    308                         dateFormat = format;
     318                        // options are 'dmy' (european), 'mdy' (americian) and 'ymd' (unicode)
     319                        dateFormat = format.toLowerCase();
     320                        dateSeparator = separator?separator:"/";
    309321                },
    310322                /**
     
    316328                * days          -       Array, e.g. ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
    317329                * months        -       Array, e.g. ['January', 'Febuary', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
    318                 * navLinks      -       Object, e.g. {p:'Prev', n:'Next', c:'Close'}
     330                * navLinks      -       Object, e.g. {p:'Prev', n:'Next', c:'Close', b:'Choose date'}
    319331                **/
    320332                setLanguageStrings: function(aDays, aMonths, aNavLinks)
     
    333345                * w                     -       The date window - an object containing startDate and endDate properties
    334346                *                               each in the current format as set in a call to setDateFormat (or in the
    335                 *                               default format dd/mm/yyyy if setDateFormat hasn't been called).
     347                *                               default format dmy if setDateFormat hasn't been called).
    336348                *                               e.g. {startDate:'01/03/2006', endDate:'11/04/2006}
    337349                **/
     
    350362                                i._endDate = _strToDate(w.endDate);
    351363                        };
     364                        i._firstDayOfWeek = w.firstDayOfWeek == undefined ? 0 : w.firstDayOfWeek;
    352365                }
    353366        };
    354367}();
    355 $.fn.findClosestParent = function(s)
     368jQuery.fn.findClosestParent = function(s)
    356369{
    357370        var ele = this;
    358371        while (true) {
    359                 if ($(s, ele).length > 0) {
     372                if (jQuery(s, ele).length > 0) {
    360373                        return (ele);
    361374                }
     
    366379        }
    367380};
    368 $.fn.datePicker = function(a)
     381jQuery.fn.datePicker = function(a)
    369382{
    370383        this.each(function() {
    371384                if(this.nodeName.toLowerCase() != 'input') return;
    372                 $.datePicker.setDateWindow(this, a);
    373                 if (!$.datePicker.isInited(this)) {
    374                         var calBut = $.A({href:'javascript:;', className:'date-picker', title:'Choose date'}, $.SPAN({}, 'Choose date'));
    375                         $(calBut).click($.datePicker.show);
    376                         $(this).wrap(
     385                jQuery.datePicker.setDateWindow(this, a);
     386                if (!jQuery.datePicker.isInited(this)) {
     387                        var chooseDate = jQuery.datePicker.getChooseDateStr();
     388                        var calBut;
     389                        if(a && a.inputClick){
     390                                calBut = jQuery(this).attr({'class':'date-picker', 'title':chooseDate})
     391                        }
     392                        else {
     393                                calBut = jQuery("<a>").attr({'href':'javascript:;',
     394'class':'date-picker', 'title':chooseDate})
     395                                .append("<span>" + chooseDate + "</span>");
     396                        }
     397                        jQuery(this).wrap(
    377398                                '<div class="date-picker-holder"></div>'
    378399                        ).before(
    379                                 $.DIV({className:'popup-calendar'})
     400                                jQuery("<div>").attr({'class':'popup-calendar'})
    380401                        ).after(
    381402                                calBut
    382403                        );
    383                         $.datePicker.setInited(this);
     404                        calBut.click(jQuery.datePicker.show);
     405                        jQuery.datePicker.setInited(this);
    384406                }
    385407        });
     
    394416                <thead>
    395417                        <tr>
    396                                 <th scope="col" abbr="Monday" title="Monday">M</th>
    397                                 <th scope="col" abbr="Tuesday" title="Tuesday">T</th>
    398                                 <th scope="col" abbr="Wednesday" title="Wednesday">W</th>
    399                                 <th scope="col" abbr="Thursday" title="Thursday">T</th>
    400                                 <th scope="col" abbr="Friday" title="Friday">F</th>
    401                                 <th scope="col" abbr="Saturday" title="Saturday">S</th>
    402                                 <th scope="col" abbr="Sunday" title="Sunday">S</th>
     418                                <th scope="col" abbr="Monday" title="Monday" class="weekday">M</th>
     419                                <th scope="col" abbr="Tuesday" title="Tuesday" class="weekday">T</th>
     420                                <th scope="col" abbr="Wednesday" title="Wednesday" class="weekday">W</th>
     421                                <th scope="col" abbr="Thursday" title="Thursday" class="weekday">T</th>
     422                                <th scope="col" abbr="Friday" title="Friday" class="weekday">F</th>
     423                                <th scope="col" abbr="Saturday" title="Saturday" class="weekday">S</th>
     424                                <th scope="col" abbr="Sunday" title="Sunday" class="weekday">S</th>
    403425                        </tr>
    404426                </thead>
    405427                <tbody>
    406428                        <tr>
    407                                 <td>&nbsp;</td>
    408                                 <td>&nbsp;</td>
    409                                 <td>&nbsp;</td>
    410                                 <td class="inactive">1</td>
    411                                 <td class="inactive">2</td>
    412                                 <td class="inactive">3</td>
    413                                 <td class="inactive">4</td>
    414                         </tr>
    415                         <tr>
    416                                 <td class="inactive">5</td>
    417                                 <td class="inactive">6</td>
    418                                 <td class="inactive">7</td>
    419                                 <td class="today"><a href="#">8</a></td>
    420                                 <td><a href="#">9</a></td>
    421                                 <td><a href="#">10</a></td>
    422                                 <td><a href="#">11</a></td>
    423                         </tr>
    424                         <tr>
    425                                 <td><a href="#">12</a></td>
    426                                 <td><a href="#">13</a></td>
    427                                 <td><a href="#">14</a></td>
    428                                 <td><a href="#">15</a></td>
    429                                 <td><a href="#">16</a></td>
    430                                 <td><a href="#">17</a></td>
    431                                 <td><a href="#" class="selected">18</a></td>
    432                         </tr>
    433                         <tr>
    434                                 <td><a href="#">19</a></td>
    435                                 <td><a href="#">20</a></td>
    436                                 <td><a href="#">21</a></td>
    437                                 <td><a href="#">22</a></td>
    438                                 <td><a href="#">23</a></td>
    439                                 <td><a href="#">24</a></td>
    440                                 <td><a href="#">25</a></td>
    441                         </tr>
    442                         <tr>
    443                                 <td><a href="#">26</a></td>
    444                                 <td><a href="#">27</a></td>
    445                                 <td><a href="#">28</a></td>
    446                                 <td><a href="#">29</a></td>
    447                                 <td><a href="#">30</a></td>
    448                                 <td>&nbsp;</td>
    449                                 <td>&nbsp;</td>
     429                                <td class="weekday">&nbsp;</td>
     430                                <td class="weekday">&nbsp;</td>
     431                                <td class="weekday">&nbsp;</td>
     432                                <td class="inactive weekday">1</td>
     433                                <td class="inactive weekday">2</td>
     434                                <td class="inactive weekend">3</td>
     435                                <td class="inactive weekend">4</td>
     436                        </tr>
     437                        <tr>
     438                                <td class="inactive weekday">5</td>
     439                                <td class="inactive weekday">6</td>
     440                                <td class="inactive weekday">7</td>
     441                                <td class="today weekday"><a href="#">8</a></td>
     442                                <td class="weekday"><a href="#">9</a></td>
     443                                <td class="weekend"><a href="#">10</a></td>
     444                                <td class="weekend"><a href="#">11</a></td>
     445                        </tr>
     446                        <tr>
     447                                <td class="weekday"><a href="#">12</a></td>
     448                                <td class="weekday"><a href="#">13</a></td>
     449                                <td class="weekday"><a href="#">14</a></td>
     450                                <td class="weekday"><a href="#">15</a></td>
     451                                <td class="weekday"><a href="#">16</a></td>
     452                                <td class="weekend"><a href="#">17</a></td>
     453                                <td class="weekend"><a href="#" class="selected">18</a></td>
     454                        </tr>
     455                        <tr>
     456                                <td class="weekday"><a href="#">19</a></td>
     457                                <td class="weekday"><a href="#">20</a></td>
     458                                <td class="weekday"><a href="#">21</a></td>
     459                                <td class="weekday"><a href="#">22</a></td>
     460                                <td class="weekday"><a href="#">23</a></td>
     461                                <td class="weekend"><a href="#">24</a></td>
     462                                <td class="weekend"><a href="#">25</a></td>
     463                        </tr>
     464                        <tr>
     465                                <td class="weekday"><a href="#">26</a></td>
     466                                <td class="weekday"><a href="#">27</a></td>
     467                                <td class="weekday"><a href="#">28</a></td>
     468                                <td class="weekday"><a href="#">29</a></td>
     469                                <td class="weekday"><a href="#">30</a></td>
     470                                <td class="weekend">&nbsp;</td>
     471                                <td class="weekend">&nbsp;</td>
    450472                        </tr>
    451473                </tbody>
Note: See TracChangeset for help on using the changeset viewer.