
//<! --<script language="JavaScript">-->
//entries=new Array();
dayNames = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
mons=new Array ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
months = new Array("NONE","January","February","March","April","May","June","July","August","September","October","November","December");
var tt;
var fText="";
function df(inText){
	fText=fText+lR()+inText;
}

function debugPopText(varName){
	var tS=escape(varName);
	var regExp=/¬/g;
	var repText=lR();
	if (!(tS==null)){
		if (tS.length>0){
			tS=tS.replace(regExp,repText);
		}
	}
	var dString="width=950,height=500,top=100,left=100";
	var wString = "var w=window.open('popupBoxWinster.htm?&cols=100&text="+tS+"','sInfo','dependent=yes,scrollbars=yes,resizable=yes,"+dString+"');";
	eval (wString);
}

function EventFromWeb(groupChar,dateString,desc,decHours){
	if (arguments.length==3){
		decHours=19.5;
	}
	Event(groupChar,dateString,unescape(desc),decHours)
}

function dmEvent(groupChar,dayOfWeek,weekInMonth,firstMonth,firstYear,finalMonth,finalYear,desc,decHours,isExternal){
	//0=Sunday, 1=Monday, 5=Friday, 6=Saturday
	var focusMonth;
	var focusYear;
	var goDateString;
	//rest of this year
	focusYear=firstYear;
	for (var focusMonth=firstMonth; focusMonth<12;focusMonth++){
		
		if ((firstYear==finalYear) && (focusMonth>finalMonth)){
			return;
		}
		goDateString=indexDate(focusMonth, focusYear, dayOfWeek, weekInMonth);
		//alert("1:month=" + focusMonth +" - Year=" + focusYear+ " string=" +goDateString);
		Event(groupChar,goDateString,desc,decHours,isExternal);
	}
	if (firstYear==finalYear){
			return;
		}
	//all of middle years
	for (focusYear=aV(firstYear,1);focusYear<finalYear;focusYear++){
		for (var focusMonth=0; focusMonth<12;focusMonth++){
			goDateString=indexDate(focusMonth, focusYear, dayOfWeek, weekInMonth);
			Event(groupChar,goDateString,desc,decHours,isExternal);
			//alert("2:month=" + focusMonth +" - Year=" + focusYear+ " string=" +goDateString);
		}
	}
	
	//first bit of final year
	focusYear=finalYear;
	for (var focusMonth=0; focusMonth<=finalMonth;focusMonth++){
		goDateString=indexDate(focusMonth, focusYear, dayOfWeek, weekInMonth);
		Event(groupChar,goDateString,desc,decHours,isExternal);
		//alert("3:month=" + focusMonth +" - Year=" + focusYear+ " string=" +goDateString);
	}
}
function aV(){
	var tV=0;
	for (var a=0;a<arguments.length;a++){
		tV+= parseInt(parseInt(arguments[a]));
	}
	return tV;
}
function indexDate(Month, Year, StartOfWeekDay, targetIndex) {
	//returns 2nd Wednesday of month (etc)
	//0=Sunday
	var tS="";
	var a=0;
	var hitDate;
	_Date = new Date(Year, aV(Month,-1), 1);
	_LastDate = new Date();
	_LastDate = new Date(_Date);
	_LastDate.setMonth(_Date.getMonth() + 1);
	_LastDate.setHours(_LastDate.getHours() - 24);
	var I = 1
	while (I <= _LastDate.getDate()) {
		_Date.setDate(I);
		if (_Date.getDay() == StartOfWeekDay) {
			a+=1;
			if (a==targetIndex){
				hitDate=new Date(_Date);
				var tS= hitDate.getDate()+"/"+aV(hitDate.getMonth(),1)+"/"+hitDate.getFullYear();
				return tS;
			}
		    I += 6;
		  }
		  I++;
	}
}

