// Common Javascript functions to be used throughout the site

var my_timeout = 0;
// Define Node Types in case the browser does not define them.
if (!document.ELEMENT_NODE) {
	document.ELEMENT_NODE = 1;
	document.ATTRIBUTE_NODE = 2;
	document.TEXT_NODE = 3;
	document.CDATA_SECTION_NODE = 4;
	document.ENTITY_REFERENCE_NODE = 5;
	document.ENTITY_NODE = 6;
	document.PROCESSING_INSTRUCTION_NODE = 7;
	document.COMMENT_NODE = 8;
	document.DOCUMENT_NODE = 9;
	document.DOCUMENT_TYPE_NODE = 10;
	document.DOCUMENT_FRAGMENT_NODE = 11;
	document.NOTATION_NODE = 12;
}

function nada() {
  return;
}

function growImage(oName,fW,fH,lW,lH,stop) {
  // Parameters:
  // oName - Object Name (ID) for image tag
  // fW - First (initial) width of image
  // fH - First (initial) height of image
  // lW - Last (final) width of image
  // lH - Last (final) height of image
  // Stop - Boolean flag to stop current growth
  var growImg = document.getElementById(oName);
  if (stop) clearTimeout(my_timeout);
  
  var dW = parseInt(lW) - parseInt(fW);
  var dH = parseInt(lH) - parseInt(fH);

  if (dW < 0) {
    var newW = parseInt(growImg.width) + Math.floor(dW/8);
    if (newW < lW) newW = lW;
  } else {
    var newW = parseInt(growImg.width) + Math.ceil(dW/8);
    if (newW > lW) newW = lW;
  }
  if (dH < 0) {
    var newH = parseInt(growImg.height) + Math.floor(dH/8);
    if (newH < lH) newH = lH;
  } else {
    var newH = parseInt(growImg.height) + Math.ceil(dH/8);
    if (newH > lH) newH = lH;
  }
  growImg.width = newW;
  growImg.height = newH;
  if ((newW != lW) || (newH != lH)) {
    my_timeout = setTimeout(("growImage('"+oName+"',"+fW+","+fH+","+lW+","+lH+","+"false);"), 50);
  }
}

// Handle an AJAX XML reply by replacing every node below the indicated Div
// (in the XHTML) with every node below the indicated Tag.  
function handleAJAXNode(XMLNode, XHTMLNode) {
	if (XHTMLNode.childNodes && XHTMLNode.childNodes.length > 0)
		for (var i = (XHTMLNode.childNodes.length - 1); i > -1;)
      XHTMLNode.removeChild(XHTMLNode.childNodes[i--]);
	if (XMLNode.childNodes && XMLNode.childNodes.length > 0)
		for (i = 0, last = XMLNode.childNodes.length; i < last;)
			copyNodes(XMLNode.childNodes[i++], XHTMLNode);
  XHTMLNode.innerHTML = XHTMLNode.innerHTML;
}

// Copy from an XML document node to a XHTML DOM node.
function copyNodes (ajaxnode, copiednode) {
	switch (ajaxnode.nodeType) {
    case document.ELEMENT_NODE:
			var newNode = document.createElement(ajaxnode.nodeName);
			if (ajaxnode.attributes && ajaxnode.attributes.length > 0)
				for (var i = 0, last = ajaxnode.attributes.length; i < last;)
          newNode.setAttribute(ajaxnode.attributes[i].nodeName, ajaxnode.getAttribute(ajaxnode.attributes[i++].nodeName));
 			if (ajaxnode.childNodes && ajaxnode.childNodes.length > 0)
				for (i = 0, last = ajaxnode.childNodes.length; i < last;)
					copyNodes(ajaxnode.childNodes[i++], newNode);
			copiednode.appendChild(newNode);
      break;
    case document.TEXT_NODE:
    case document.CDATA_SECTION_NODE:
    case document.COMMENT_NODE:
      copiednode.appendChild(document.createTextNode(ajaxnode.nodeValue));
      break;
  }
}

