var monthName=new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

function createWeekOptionList(objSelectField) {
// populates a form select item option list. The option List contains
// a list of weeks starting from the next staurday going forward the specified
// number (intMonths) of months

   var szOptionList = "";
   var intADay = 24 * 60 * 60 * 1000;
   var int7Days = 7 * intADay;
   var dtStart = getNextSaturday();

// commented out as we are now using hard-coded end date (stored in main template)
// intMonths=21;
//   var dtEnd = getFinishDate(dtStart, intMonths);

// new end date code
   var availability_end_date = document.sef.availability_end_date.value;
   aedarray=availability_end_date.split("-");
   dtEnd = new Date(aedarray[2], aedarray[1]-1, aedarray[0]) ;
// end of new end date code

   // christmas override dates:
   var christmasdate1 = document.sef.christmasdate1.value;
   c1array=christmasdate1.split("-");
   dtChristmas1 = new Date(c1array[2], c1array[1]-1, c1array[0]) ;
   var intCTime1start = dtChristmas1.getTime();
   var intCTime1end = dtChristmas1.getTime() + (2*int7Days);

   var christmasdate2 = document.sef.christmasdate2.value;
   c2array=christmasdate2.split("-");
   dtChristmas2 = new Date(c2array[2], c2array[1]-1, c2array[0]) ;
   var intCTime2start = dtChristmas2.getTime();
   var intCTime2end = dtChristmas2.getTime() + (2*int7Days);

   var dtIndex = dtStart;
   var intEndTime = dtEnd.getTime();
   var intIndexTime = dtIndex.getTime();
   // clear any existing options
   //objSelectField.length = 0;

	var weekday=new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
	var timediff;
   
	while ( intIndexTime < intEndTime) {
		// iterate through new options
		// each Saturday 
		timediff1=(intCTime1start - intIndexTime)/intADay;
		timediff2=(intCTime2start - intIndexTime)/intADay;
		if (timediff1 < 0 && intIndexTime < intCTime1end)   {  
			objSelectField.options[objSelectField.length] = generate_week(objSelectField, dtChristmas1, weekday, monthName);
			dtChristmas1.setTime(dtChristmas1.getTime() +  int7Days );
			}
		else   {
			if (timediff2 < 0 && intIndexTime < intCTime2end)   {  
				objSelectField.options[objSelectField.length] = generate_week(objSelectField, dtChristmas2, weekday, monthName);
				dtChristmas2.setTime(dtChristmas2.getTime() +  int7Days );
				}
			else   {  
				if (timediff1>6||timediff2<0||(timediff1<0&&timediff2>6)) objSelectField.options[objSelectField.length] = generate_week(objSelectField, dtIndex, weekday, monthName);
				}
			}
		dtIndex.setTime(dtIndex.getTime() +  int7Days );
		intIndexTime = dtIndex.getTime();
		}
	}



function generate_week(objSelectField, dtIndex, weekday, monthName)   {
	themonth=sanitise_num_tostring (dtIndex.getMonth() + 1);
	theday=sanitise_num_tostring (dtIndex.getDate());
	dayname=weekday[dtIndex.getDay()];

	optionContent = dayname + " "+ dtIndex.getDate()+ " " + monthName[dtIndex.getMonth()] + " " + dtIndex.getFullYear();
	optionValue = dtIndex.getFullYear() + "-" + themonth + "-" + theday;

	if (optionContent == 'Tue 27 Dec 2011')
	{ 
		optionContent 	= 'Wed 28 Dec 2011';
		optionValue = '2011-12-28';

	}

	if (optionContent == 'Mon 27 Dec 2010')
	{ 
		optionContent 	= 'Tue 28 Dec 2010';
		optionValue = '2010-12-28';

	}
	
	newoption =  new Option(optionContent,optionValue );
	return newoption;
	}


function sanitise_num_tostring  (thenum)   {
	thestr=String(thenum);
	if (thestr.length==1) { thestr="0" + thestr; } 		
	return thestr;
	}

function getNextSaturday() {
// returns a date object which has been initialised to the next occurrance of Saturday

   var dtSaturday;
   var dtToday = new Date();
   var intADay = 24 * 60 * 60 * 1000;
   var intCurrentMilliseconds = dtToday.getTime();
   var intSaturday = 6;
   var intDaysUntilSaturday= intSaturday - dtToday.getDay();
   intNextSaturday = intCurrentMilliseconds + (intDaysUntilSaturday * intADay);
   dtSaturday = new Date(intNextSaturday) ;

   return dtSaturday;
}

function  getFinishDate(dtStart, intMonths) {
// returns a date object which has been initialised to a date which represents
// the specified number of months (intMonths) after the specified start date (dtStart)

   var dtEndDate;
   var intAYear = 365 * 60 * 60 * 1000;
   var intMonthsInYear = 12;
   var intYearCount = Math.floor(intMonths / intMonthsInYear);
   var intExtraMonths = intMonths % intMonthsInYear;
   intYear = dtStart.getFullYear() + intYearCount;
   intMonth = dtStart.getMonth() + intExtraMonths;
   if (intMonth >= intMonthsInYear) {
      intYear++;
      intMonth = intMonth - intMonthsInYear;
   }
   intDay = 1;
   dtEndDate = new Date(intYear, intMonth, intDay) ;

   return dtEndDate;
}