function test(){
	dmEvent("V",5,4,1,2005,11,2005,"<b>Mobile Police Station in Winster</b> outside Market House",10);
	//var tX=indexDate(1,2005,5,4);
	//alert (tX);
	alert(tt);
}
function cEvent(groupChar,dateString,desc,decHours,isExternal){
	tt+=dateString +"~"+desc;
}
function noEndString(inString,stringToLose,leaveLeft,leaveRight){//015
	if ((stringToLose==null)||(stringToLose.length==0)){
		return inString;
	}
	if (arguments.length<4){
		var leaveRight=false;
	}
	if (arguments.length<3){
		var leaveLeft=false;
	}
	if (!leaveRight){
		//trim right
		while (inString.substr(inString.length-stringToLose.length,stringToLose.length)==stringToLose){
			inString=inString.substr(0,inString.length-stringToLose.length);
		}
	}
	if (!leaveLeft){
		//trim left
		while (inString.substr(0,stringToLose.length)==stringToLose){
			inString=inString.slice(stringToLose.length);
		}
	}
	return inString;
}
function stripLeadingZero(inString){
	return noEndString(inString,"0",false,true);
}



function Event(groupChar,dateString,desc,decHours,isExternal){
	//alert("'Event' run for "+desc);
	if (arguments.length<4){
		var hrs=19;
		var mins=30;
		//alert("DEFAULT - hrs="+hrs+"   mins="+mins);
	} else {
		var hrs = parseInt(decHours);
		var mins = parseInt((decHours-hrs)*60);
	}
	if (arguments.length<5){
		var isExternal=false;
	}
	var tA = dateString.split(",");
	//alert("tA length="+tA.length);
	for (var a=0;a<tA.length;a++){
		//alert("date string is "+tA[a]);
		var tB=tA[a].split("/");
		var nowDate=new Date();
		var eventYear = tB[2];
		if (eventYear<100){
			eventYear=stripLeadingZero(eventYear);
			eventYear=aV(eventYear,2000);
		}
		var eDate = new Date(eventYear,tB[1]-1,tB[0],hrs,mins);
		var dayName = dayNames[eDate.getDay()];
		var monthName = mons[tB[1]-1];
		var eDateString= dayName+" "+tB[0]+" "+monthName;
		//alert("a: eDate is "+eDate.toLocaleString());
		if (isFuture(eDate)){
			//alert("b: eDate is "+eDate.toLocaleString());
			entries[entries.length]=new eData(groupChar,eDate,eDateString,desc,isExternal);
			//testString+="<p>dateString="+dateString+" *decHours="+decHours+"eDate+"+eDate+"</p>";
		}
		
	}
	
}

function incDate(anyDate, n){
	//-- Returns the date that is n days from any date object.
	//-adjusts for change of summertime
	var nowSecs=Date.parse(anyDate);
	var newDate = new Date();
	newDate.setTime(nowSecs+(n*1000*60*60*24));
	var hourChange = newDate.getTimezoneOffset()- anyDate.getTimezoneOffset();
	if (!(hourChange==0)){
		newDate.setTime(nowSecs+(n*1000*60*60*24)+(hourChange*60*1000));
	}
	return newDate;
}

function RegularEvent(groupChar,day1,month1,year1,day2,month2,year2,intervalDays,noToShow,desc,followText,decHours){
	if (arguments.length==10){
		var hrs=19;
		var mins=30;
	} else {
		var hrs = parseInt(decHours);
		var mins = parseInt((decHours-hrs)*60);
		//alert("desc="+desc+"    hrs="+hrs+"   mins="+mins);
	}
	var nowDate=new Date();
	var eDate1 = new Date(year1,month1-1,day1,hrs,mins);
	var eDate2 = new Date(year2,month2-1,day2,hrs,mins);
	//alert("eDate1="+eDate1.toLocaleString()+"     eDate2="+eDate2.toLocaleString());
	var increment=0;
	var count=noToShow;
	var thisDate=eDate1;
	do {
		thisDate=incDate(thisDate, increment);
		//alert("thisDate="+thisDate);
		var dayName = dayNames[thisDate.getDay()];
		var monthName = mons[thisDate.getMonth()];
		var eDateString= dayName+" "+thisDate.getDate()+" "+monthName;
		if (count==1){
			eDateString+="<br>"+followText;
		}
		increment=intervalDays;
		if (isFuture(thisDate)){
			entries[entries.length]=new eData(groupChar,thisDate,eDateString,desc);
			//alert("added new eData for date="+thisDate);
			count--;
		}
	} while ((thisDate<eDate2)&&(count>0));
}

