gPrintFunctionsIncluded = true;

function LoadPrintOptions()
{
	LoadPrintHeader();
	LoadPrintButton();
	SetPrintButtonEvents();
	CheckPrintCookie();
}

function LoadPrintHeader()
{
	/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
	   | Creates this:                                    |
	   | <img id="printHeader" src="printHeader.gif" />   |
	   | and sticks it at the top of the page,            |
	   | right before the header.                         |
	   |	                                              |
	   | print.css will only make it visible              |
	   | when the alternate print style sheet is enabled. |
	   |	                                              |
	   | Creating this element after the page has loaded  |
	   | will keep code that is strictly for looks        |
	   | out of our well-structured document.             |
	   +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ */

	var objImg = document.createElement("img");
	objImg.id = "printHeader";
	objImg.src = SetSrcFromRoot("printHeader.gif");
	
	// Find the header and insert this <img> before the header.
	var objHeader = document.getElementById("header");
	objHeader.parentNode.insertBefore(objImg, objHeader);
}

function LoadPrintButton()
{
	/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
	   | Creates this:                                         |
	   | <li id="printLink"><a href="#">Print version</a></li> |
	   | and inserts it in the nav column                      |
	   | after the link for the currPage.                      |
	   +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+*/
	
	// First, create this: 
	// <li id="printLink"><a href="#">Print this page</a></li>
	var objListElement = document.createElement("li");
	objListElement.id = "printLink";

	var objAnchor = document.createElement("a");
	objAnchor.href = location.href;	// gets the URL of the current page (for the status bar)
	objAnchor.appendChild( document.createTextNode("Print version") );

	objListElement.appendChild(objAnchor);

	// Then, insert the printButton <li> right after the <li> for the currPage.
	if ( document.getElementById("nav") )
	{
		if ( document.getElementById("currPage") )
		{
			var objCurrPage = document.getElementById("currPage");
			objCurrPage.parentNode.insertBefore(objListElement, objCurrPage.nextSibling);
		}
		else	// If there is no currPage <li>...
		{
			// ...append the printButton <li> to the end of the list.
			var navLinks = document.getElementById("nav").getElementsByTagName("li");
			navLinks[0].parentNode.appendChild(objListElement);
		}
	}
	// In the case of publication cover pages, 
	// always put the printButton <li> after the last in the introNav.
	else if ( document.getElementById("introNav") )
	{
		var introNavLinks = document.getElementById("introNav").getElementsByTagName("li");
		var lastLink = introNavLinks[introNavLinks.length-1];
		lastLink.parentNode.appendChild(objListElement);
	}
}

function SetPrintButtonEvents()
{
	/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
	   | Sets the printLink "button"        |
	   | to leave the print style sheets on |
	   | and refresh the page when clicked. |
	   +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ */

	if ( document.getElementById("printLink") )
	{
		var objAnchor = document.getElementById("printLink").getElementsByTagName("a")[0];

		objAnchor.onclick = function()
		{
			/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
			   | The print style cookie is enabled, 
			   | setting us up for print styles to stay enabled
			   | on reload. |
			   +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ */
			document.cookie = "disablePrint=FALSE;path=/;";
			location.reload();

			return false; // keeps the link from following the HREF
		};
	}
}

function CheckPrintCookie()
{
	// A cookie tracks whether or not 
	// the print style sheets need to be disabled.
	var disablePrint = GetCookie("disablePrint");

	if ( disablePrint=="FALSE" )
	{
		/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
		   | The print style sheets stay on--don't disable them. |
		   +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ */
		window.print();

		// Since leaving the print styles on is the _exception,_
		// the cookie should be FALSE for as brief a time as possible.
		document.cookie = "disablePrint=TRUE;path=/";
		location.reload();
	}
	else	// it's either null or TRUE
	{
		/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
		   | The print style sheets get disabled. |
		   +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ */
		DisablePrintStyles();
	}
}