dojo.extend()

in tapestry-framework/src/js/dojo-0.4.3-custom-4.1.6/src/cal/iCalendar.js [247:519]


dojo.extend(dojo.cal.iCalendar.VEvent,{getDates:function(_36){
var _37=this.getDate();
var _38=[];
var _39=["su","mo","tu","we","th","fr","sa"];
var _3a={"daily":1,"weekly":2,"monthly":3,"yearly":4,"byday":1,"bymonthday":1,"byweekno":2,"bymonth":3,"byyearday":4};
for(var x=0;x<this.rrule.length;x++){
var _3c=this.rrule[x];
var _3d=_3c.freq.toLowerCase();
var _3e=1;
if(_3c.interval>_3e){
_3e=_3c.interval;
}
var set=[];
var _40=_3a[_3d];
if(_3c.until){
var _41=dojo.date.fromIso8601(_3c.until);
}else{
var _41=_36;
}
if(_41>_36){
_41=_36;
}
if(_37<_41){
var _42=function(){
};
var _43=function(){
};
_42.length=0;
_43.length=0;
switch(_3d){
case "yearly":
var _44=new Date(_37);
set.push(_44);
while(_44<_41){
_44.setYear(_44.getFullYear()+_3e);
_45=new Date(_44);
if(_45<_41){
set.push(_45);
}
}
break;
case "monthly":
_44=new Date(_37);
set.push(_44);
while(_44<_41){
_44.setMonth(_44.getMonth()+_3e);
var _45=new Date(_44);
if(_45<_41){
set.push(_45);
}
}
break;
case "weekly":
_44=new Date(_37);
set.push(_44);
while(_44<_41){
_44.setDate(_44.getDate()+(7*_3e));
var _45=new Date(_44);
if(_45<_41){
set.push(_45);
}
}
break;
case "daily":
_44=new Date(_37);
set.push(_44);
while(_44<_41){
_44.setDate(_44.getDate()+_3e);
var _45=new Date(_44);
if(_45<_41){
set.push(_45);
}
}
break;
}
if((_3c["bymonth"])&&(_3a["bymonth"]<_40)){
for(var z=0;z<_3c["bymonth"].length;z++){
if(z==0){
for(var zz=0;zz<set.length;zz++){
set[zz].setMonth(_3c["bymonth"][z]-1);
}
}else{
var _48=[];
for(var zz=0;zz<set.length;zz++){
var _49=new Date(set[zz]);
_49.setMonth(_3c[z]);
_48.push(_49);
}
tmp=set.concat(_48);
set=tmp;
}
}
}
if(_3c["byweekno"]&&!_3c["bymonth"]){
dojo.debug("TODO: no support for byweekno yet");
}
if(_3c["byyearday"]&&!_3c["bymonth"]&&!_3c["byweekno"]){
if(_3c["byyearday"].length>1){
var _4b="([+-]?)([0-9]{1,3})";
for(var z=1;x<_3c["byyearday"].length;z++){
var _4c=_3c["byyearday"][z].match(_4b);
if(z==1){
for(var zz=0;zz<set.length;zz++){
if(_4c[1]=="-"){
dojo.date.setDayOfYear(set[zz],366-_4c[2]);
}else{
dojo.date.setDayOfYear(set[zz],_4c[2]);
}
}
}else{
var _48=[];
for(var zz=0;zz<set.length;zz++){
var _49=new Date(set[zz]);
if(_4c[1]=="-"){
dojo.date.setDayOfYear(_49,366-_4c[2]);
}else{
dojo.date.setDayOfYear(_49,_4c[2]);
}
_48.push(_49);
}
tmp=set.concat(_48);
set=tmp;
}
}
}
}
if(_3c["bymonthday"]&&(_3a["bymonthday"]<_40)){
if(_3c["bymonthday"].length>0){
var _4b="([+-]?)([0-9]{1,3})";
for(var z=0;z<_3c["bymonthday"].length;z++){
var _4c=_3c["bymonthday"][z].match(_4b);
if(z==0){
for(var zz=0;zz<set.length;zz++){
if(_4c[1]=="-"){
if(_4c[2]<dojo.date.getDaysInMonth(set[zz])){
set[zz].setDate(dojo.date.getDaysInMonth(set[zz])-_4c[2]);
}
}else{
if(_4c[2]<dojo.date.getDaysInMonth(set[zz])){
set[zz].setDate(_4c[2]);
}
}
}
}else{
var _48=[];
for(var zz=0;zz<set.length;zz++){
var _49=new Date(set[zz]);
if(_4c[1]=="-"){
if(_4c[2]<dojo.date.getDaysInMonth(set[zz])){
_49.setDate(dojo.date.getDaysInMonth(set[zz])-_4c[2]);
}
}else{
if(_4c[2]<dojo.date.getDaysInMonth(set[zz])){
_49.setDate(_4c[2]);
}
}
_48.push(_49);
}
tmp=set.concat(_48);
set=tmp;
}
}
}
}
if(_3c["byday"]&&(_3a["byday"]<_40)){
if(_3c["bymonth"]){
if(_3c["byday"].length>0){
var _4b="([+-]?)([0-9]{0,1}?)([A-Za-z]{1,2})";
for(var z=0;z<_3c["byday"].length;z++){
var _4c=_3c["byday"][z].match(_4b);
var _4d=_4c[2];
var day=_4c[3].toLowerCase();
if(z==0){
for(var zz=0;zz<set.length;zz++){
if(_4c[1]=="-"){
var _4f=0;
var _50=dojo.date.getDaysInMonth(set[zz]);
var _51=1;
set[zz].setDate(_50);
if(_39[set[zz].getDay()]==day){
_4f++;
_51=7;
}
_51=1;
while(_4f<_4d){
set[zz].setDate(set[zz].getDate()-_51);
if(_39[set[zz].getDay()]==day){
_4f++;
_51=7;
}
}
}else{
if(_4d){
var _4f=0;
set[zz].setDate(1);
var _52=1;
if(_39[set[zz].getDay()]==day){
_4f++;
_52=7;
}
while(_4f<_4d){
set[zz].setDate(set[zz].getDate()+_52);
if(_39[set[zz].getDay()]==day){
_4f++;
_52=7;
}
}
}else{
var _4f=0;
var _48=[];
_50=new Date(set[zz]);
var _53=dojo.date.getDaysInMonth(set[zz]);
_50.setDate(_53);
set[zz].setDate(1);
if(_39[set[zz].getDay()]==day){
_4f++;
}
var _45=new Date(set[zz]);
_52=1;
while(_45.getDate()<_50){
if(_39[_45.getDay()]==day){
_4f++;
if(_4f==1){
set[zz]=_45;
}else{
_48.push(_45);
_45=new Date(_45);
_52=7;
_45.setDate(_45.getDate()+_52);
}
}else{
_45.setDate(_45.getDate()+_52);
}
}
var t=set.concat(_48);
set=t;
}
}
}
}else{
var _48=[];
for(var zz=0;zz<set.length;zz++){
var _49=new Date(set[zz]);
if(_4c[1]=="-"){
if(_4c[2]<dojo.date.getDaysInMonth(set[zz])){
_49.setDate(dojo.date.getDaysInMonth(set[zz])-_4c[2]);
}
}else{
if(_4c[2]<dojo.date.getDaysInMonth(set[zz])){
_49.setDate(_4c[2]);
}
}
_48.push(_49);
}
tmp=set.concat(_48);
set=tmp;
}
}
}
}else{
dojo.debug("TODO: byday within a yearly rule without a bymonth");
}
}
dojo.debug("TODO: Process BYrules for units larger than frequency");
var tmp=_38.concat(set);
_38=tmp;
}
}
_38.push(_37);
return _38;
},getDate:function(){
return dojo.date.fromIso8601(this.dtstart.value);
}});