var bIsMSIE = (navigator.userAgent.indexOf("MSIE") != -1);
var sAllowedExtra = " abcdefghij";
var bOnThisPage = false;

var aryRecentDogLinkLabels;
var aryRecentDogURLs;
var aryRecentDogDescrips;

function WriteOneNavEntry(sMonthAbbrev, sMonthName, sMM, sYYYY, bFileExists, nCurrMonth, nCurrYear, sThis, sMaxExtra) {
	var nMM = 0 + sMM;
	var nYYYY = 0 + sYYYY;
	var sYY = sYYYY.substr(2,2);
	var sDisplay = "&nbsp;", sPageDisplay="";
	var sThisExtra = "";
	var nExtras = sAllowedExtra.length;
	var sExtra;
	if (sThis.length > 6) {
		// allow for, e.g., sThis = "200301a"
		sThisExtra = sThis.substr(6);
		sThis = sThis.substr(0,6);
	}
	if ( (nYYYY>nCurrYear) || (nYYYY==nCurrYear && nMM>nCurrMonth) ) {
		// a month later than current month: gray dummy
		sDisplay = sDisplay + "<font color=\"gray\">" + sMonthAbbrev + " " + sYY + "</font>&nbsp;|\n";
	} else if (bFileExists) {
		for (var iExtra=0; iExtra<nExtras; iExtra++) {
			sExtra = sAllowedExtra.charAt(iExtra);
			if (sExtra==" ") {
				sExtra = "";
			}
			if (sExtra>sMaxExtra) {
				break;
			}
			sPageDisplay = (sExtra!="" ? sExtra : sMonthAbbrev + " " + sYY);
			if (sYYYY+sMM==sThis && sThisExtra==sExtra) {
				// the current month, and we are on that page: red dummy
				sDisplay = sDisplay + "<font color=\"red\">" + sPageDisplay + "</font>&nbsp;";;
			}
			else {
				// an earlier month (or current month, earlier page) for which a file exists: actual link
				sDisplay = sDisplay + "<a href=\"./doggerel_" + sYYYY + sMM + sExtra + ".htm\">" + sPageDisplay + "</a>&nbsp;";
			}
		}
		sDisplay = sDisplay + "|\n";
	} else {
		// an earlier month for which a file does not exist: alert link
		sDisplay = sDisplay + "<a href=\"JavaScript:alert('No doggerel was posted in " + sMonthName + "');\">" + sMonthAbbrev + " " + sYY + "</a>&nbsp;|\n";
	}
	document.write(sDisplay);
}

