// <!- marketdate Javascript source

/* This script will calculate and display the next market date(s).
     R Scott  13-Jul-2004

	Will not be correct:
		if Feb 2100 is one of the dates being calculated,
	  or	if more than 12 months are being calculated, more than one February is included, and one of those
		Februarys is in a leap year.
 */

      function MktDate(DtCnt)
       {
     	// Literals used in calculations:
     	var EarliestDay=15  // Third Saturday can never fall before the 15th
     	var FourWeeks=28    // Number of days in four weeks
     	var OneWeek=7       // Number of days in one week
	var Cnst7nPlus1=36  // Constant, must be greater than 31, (n*7)+1

     	var DisplayDate
     	var DispDate2
     	var CurrDate=new Date()
     	var CurrYr=CurrDate.getFullYear()
     	var CurrDay=CurrDate.getDate()
     	var CurrMth=CurrDate.getMonth()+1

	mno=new Array("31","28","31","30","31","30","31","31","30","31","30","31");
	modYr=(CurrYr%4)
	if ((modYr == 3) && (CurrMth > 2))  // Year before leap year
	 {
	   mno= Array("31","29","31","30","31","30","31","31","30","31","30","31");
	 }
	if ((modYr == 0) && (CurrMth < 3))  // Leap year
	 {
	   mno= Array("31","29","31","30","31","30","31","31","30","31","30","31");
	 }
     	d=new Array("Sun","Mon","Tue","Wed","Thur","Fri","Sat");
	m=new Array("January","February","March","April","May","June",
        	    "July","August","September","October","November","December");

	var Indx=DtCnt;
	var loopflag=1;
	var yrnum=CurrYr
	var mthnum=CurrMth
	var daynum=CurrDay
	DoW = [(CurrDate.getDay()+Cnst7nPlus1-daynum) % OneWeek]  
	var ThirdSat=(EarliestDay + ((OneWeek - 1) - DoW))
	if (ThirdSat < CurrDay)  // bypass this month if after the 3rd Saturday
	 { ThirdSat=ThirdSat+FourWeeks; }
	   
	DisplayDate = ''  
    	for (var i=0; i<Indx; i++)
	 {
     	  if (ThirdSat > mno[mthnum-1])  // must be next month
           {
	    ThirdSat=ThirdSat-mno[mthnum-1];
	    mthnum=mthnum+1;
	   }
     	  if (mthnum > 12)
       	   {
	    mthnum=1;
	    yrnum=yrnum+1;
	   }
          if (ThirdSat < EarliestDay)
       	   {
	    ThirdSat=ThirdSat+OneWeek;
	   }
	  // append the calculated date to the date summary
	  DispDate2=DisplayDate;
	  DisplayDate+= 'Saturday ' + ThirdSat + ' ' + m[mthnum-1] + ' ' + yrnum + '<br>';

	  if (mthnum==1)  // There was no Farmers' Market in Jan - reinstate commented lines if Jan to be excluded
	   {
	    // DisplayDate=DispDate2;
	    // i=i-1
	   }

	  ThirdSat=ThirdSat+FourWeeks;  // point to next month (2nd or 3rd Saturday)
	 }  // End of 'for var i=0 to Indx'
        document.write(DisplayDate)  // Output the date summary
       }  // End of MktDate function

//  End of marketdate Javascript source ->