function eData(eGroupChar,eDate,eDateString,desc,isExternal){
	if (arguments.length<5){
		var isExternal=false;
	}
	//alert("eData gets date as "+eDate.toLocaleString());
	if ((eGroupChar==null)||(eGroupChar.length==0)){
		this.hasGroupChar=false;
	} else {
		this.hasGroupChar=true;
		this.groupChar=eGroupChar;
	}
	this.hasGroupChar=eGroupChar;
	this.groupChar=eGroupChar;
	this.dateString= eDateString;
	this.date=eDate;
	var regExp=/’/g;
	this.desc=desc.replace(regExp,"'");
	this.year=eDate.getFullYear();
	this.isExternal=isExternal;
}
function dateOrder(a,b){
	return a.date-b.date;
}

function lR(nRet){//016 adds  Line-Return(s)
	var rC=String.fromCharCode(10);
	var tS = rC;
	if(arguments.length==0){nRet=1}
	while (nRet>1){
		tS += rC;
		nRet = nRet-1;
	}
	return tS;
}
function setNoon(anyDate){
	var anyDate2=anyDate;
	return anyDate2.setHours(12,0,0,0);
}
function showList(incString,showLinks,popup,doNotResetFtext){
	if (!(doNotResetFtext)){
		fText="";
	}
	var tS ="";
	var prevDateString="";
	var prevExternal = false;
	var prevToday=false;
	var isExternal=false;
	var isFirst=true;
	entries.sort(dateOrder);
	var currentYear= 2003;//dummy
	df("<tr><td><img src='shim.gif' width='185' height='1'></td><td>&nbsp;</td></tr>");
	var u=0;
	var nu=0;
	var g=0;
	//alert("entries.length="+entries.length);
	for (var a=0; a<entries.length;a++){
		var isExternal=false;
		var isToday=false;
		var showDate=true;
		var endSpacerClass="sp";
		if ((incString==null)||(incString.length==0)){
			var useThis=true;
		} else {//looking for match with incString
			if (entries[a].hasGroupChar){
				g++;
				if (entries[a].groupChar.indexOf(incString)==-1){
					var useThis=false;
					//alert("MISS: incString="+incString+lR()+"entries["+a+"].groupChar="+entries[a].groupChar+lR()+"result="+entries[a].groupChar.indexOf(incString));
				} else {
					var useThis=true;
					//alert("HIT incString="+incString+lR()+"entries["+a+"].groupChar="+entries[a].groupChar+lR()+"result="+entries[a].groupChar.indexOf(incString));
				}
			} else {
				var useThis=false;
			}
		}
		if (useThis){
			u++;
			if (!(entries[a].year==currentYear)){
				currentYear=entries[a].year;
				df("<tr><td colspan='2'class='yearHeader'>"+entries[a].year+"</td></tr>");
			}
			var thisDate = new Date();
			/*if (setNoon(entries[a].date)==setNoon(thisDate)){
				var pText="<tr><td class='today' colspan='2'><span class='todayHeader'>TODAY</span></td></tr>";
				var cS1=" class='today'";
			} else {
				var pText="";
				var cS1="";
			}*/
			
			if ((setNoon(entries[a].date)==setNoon(thisDate))&&(!popup)){
				var cN="today";
				isToday=true;
				if (entries[a].isExternal){
					var isExternal=true;
					var cS1=" class='externalToday'";
				} else {
					var cS1=" class='today'";
				}
				
				if ((prevToday==isToday)||(popup)){
					pText="";
				} else {
					var pText="<tr><td class='today' colspan='2'><span class='todayHeader'>"
					pText+="TODAY";
					pText+="</span></td></tr>";
				}
				
			} else {
				if (entries[a].isExternal){
					var isExternal=true;
					var cS1=" class='external'";
				} else {
					var cS1="";
				}
				var pText="";
			}
			prevToday=isToday;
			tS="<tr>"+pText+"<td valign='top' "+cS1+">";
			var thisDateString = entries[a].dateString
			if ((thisDateString==prevDateString) && (isExternal==prevExternal)){
				tS+="&nbsp;";
			} else {
				tS+=entries[a].dateString;
			}
			prevDateString=thisDateString;
			prevExternal=isExternal;
			tS+="</td>";
			if (showLinks){
				var entryText=entries[a].desc;
			} else {
				var entryText=stripLink(entries[a].desc);
			}
			entryText=upQuote(entryText);
			tS+="<td"+cS1+">"+entryText+"</td></tr>";
			//tS+="<td>"+entries[a].date.toLocaleString()+" - "+entries[a].desc+"</td></tr>";//temp
			if (isFirst){
			} else {
				if (prevToday && isToday){
					endSpacerClass="spToday";
				} else {
					endSpacerClass="sp";
				}
				df("<tr><td colspan='2' class='"+endSpacerClass+"'>&nbsp;</td></tr>");
			}
			df(tS);
			
		} else {
			nu++;
		}
	isFirst=false;
	}
	//alert("fText=" + fText);
	if (popup) {
		debugPopText("fText");
	}
	document.writeln(fText);
	//alert("STATS:"+lR()+"u="+u+lR()+"nu="+nu+lR()+"g="+g);
}