// Hide/display a division when clicked by the user
function showMore(newsItem) {
  if (document.getElementById("m_"+newsItem).style.display == "none") {
    document.getElementById("c_"+newsItem).innerHTML = "(less)";
    document.getElementById("m_"+newsItem).style.display = "inline";
  } else {
    document.getElementById("c_"+newsItem).innerHTML = "(more)...";
    document.getElementById("m_"+newsItem).style.display = "none";
  }
}

// Switch betwen divisions when clicked by the user
function switchDiv(newDiv, allDiv) {
  for(i=0; i<allDiv.length; i++) {
    document.getElementById(allDiv[i]).style.display = "none";
  }
  document.getElementById(newDiv).style.display = "inline";
}

// Print the date that this current document was last modified.
function printDateModified() {
  var days = new Array(8);
  days[1] = "Sunday";
  days[2] = "Monday";
  days[3] = "Tuesday";
  days[4] = "Wednesday";
  days[5] = "Thursday";
  days[6] = "Friday";
  days[7] = "Saturday";
  var months = new Array(13);
  months[1] = "January";
  months[2] = "February";
  months[3] = "March";
  months[4] = "April";
  months[5] = "May";
  months[6] = "June";
  months[7] = "July";
  months[8] = "August";
  months[9] = "September";
  months[10] = "October";
  months[11] = "November";
  months[12] = "December";
  var dateObj = new Date(document.lastModified);
  if (!isNaN(dateObj.getDay())) {
    var wday = days[dateObj.getDay() + 1];
    var lmonth = months[dateObj.getMonth() + 1];
    var date = dateObj.getDate();
    var fyear = dateObj.getYear();
    if (fyear < 2000) fyear = fyear + 1900;
    document.write(wday + ", " + lmonth + " " + date + ", " + fyear)
  } else {
    document.write("(Feature not supported by browser)");
  }
}

