
net.watchee.CronExpression=function(cronExpressionStr,flagHashtable){var cronExpressionStr=cronExpressionStr||null;this.flagHashtable=flagHashtable||new org.xmlBlaster.util.Hashtable();this.parseExpression(cronExpressionStr);}
net.watchee.CronExpression.prototype.parseExpression=function(cronExpressionStr){var cronExpressionStr=cronExpressionStr||null;var array=[];if(cronExpressionStr!=null){cronExpressionStr=cronExpressionStr.toUpperCase();cronExpressionStr=cronExpressionStr.replace(/\t/g," ");array=cronExpressionStr.split(" ");}
this.seconds=array[net.watchee.CronExpression.SECOND]||"0";this.minutes=array[net.watchee.CronExpression.MINUTE]||"0";this.hours=array[net.watchee.CronExpression.HOUR]||"0";this.dayOfMonth=array[net.watchee.CronExpression.DAY_OF_MONTH]||"?";this.month=array[net.watchee.CronExpression.MONTH]||"*";this.dayOfWeek=array[net.watchee.CronExpression.DAY_OF_WEEK]||"*";this.year=array[net.watchee.CronExpression.YEAR]||"*";}
net.watchee.CronExpression.prototype.resetFlags=function(){return this.flagHashtable.clear();}
net.watchee.CronExpression.prototype.getFlagMap=function(){return this.flagHashtable;}
net.watchee.CronExpression.prototype.getFlagCSV=function(){return this.flagHashtable.toCSV();}
net.watchee.CronExpression.prototype.isActive=function(){return this.flagHashtable.getBoolean("active",true);}
net.watchee.CronExpression.prototype.setActive=function(ac){this.flagHashtable.put("active",ac);}
net.watchee.CronExpression.prototype.isCompleteDay=function(){return this.flagHashtable.getBoolean("completeDay",false);}
net.watchee.CronExpression.prototype.setCompleteDay=function(isComplete){this.flagHashtable.put("completeDay",isComplete);}
net.watchee.CronExpression.prototype.isForever=function(){return this.flagHashtable.getBoolean("forever",false);}
net.watchee.CronExpression.prototype.setForever=function(isForever){this.flagHashtable.put("forever",isForever);}
net.watchee.CronExpression.prototype.getSecondsInt=function(){return parseInt(this.seconds);}
net.watchee.CronExpression.prototype.getMinutesInt=function(){return parseInt(this.minutes);}
net.watchee.CronExpression.prototype.setMinute=function(minute){var num=org.xmlBlaster.util.toNumber(minute,-1);if(num<0||num>59)
throw"net.watchee.CronExpression minute '"+num+"' is not in range";this.minutes=""+minute;}
net.watchee.CronExpression.prototype.getHoursInt=function(){return parseInt(this.hours);}
net.watchee.CronExpression.prototype.setHour=function(hour){var num=org.xmlBlaster.util.toNumber(hour,-1);if(num<0||num>23)
throw"net.watchee.CronExpression hour '"+hour+"' is not in range";this.hours=""+hour;}
net.watchee.CronExpression.prototype.getDayOfMonthInt=function(){return parseInt(this.dayOfMonth);}
net.watchee.CronExpression.prototype.setDayOfWeek=function(array){var list="";for(var i=0,l=array.length;i<l;i++){if(i>0)list+=",";list+=array[i];}
this.dayOfWeek=(list=="")?"*":list;this.dayOfMonth="?";return this.dayOfWeek;}
net.watchee.CronExpression.prototype.matchesDayOfWeek=function(weekDay){if(this.dayOfWeek==null||this.dayOfWeek==""||this.dayOfWeek=="?")
return false;if(this.dayOfWeek=="*")
return true;if(this.dayOfWeek.indexOf(weekDay)!=-1)
return true;var value=net.watchee.CronExpression.dayMap[weekDay];if(this.dayOfWeek.indexOf(value)!=-1)
return true;var arr=this.dayOfWeek.split(",");for(var i=0,l=arr.length;i<l;i++){if(net.watchee.CronExpression.toNumericDayOfWeek(arr[i])==net.watchee.CronExpression.toNumericDayOfWeek(weekDay))
return true;}
return false;}
net.watchee.CronExpression.prototype.getCronExpressionStr=function(wantYear){var hasYear=(wantYear===undefined||wantYear==true)?true:false;var cronExpressionStr="";cronExpressionStr+=this.seconds;cronExpressionStr+=" ";cronExpressionStr+=this.minutes;cronExpressionStr+=" ";cronExpressionStr+=this.hours;cronExpressionStr+=" ";cronExpressionStr+=this.dayOfMonth;cronExpressionStr+=" ";cronExpressionStr+=this.month;cronExpressionStr+=" ";cronExpressionStr+=this.dayOfWeek;if(hasYear){cronExpressionStr+=" ";cronExpressionStr+=this.year;}
return cronExpressionStr;}
net.watchee.CronExpression.SECOND=0;net.watchee.CronExpression.MINUTE=1;net.watchee.CronExpression.HOUR=2;net.watchee.CronExpression.DAY_OF_MONTH=3;net.watchee.CronExpression.MONTH=4;net.watchee.CronExpression.DAY_OF_WEEK=5;net.watchee.CronExpression.YEAR=6;net.watchee.CronExpression.ALL_SPEC=99;net.watchee.CronExpression.NO_SPEC=98;net.watchee.CronExpression.monthMap=new Object();net.watchee.CronExpression.dayMap=new Object();net.watchee.CronExpression.monthMap["JAN"]=0;net.watchee.CronExpression.monthMap["FEB"]=1;net.watchee.CronExpression.monthMap["MAR"]=2;net.watchee.CronExpression.monthMap["APR"]=3;net.watchee.CronExpression.monthMap["MAY"]=4;net.watchee.CronExpression.monthMap["JUN"]=5;net.watchee.CronExpression.monthMap["JUL"]=6;net.watchee.CronExpression.monthMap["AUG"]=7;net.watchee.CronExpression.monthMap["SEP"]=8;net.watchee.CronExpression.monthMap["OCT"]=9;net.watchee.CronExpression.monthMap["NOV"]=10;net.watchee.CronExpression.monthMap["DEC"]=11;net.watchee.CronExpression.dayMap["SUN"]=1;net.watchee.CronExpression.dayMap["MON"]=2;net.watchee.CronExpression.dayMap["TUE"]=3;net.watchee.CronExpression.dayMap["WED"]=4;net.watchee.CronExpression.dayMap["THU"]=5;net.watchee.CronExpression.dayMap["FRI"]=6;net.watchee.CronExpression.dayMap["SAT"]=7;net.watchee.CronExpression.toHumanReadableDayOfWeek=function(dayOfWeek){for(var data in net.watchee.CronExpression.dayMap){if(data==dayOfWeek||net.watchee.CronExpression.dayMap[data]==dayOfWeek)
return data;}
return dayOfWeek;}
net.watchee.CronExpression.toNumericDayOfWeek=function(dayOfWeek){if(dayOfWeek instanceof Number)
return dayOfWeek;var num=parseInt(dayOfWeek);if(isNaN(num))
return net.watchee.CronExpression.dayMap[dayOfWeek];else
return num;}