function stripLink(inText){
	var startLink=inText.indexOf("<a href");
	if (startLink==-1){
		return inText;
	}
	var newText=inText.substr(0,startLink);
	var restText=inText.substr(startLink);
	var endLink=restText.indexOf(">")+1;
	if (endLink==-1){alert("error in endLink");return inText}
	newText+= restText.substr(endLink);
	newText=newText.replace("</a>","");
	return newText;
}
/*function d(i){
	document.writeln(i);
}*/
function writeHeader(headerText){
	df("<table width='760' border='0' cellspacing='0' cellpadding='0'>");
	df("<tr><td colspan='2'>&nbsp;</td></tr>");
	if ((headerText)&&(headerText.length>0)){
		df("<tr><td colspan='2'class='h1'>"+headerText+"</td></tr>");
	}
	df("<tr>");
	/*d("<tr><td colspan='2'>&nbsp;</td></tr>");
	df("<td class='h3'>Date</td><td class='h3'>Event</td>");
	df("</tr>");*/
	
	df("<tr>");
	df("<td><img src='shim.gif' width='150' height='1'></td><td><img src='shim.gif' width='150' height='1'></td>");
	df("</tr>");
}

function writeFooter(){
	df("</td></tr>");
	df("</table>");
}
function upQuote(uqText){
	//turns single quote to double-quote, and § (alt-0167) to single quote
	var newString=String.fromCharCode(34);//double-quote
	if (uqText.indexOf(newString)>-1){//already has double-quotes, so upQuoted
		return uqText;
	}
	var tS = "" + uqText+ "";
	if (tS==null){
		return "";
	}
	if (tS.length==0){
	} else {
		tS=tS.replace(/'/g,newString);
		tS = tS.replace(/§/g,"'");
		return tS;
	}
}
function proofList(){
	//alert("prooflist");
	var currentYear= 0;
	var tS="<table width='760' border='0' cellspacing='0' cellpadding='0' bgColor='yellow'>"+lR();
	tS+="<tr><td><img src='shim.gif' width='160' height='1'></td><td><img src='shim.gif' width='590' height='1'></td></tr>"+lR();;
	for (var a=0; a<entries.length;a++){
		//alert("a="+a);
		if (!(entries[a].year==currentYear)){
			currentYear=entries[a].year;
			tS+="<tr><td colspan='2'><b>"+entries[a].year+"</b></td></tr>"+lR();
		}
		tS+="<tr><td valign='top'>"+entries[a].dateString+"</td>";
		tS+="<td align='left'>"+upQuote(entries[a].desc)+"</td></tr>";
		tS+="<tr><td colspan='2' class='sp'>&nbsp;</td></tr>"+lR();
	}
	//alert("proofList is about to return: "+tS+lR()+"entries length="+entries.length);
	return tS;
}
function isFuture(anyDate) {
	//returns true if anyDate is today (any time) or later
	//alert("anyDate.getTime="+anyDate.getTime()+ "   year= "+anyDate.getFullYear());
	var futureDate=new Date(anyDate.getFullYear(),anyDate.getMonth(),anyDate.getDate());
	//futureDate.setFullYear(anyDate.getFullYear());
	//alert("futureDate.getTime="+futureDate.getTime());
	var nowDate = new Date();
	nowDate.setHours(0);
	nowDate.setMinutes(0);
	nowDate.setSeconds(0);
	nowDate.setMilliseconds(0);
	/*var tS="isFuture: anyDate="+anyDate.toLocaleString()+" ("+futureDate.getTime()+")";
	tS+= "   nowDate="+nowDate.toLocaleString()+" ("+nowDate.getTime()+ ")   RESULT="+(futureDate >= nowDate);
	alert(tS);*/
	return (futureDate.getTime() >= nowDate.getTime());
}