Date._MD=[31,28,31,30,31,30,31,31,30,31,30,31];Date.SECOND=1000;Date.MINUTE=60*Date.SECOND;Date.HOUR=60*Date.MINUTE;Date.DAY=24*Date.HOUR;Date.WEEK=7*Date.DAY;Date.prototype.getMonthDays=function(b){var a=this.getFullYear();if(typeof b=="undefined"){b=this.getMonth()}if(((0==(a%4))&&((0!=(a%100))||(0==(a%400))))&&b==1){return 29}else{return Date._MD[b]}};Date.prototype.getDayOfYear=function(){var a=new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var c=new Date(this.getFullYear(),0,0,0,0,0);var b=a-c;return Math.floor(b/Date.DAY)};Date.prototype.getWeekNumber=function(){var c=new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var b=c.getDay();c.setDate(c.getDate()-(b+6)%7+3);var a=c.valueOf();c.setMonth(0);c.setDate(4);return Math.round((a-c.valueOf())/(7*86400000))+1};Date.prototype.equalsTo=function(a){return((this.getFullYear()==a.getFullYear())&&(this.getMonth()==a.getMonth())&&(this.getDate()==a.getDate())&&(this.getHours()==a.getHours())&&(this.getMinutes()==a.getMinutes()))};Date.prototype.dateEqualsTo=function(a){return((this.getFullYear()==a.getFullYear())&&(this.getMonth()==a.getMonth())&&(this.getDate()==a.getDate()))};Date.prototype.setDateOnly=function(a){var b=new Date(a);this.setDate(1);this.setFullYear(b.getFullYear());this.setMonth(b.getMonth());this.setDate(b.getDate())};Date.prototype.print=function(l){var b=this.getMonth();var k=this.getDate();var n=this.getFullYear();var p=this.getWeekNumber();var q=this.getDay();var v={};var r=this.getHours();var c=(r>=12);var h=(c)?(r-12):r;var u=this.getDayOfYear();if(h==0){h=12}var e=this.getMinutes();var j=this.getSeconds();v["%a"]=Zapatec.Calendar.i18n(q,"sdn");v["%A"]=Zapatec.Calendar.i18n(q,"dn");v["%b"]=Zapatec.Calendar.i18n(b,"smn");v["%B"]=Zapatec.Calendar.i18n(b,"mn");v["%C"]=1+Math.floor(n/100);v["%d"]=(k<10)?("0"+k):k;v["%e"]=k;v["%H"]=(r<10)?("0"+r):r;v["%I"]=(h<10)?("0"+h):h;v["%j"]=(u<100)?((u<10)?("00"+u):("0"+u)):u;v["%k"]=r?r:"0";v["%l"]=h;v["%m"]=(b<9)?("0"+(1+b)):(1+b);v["%M"]=(e<10)?("0"+e):e;v["%n"]="\n";v["%p"]=c?"PM":"AM";v["%P"]=c?"pm":"am";v["%s"]=Math.floor(this.getTime()/1000);v["%S"]=(j<10)?("0"+j):j;v["%t"]="\t";v["%U"]=v["%W"]=v["%V"]=(p<10)?("0"+p):p;v["%u"]=(q==0)?7:q;v["%w"]=q?q:"0";v["%y"]=(""+n).substr(2,2);v["%Y"]=n;v["%%"]="%";var t=/%./g;var o=l.match(t);for(var g=0;g<o.length;g++){var f=v[o[g]];if(f){t=new RegExp(o[g],"g");l=l.replace(t,f)}}return l};Date.parseDate=function(p,c){if(!p){return new Date()}var q=0;var e=-1;var n=0;var s=p.split(/\W+/);var r=c.split(/[^A-Za-z0-9_%]+/);var k=0,h=0;var u=0;var g=0;var l=0;for(k=0;k<s.length;++k){if(!s[k]){continue}switch(r[k]){case"%d":case"%e":n=parseInt(s[k],10);break;case"%m":e=parseInt(s[k],10)-1;break;case"%Y":case"%y":q=parseInt(s[k],10);(q<100)&&(q+=(q>29)?1900:2000);break;case"%b":for(h=0;h<12;++h){if(Zapatec.Calendar.i18n(h,"smn").toLowerCase()==s[k].toLowerCase()){e=h;break}}break;case"%B":for(h=0;h<12;++h){if(Zapatec.Calendar.i18n(h,"mn").toLowerCase()==s[k].toLowerCase()){e=h;break}}break;case"%H":case"%I":case"%k":case"%l":u=parseInt(s[k],10);break;case"%P":case"%p":if(/pm/i.test(s[k])&&u<12){u+=12}if(/am/i.test(s[k])&&u==12){u=0}break;case"%M":g=parseInt(s[k],10);break;case"%S":l=parseInt(s[k],10);break}}var f=!isNaN(q)&&!isNaN(e)&&!isNaN(n)&&!isNaN(u)&&!isNaN(g)&&!isNaN(l);if(!f){return null}if(q!=0&&e!=-1&&n!=0){return new Date(q,e,n,u,g,l)}q=0;e=-1;n=0;for(k=0;k<s.length;++k){if(s[k].search(/[a-zA-Z]+/)!=-1){var v=-1;for(h=0;h<12;++h){if(Zapatec.Calendar.i18n(h,"mn").substr(0,s[k].length).toLowerCase()==s[k].toLowerCase()){v=h;break}}if(v!=-1){if(e!=-1){n=e+1}e=v}}else{if(parseInt(s[k],10)<=12&&e==-1){e=s[k]-1}else{if(parseInt(s[k],10)>31&&q==0){q=parseInt(s[k],10);(q<100)&&(q+=(q>29)?1900:2000)}else{if(n==0){n=s[k]}}}}}if(q==0){var o=new Date();q=o.getFullYear()}if(e!=-1&&n!=0){return new Date(q,e,n,u,g,l)}return null};Date.prototype.__msh_oldSetFullYear=Date.prototype.setFullYear;Date.prototype.setFullYear=function(b){var a=new Date(this);a.__msh_oldSetFullYear(b);if(a.getMonth()!=this.getMonth()){this.setDate(28)}this.__msh_oldSetFullYear(b)};Date.prototype.compareDatesOnly=function(e,d){var c=e.getYear();var b=d.getYear();var a=e.getMonth();var h=d.getMonth();var g=e.getDate();var f=d.getDate();if(c>b){return -1}if(b>c){return 1}if(a>h){return -1}if(h>a){return 1}if(g>f){return -1}if(f>g){return 1}return 0};