function WriteNavBar(sPrev, sThis, sNext) {
	var dteNow = new Date();
	var nCurrMonth = dteNow.getMonth() + 1;
	var nCurrYear = dteNow.getYear();

	if (nCurrYear<1000) { nCurrYear = nCurrYear + 2000 - 100; }

	document.write("<font size=1>\n");

	document.write("|\n");
	if (sPrev != '') {
		document.write("&nbsp;<a href=\"./doggerel_" + sPrev + ".htm\">PREVIOUS</a>&nbsp;|\n");
	} else {
		document.write("&nbsp;<font color=\"gray\">PREVIOUS</font>&nbsp;|\n");
	}
	document.write("&nbsp;<a target=\"_top\" href=\"http://www.stephenbates.com/yellowdoggereldemocrat/\">HOME</a>&nbsp;|\n");
	if (sNext != '') {
		document.write("&nbsp;<a href=\"./doggerel_" + sNext + ".htm\">NEXT</a>&nbsp;|\n");
	} else {
		document.write("&nbsp;<font color=\"gray\">NEXT</font>&nbsp;|\n");
	}
	document.write("&nbsp;<a href=\"./doggerel_index.htm\">" + "INDEX" + "</a>&nbsp;|\n");
	if (bIsMSIE && bOnThisPage) {
		document.write("&nbsp;<a href=\"#PAGEINDEX\">" + "ON THIS PAGE" + "</a>&nbsp;|\n");
	}
	document.write("&nbsp;<a href=\"#BLOGROLL\">" + "LINKS" + "</a>&nbsp;|\n"); // was doggerel_links.htm, retired
	// document.write("&nbsp;<a title=\"How to Write Doggerel (400k WAV)\" href=\"./images/HowToWriteDoggerel2.wav\">" + "VOICE" + "</a>&nbsp;|\n");
	document.write("&nbsp;<a href=\"./aboutydd.htm\">" + "ABOUT" + "</a>&nbsp;|\n");
	document.write("&nbsp;<a href=\"./privacy.htm\">" + "PRIVACY" + "</a>&nbsp;|\n");
	document.write("&nbsp;<a href=\"./contact.htm\">" + "CONTACT" + "</a>&nbsp;|\n");
	document.write("&nbsp;<a href=\"./yddstatus.htm\">" + "STATUS" + "</a>&nbsp;|\n");
	document.write("&nbsp;<a href=\"./classics.htm\">" + "CLASSICS" + "</a>&nbsp;|\n");
	document.write("<br>")

	if (sThis > "200101" && sThis <= "200201") {
		document.write("|\n");
		WriteOneNavEntry('Oct', 'October', '10', '2001', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Nov', 'November', '11', '2001', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Dec', 'December', '12', '2001', true, nCurrMonth, nCurrYear, sThis, "");
		document.write("<br>");
	}
	if (sThis > "200107" && sThis <= "200207") {
		document.write("|\n");
		WriteOneNavEntry('Jan', 'January', '01', '2002', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Feb', 'February', '02', '2002', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Mar', 'March', '03', '2002', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Apr', 'April', '04', '2002', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('May', 'May', '05', '2002', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Jun', 'June', '06', '2002', true, nCurrMonth, nCurrYear, sThis, "");
		document.write("<br>");
	}
	if (sThis > "200201" && sThis <= "200301") {
		document.write("|\n");
		WriteOneNavEntry('Jul', 'July', '07', '2002', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Aug', 'August', '08', '2002', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Sep', 'September', '09', '2002', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Oct', 'October', '10', '2002', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Nov', 'November', '11', '2002', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Dec', 'December', '12', '2002', true, nCurrMonth, nCurrYear, sThis, "");
		document.write("<br>")
	}
	if (sThis > "200207" && sThis <= "200307") {
		document.write("|\n");
		WriteOneNavEntry('Jan', 'January', '01', '2003', true, nCurrMonth, nCurrYear, sThis, "c");
		WriteOneNavEntry('Feb', 'February', '02', '2003', true, nCurrMonth, nCurrYear, sThis, "c");
		WriteOneNavEntry('Mar', 'March', '03', '2003', true, nCurrMonth, nCurrYear, sThis, "d");
		WriteOneNavEntry('Apr', 'April', '04', '2003', true, nCurrMonth, nCurrYear, sThis, "d");
		WriteOneNavEntry('May', 'May', '05', '2003', true, nCurrMonth, nCurrYear, sThis, "d");
		WriteOneNavEntry('Jun', 'June', '06', '2003', true, nCurrMonth, nCurrYear, sThis, "c");
		document.write("<br>")
	}
	if (sThis > "200301" && sThis <= "200401") {
		document.write("|\n");
		WriteOneNavEntry('Jul', 'July', '07', '2003', true, nCurrMonth, nCurrYear, sThis, "c");
		WriteOneNavEntry('Aug', 'August', '08', '2003', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Sep', 'September', '09', '2003', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Oct', 'October', '10', '2003', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Nov', 'November', '11', '2003', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Dec', 'December', '12', '2003', true, nCurrMonth, nCurrYear, sThis, "");
		document.write("<br>")
	}
	if (sThis > "200307" && sThis <= "200407") {
		document.write("|\n");
		WriteOneNavEntry('Jan', 'January', '01', '2004', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Feb', 'February', '02', '2004', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Mar', 'March', '03', '2004', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Apr', 'April', '04', '2004', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('May', 'May', '05', '2004', true, nCurrMonth, nCurrYear, sThis, "");
		WriteOneNavEntry('Jun', 'June', '06', '2004', true, nCurrMonth, nCurrYear, sThis, "");
		document.write("<br>")
	}
	// write other years here as needed

	document.write("</font>\n")
}

function OpenAllLinksInNewWindow(bNewWindow)
{
	var iLink;
	for (iLink=0; iLink<document.links.length; iLink++) {
		// be sure we affect only offsite links
		if (document.links[iLink].hostname != 'www.stephenbates.com') {
			if (bNewWindow) {
				document.links[iLink].target = '_blank';
			}
			else {
				document.links[iLink].target = '_top';
			}
		}
	}
}

function StandardBodyOnLoad() {
	if (document.marquee1 && document.marquee1.marqueetext) {
		ScrollMarquee();
	}
	self.focus();
}

// credit: following originally after Brykman, Windows Magazine

var cScrollMarqueeScroll = 0;
var cScrollMarqueeSwapChars = 1;
var cScrollMarqueeChangeCase = 2;
var cScrollMarqueeChangeBkgd = 3;
var cScrollMarqueeFadeIn = 4;
var cScrollMarqueeBehaviorCount = 5;
var cScrollMarqueeBehavior = -1; // set to one of the above

if (bIsMSIE) {
	cScrollMarqueeBehavior = (((new Date()).getHours()) % cScrollMarqueeBehaviorCount);	// change every hour
}

var nScrollSpeed = 50;
var nScrollChars = 1;
var iTimesScrolled = 0, nTimesToScroll = 2;
var iCharsScrolled = 0, nCharsToScroll;
var bgc = new Array(8);
bgc[0] = ""
bgc[1] = "red";
bgc[2] = "orange";
bgc[3] = "yellow";
bgc[4] = "green";
bgc[5] = "blue";
bgc[6] = "indigo";
bgc[7] = "violet";
var nFGRed = 0xff;
var nFGGreen = 0xff;
var nFGBlue = 0xe0;
var nFGColor;

function ScrollMarquee() {
	var iChar,sChar;
	var msg,newmsg;

	// background-changing version only
	if (cScrollMarqueeBehavior == cScrollMarqueeChangeBkgd) {
		if (!document.marquee1.marqueetext.style) {
			return;
		}
		nTimesToScroll = 1;
		if (bgc[0]=="") {
			bgc[0] = document.marquee1.marqueetext.style.background;
		}
	}

	msg = document.marquee1.marqueetext.value;
	nCharsToScroll = msg.length;

	// count and exit mechanism is same for all
	iCharsScrolled++;
	if (iCharsScrolled > nCharsToScroll) {
		iCharsScrolled = 1; // because we're going to scroll anyway
		iTimesScrolled++;
		if (iTimesScrolled >= nTimesToScroll) {
			document.marquee1.marqueetext.style.background = bgc[0];
			return;
		}
	}
	window.setTimeout('ScrollMarquee()',nScrollSpeed);

	switch(cScrollMarqueeBehavior) {

		case cScrollMarqueeScroll:
			document.marquee1.marqueetext.value = msg.substring(nScrollChars) + msg.substring(0,nScrollChars);
			break;

		case cScrollMarqueeSwapChars:
			for (iChar=0; iChar<nCharsToScroll; iChar+=2) {
				msg = msg.substring(0,iChar) + msg.substring(iChar+1,iChar+2) + msg.substring(iChar,iChar+1) + msg.substring(iChar+2,msg.length);
				document.marquee1.marqueetext.value = msg;
			}
			break;

		case cScrollMarqueeChangeCase:
			newmsg = "";
			for (iChar=0; iChar<nCharsToScroll; iChar++) {
				sChar = msg.substring(iChar,iChar+1);
				if ("A" <= sChar && sChar <= "Z") {
					sChar = sChar.toLowerCase();
				} else {
					sChar = sChar.toUpperCase();
				}
				newmsg = newmsg + sChar;
			}
			document.marquee1.marqueetext.value = newmsg;
			nTimesToScroll = 1;
			break;

		case cScrollMarqueeChangeBkgd:
			document.marquee1.marqueetext.style.background = bgc[iCharsScrolled % 8];
			break;

		case cScrollMarqueeFadeIn:
			if (nFGRed > 0xf0) {
				nFGRed -= 0x04;
				if (nFGRed < 0xf0) {
					nFGRed = 0xf0;
				}
			}
			if (nFGGreen > 0xc0) {
				nFGGreen -= 0x04;
				if (nFGGreen < 0xc0) {
					nFGGreen = 0xc0;
				}
			}
			if (nFGBlue > 0x00) {
				nFGBlue -= 0x04;
				if (nFGBlue < 0x00) {
					nFGBlue = 0x00;
				}
			}
			nFGColor = nFGRed * 0x10000 + nFGGreen * 0x100 + nFGBlue;
			document.marquee1.marqueetext.style.color = "#" + nFGColor.toString(16);

	} // switch

}

function WriteBlogDoggerel(sText) {
	if (bIsMSIE) {
		document.write ("<input type=text size=12 name='marqueetext' value='" + sText + "' style='font: 28pt \"Comic Sans MS\",Arial,sans-serif; background:#ffffe0; color:#F0C000; border:none;'>");
	}
	else {
		document.write (sText);
	}
}

function WriteThisPageEntryLinks() {
	var iLink=0, sLinks="", sTarget="", sMyMarker="", sHash="", sTitle="";
	var sFlagText="", bFoundDog = false;
	if (!bIsMSIE) {
		document.write("(not available in Netscape)");
		return;
	}
	for (iLink=0; iLink<document.links.length; iLink++) {
		sTarget = document.links[iLink].target;
		sMyMarker = document.links[iLink].mymarker;
		sHash = document.links[iLink].hash;
		sTitle = document.links[iLink].title;
		if (sTitle.charAt(0) == " ") {
			sFlagText = " <font color=red><b>&deg;</b></font>";
			bFoundDog = true;
		} else {
			sFlagText = "";
		}
		if (sTarget == "_top" && sMyMarker != "noshow" && sTitle != "") {
			sLinks = sLinks + "<a href=" + sHash + "><nobr>" + sTitle + "</nobr></a>"+ sFlagText + "<br>";
		}
	}
	if (bFoundDog) {
		sLinks = sLinks + "<br><font color=red><b>&deg;</b> doggerel</font><br>";
	}
	document.write(sLinks);
}

function InitRecentDogs(nHowMany) {
	switch (nHowMany) {
		case 5:
			aryRecentDogLinkLabels = new Array("LATEST","FIVE","DOGS","ARE","HERE");
			break;
		case 10:
			aryRecentDogLinkLabels = new Array("LATEST","TEN","DOGGERELS","MAY","BE","VIEWED","BY","CLICKING","THESE","LINKS");
			break;
	}
	aryRecentDogURLs = new Array(nHowMany);
	aryRecentDogDescrips = new Array(nHowMany);
}

function SpecifyOneRecentDog(iWhich,sURL,sDescrip) {
	aryRecentDogURLs[iWhich] = sURL;
	aryRecentDogDescrips[iWhich] = sDescrip;
}

function WriteRecentDogs(nHowMany) {
	document.write("<font size=1>|");
	for (var iWhich=0; iWhich<nHowMany; iWhich++) {
		document.write("&nbsp;<a target=_top mymarker=noshow title=\"" + aryRecentDogDescrips[iWhich] + "\" href=\"" + aryRecentDogURLs[iWhich] + "\">" + aryRecentDogLinkLabels[iWhich] + "</a>&nbsp;|");
	}
	document.write("<br></font>");
}

function Write5RecentDogs(u0,d0, u1,d1, u2,d2, u3,d3, u4,d4) {
	InitRecentDogs(5);
	SpecifyOneRecentDog(0,u0,d0);
	SpecifyOneRecentDog(1,u1,d1);
	SpecifyOneRecentDog(2,u2,d2);
	SpecifyOneRecentDog(3,u3,d3);
	SpecifyOneRecentDog(4,u4,d4);
	WriteRecentDogs(5);
}

function Write10RecentDogs(u0,d0, u1,d1, u2,d2, u3,d3, u4,d4, u5,d5, u6,d6, u7,d7, u8,d8, u9,d9) {
	InitRecentDogs(10);
	SpecifyOneRecentDog(0,u0,d0);
	SpecifyOneRecentDog(1,u1,d1);
	SpecifyOneRecentDog(2,u2,d2);
	SpecifyOneRecentDog(3,u3,d3);
	SpecifyOneRecentDog(4,u4,d4);
	SpecifyOneRecentDog(5,u5,d5);
	SpecifyOneRecentDog(6,u6,d6);
	SpecifyOneRecentDog(7,u7,d7);
	SpecifyOneRecentDog(8,u8,d8);
	SpecifyOneRecentDog(9,u9,d9);
	WriteRecentDogs(10);
}