// Determine which color is appropriate according to the Christian season.
function getCross() {
  // Set up the image files to be used.
  var theImages = new Array()
  theImages[0] = '../images/season_black.gif'
  theImages[1] = '../images/season_blue.gif'
  theImages[2] = '../images/season_gold.gif'
  theImages[3] = '../images/season_gray.gif'
  theImages[4] = '../images/season_green.gif'
  theImages[5] = '../images/season_purple.gif'
  theImages[6] = '../images/season_red.gif'
  theImages[7] = '../images/season_white.gif'
  
  // Define the colors as indices.
  var black = 0;
  var blue = 1;
  var gold = 2;
  var gray = 3;
  var green = 4;
  var purple = 5;
  var red = 6;
  var white = 7;
  
  // Define the Christian calendar.
  var cc = new Array;
  cc[cc.length] = new Array(new Date("May 29, 2005"), green);
  cc[cc.length] = new Array(new Date("November 1, 2005"), red);
  cc[cc.length] = new Array(new Date("November 6, 2005"), green);
  cc[cc.length] = new Array(new Date("November 20, 2005"), white);
  cc[cc.length] = new Array(new Date("November 27, 2005"), blue);
  cc[cc.length] = new Array(new Date("December 24, 2005"), white);
  cc[cc.length] = new Array(new Date("January 15, 2006"), green);
  cc[cc.length] = new Array(new Date("February 26, 2006"), white);
  cc[cc.length] = new Array(new Date("March 1, 2006"), gray);
  cc[cc.length] = new Array(new Date("March 2, 2006"), purple);
  cc[cc.length] = new Array(new Date("April 9, 2006"), red);
  cc[cc.length] = new Array(new Date("April 14, 2006"), black);
  cc[cc.length] = new Array(new Date("April 16, 2006"), white);
  cc[cc.length] = new Array(new Date("June 4, 2006"), red);
  cc[cc.length] = new Array(new Date("June 5, 2006"), white);
  cc[cc.length] = new Array(new Date("June 18, 2006"), green);
  cc[cc.length] = new Array(new Date("November 1, 2006"), red);
  cc[cc.length] = new Array(new Date("November 6, 2006"), green);
  cc[cc.length] = new Array(new Date("November 26, 2006"), white);
  cc[cc.length] = new Array(new Date("December 3, 2006"), blue);
  cc[cc.length] = new Array(new Date("December 24, 2006"), white);
  cc[cc.length] = new Array(new Date("January 14, 2007"), green);
  cc[cc.length] = new Array(new Date("February 18, 2007"), white);
  cc[cc.length] = new Array(new Date("February 21, 2007"), gray);
  cc[cc.length] = new Array(new Date("February 22, 2007"), purple);
  cc[cc.length] = new Array(new Date("April 1, 2007"), red);
  cc[cc.length] = new Array(new Date("April 6, 2007"), black);
  cc[cc.length] = new Array(new Date("April 8, 2007"), white);
  cc[cc.length] = new Array(new Date("May 27, 2007"), red);
  cc[cc.length] = new Array(new Date("June 3, 2007"), white);
  cc[cc.length] = new Array(new Date("June 10, 2007"), green);
  cc[cc.length] = new Array(new Date("November 1, 2007"), white);
  cc[cc.length] = new Array(new Date("November 11, 2007"), green);
  cc[cc.length] = new Array(new Date("November 25, 2007"), gold);
  cc[cc.length] = new Array(new Date("December 2, 2007"), blue);
  cc[cc.length] = new Array(new Date("December 24, 2007"), white);
  cc[cc.length] = new Array(new Date("January 20, 2008"), green);
  cc[cc.length] = new Array(new Date("February 3, 2008"), white);
  cc[cc.length] = new Array(new Date("February 6, 2008"), gray);
  cc[cc.length] = new Array(new Date("February 10, 2008"), purple);
  cc[cc.length] = new Array(new Date("March 16, 2008"), red);
  cc[cc.length] = new Array(new Date("March 21, 2008"), black);
  cc[cc.length] = new Array(new Date("March 23, 2008"), white);
  cc[cc.length] = new Array(new Date("May 11, 2008"), red);
  cc[cc.length] = new Array(new Date("May 18, 2008"), white);
  cc[cc.length] = new Array(new Date("May 25, 2008"), green);
  cc[cc.length] = new Array(new Date("November 1, 2008"), red);
  cc[cc.length] = new Array(new Date("November 9, 2008"), green);
  cc[cc.length] = new Array(new Date("November 27, 2008"), white);
  cc[cc.length] = new Array(new Date("November 30, 2008"), blue);
  cc[cc.length] = new Array(new Date("December 24, 2008"), white);
  cc[cc.length] = new Array(new Date("January 18, 2009"), green);
  cc[cc.length] = new Array(new Date("February 22, 2009"), gray);
  cc[cc.length] = new Array(new Date("February 23, 2009"), purple);
  cc[cc.length] = new Array(new Date("April 5, 2009"), red);
  cc[cc.length] = new Array(new Date("April 10, 2009"), black);
  cc[cc.length] = new Array(new Date("April 11, 2009"), white);
  cc[cc.length] = new Array(new Date("May 31, 2009"), red);
  cc[cc.length] = new Array(new Date("June 7, 2009"), white);
  cc[cc.length] = new Array(new Date("June 14, 2009"), green);
  cc[cc.length] = new Array(new Date("November 1, 2009"), white);
  cc[cc.length] = new Array(new Date("November 8, 2009"), green);
  cc[cc.length] = new Array(new Date("November 22, 2009"), gold);
  cc[cc.length] = new Array(new Date("November 26, 2009"), green);
  cc[cc.length] = new Array(new Date("November 29, 2009"), blue);
  cc[cc.length] = new Array(new Date("December 13, 2009"), purple);
  cc[cc.length] = new Array(new Date("December 24, 2009"), white);
  cc[cc.length] = new Array(new Date("January 17, 2010"), green);
  cc[cc.length] = new Array(new Date("February 14, 2010"), white);
  cc[cc.length] = new Array(new Date("February 17, 2010"), gray);
  cc[cc.length] = new Array(new Date("February 21, 2010"), purple);
  cc[cc.length] = new Array(new Date("March 28, 2010"), red);
  cc[cc.length] = new Array(new Date("April 2, 2010"), black);
  cc[cc.length] = new Array(new Date("April 4, 2010"), white);
  cc[cc.length] = new Array(new Date("May 23, 2010"), red);
  cc[cc.length] = new Array(new Date("May 30, 2010"), white);
  cc[cc.length] = new Array(new Date("June 6, 2010"), green);
  cc[cc.length] = new Array(new Date("October 31, 2010"), red);
  cc[cc.length] = new Array(new Date("November 1, 2010"), white);
  cc[cc.length] = new Array(new Date("November 7, 2010"), green);
  cc[cc.length] = new Array(new Date("November 21, 2010"), gold);
  cc[cc.length] = new Array(new Date("November 25, 2010"), green);
  cc[cc.length] = new Array(new Date("November 28, 2010"), blue);
  cc[cc.length] = new Array(new Date("December 24, 2010"), white);
  cc[cc.length] = new Array(new Date("January 16, 2011"), green);
  cc[cc.length] = new Array(new Date("March 6, 2011"), white);
  cc[cc.length] = new Array(new Date("March 9, 2011"), gray);
  cc[cc.length] = new Array(new Date("March 13, 2011"), purple);
  cc[cc.length] = new Array(new Date("April 17, 2011"), red);
  cc[cc.length] = new Array(new Date("April 22, 2011"), black);
  cc[cc.length] = new Array(new Date("April 23, 2011"), white);
  cc[cc.length] = new Array(new Date("June 12, 2011"), red);
  cc[cc.length] = new Array(new Date("June 16, 2011"), white);
  cc[cc.length] = new Array(new Date("June 26, 2011"), green);
  cc[cc.length] = new Array(new Date("November 1, 2011"), red);
  cc[cc.length] = new Array(new Date("November 6, 2011"), white);
  cc[cc.length] = new Array(new Date("November 13, 2011"), green);
  cc[cc.length] = new Array(new Date("November 20, 2011"), gold);
  cc[cc.length] = new Array(new Date("November 24, 2011"), green);
  cc[cc.length] = new Array(new Date("November 27, 2011"), blue);
  cc[cc.length] = new Array(new Date("December 24, 2011"), white);
  cc[cc.length] = new Array(new Date("January 15, 2012"), green);
  cc[cc.length] = new Array(new Date("February 22, 2012"), gray);
  cc[cc.length] = new Array(new Date("February 26, 2012"), purple);
  cc[cc.length] = new Array(new Date("April 1, 2012"), red);
  cc[cc.length] = new Array(new Date("April 6, 2012"), black);
  cc[cc.length] = new Array(new Date("April 7, 2012"), white);
  cc[cc.length] = new Array(new Date("May 22, 2012"), red);
  cc[cc.length] = new Array(new Date("June 3, 2012"), white);
  cc[cc.length] = new Array(new Date("June 10, 2012"), green);
  cc[cc.length] = new Array(new Date("November 1, 2012"), red);
  cc[cc.length] = new Array(new Date("November 4, 2012"), white);
  cc[cc.length] = new Array(new Date("November 11, 2012"), green);
  cc[cc.length] = new Array(new Date("November 25, 2012"), gold);
  cc[cc.length] = new Array(new Date("December 2, 2012"), blue);
  cc[cc.length] = new Array(new Date("December 24, 2012"), white);
  // Last Christian calendar entry.
  cc[cc.length] = new Array(new Date("December 31, 2099"), white);
  
  // Get the current date.
  var today = new Date();
  
  var j = 0
  var p = theImages.length;
  var preBuffer = new Array()
  for (i = 0; i < p; i++){
    preBuffer[i] = new Image()
    preBuffer[i].src = theImages[i]
  }
  var whichImage = 0;
  var seasonIndex = 0;
  while (today >= cc[seasonIndex][0]){
    whichImage = cc[seasonIndex][1];
    seasonIndex++;
  }
  
  return theImages[whichImage];
}
  
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-22403720-1']);
_gaq.push(['_trackPageview']);

(function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

