function addLoadListener(fn)
{
 if (typeof window.addEventListener != 'undefined')
 {
   window.addEventListener('load', fn, false);
 }
 else if (typeof document.addEventListener != 'undefined')
 {
   document.addEventListener('load', fn, false);
 }
 else if (typeof window.attachEvent != 'undefined')
 {
   window.attachEvent('onload', fn);
 }
 else
 {
   var oldfn = window.onload;
   if (typeof window.onload != 'function')
   {
     window.onload = fn;
   }
   else
   {
     window.onload = function()
     {
       oldfn();
       fn();
     };
   }
 }
}

function attachEventListener(target, eventType, functionRef, capture)
{
 if (typeof target.addEventListener != "undefined")
 {
   target.addEventListener(eventType, functionRef, capture);
 }
 else if (typeof target.attachEvent != "undefined")
 {
   target.attachEvent("on" + eventType, functionRef);
 }
 else
 {
   eventType = "on" + eventType;

   if (typeof target[eventType] == "function")
   {
     var oldListener = target[eventType];

     target[eventType] = function()
     {
       oldListener();

       return functionRef();
     };
   }
   else
   {
     target[eventType] = functionRef;
   }
 }
}

function getEventTarget(event)
{
 var targetElement = null;

 if (typeof event.target != "undefined")
 {
   targetElement = event.target;
 }
 else
 {
   targetElement = event.srcElement;
 }

 while (targetElement.nodeType == 3 &&
     targetElement.parentNode != null)
 {
   targetElement = targetElement.parentNode;
 }

 return targetElement;
}

function getCallingElementId(event,elementTag){

	if (typeof event == "undefined")
	 {
	   event = window.event;
	 }
	
	 var target = getEventTarget(event);
	
	 while(target.nodeName.toLowerCase() != elementTag)
	 {
	   target = target.parentNode;
	 }
	
	 return target.getAttribute("id");
	
}

addLoadListener(setHeaderImage);

function setHeaderImage() {
	if ( null != document.getElementById("headerimage") ) {
		var headerImage = document.getElementById("headerimage");
		var twoweeks = 1000*60*60*24*14;
		var onemonth = 1000*60*60*24*31;
		var today = new Date();
		var easter = Easter(today.getFullYear());
		var xmas = new Date();
		xmas.setFullYear(today.getFullYear(),11,25);
		var valentines = new Date();
		valentines.setFullYear(today.getFullYear(),1,14);
		
		//document.write("Easter: " + easter.getTime() + "<br />Christmas: " + xmas.getTime() + "<br />Valentine: " + valentines.getTime() + "<br />Today: " + today.getTime() + "<br />2 weeks: " + twoweeks);
		
		if ( Math.abs(easter.getTime()-today.getTime()) < onemonth ) {
			// It's easter
			headerImage.src = "/assets/images/header-easter.gif";
		} else if ( Math.abs(xmas.getTime()-today.getTime()) < onemonth ) {
			// It's Christmas
			headerImage.src = "/assets/images/header-xmas.gif";
		} else if ( Math.abs(valentines.getTime()-today.getTime()) < twoweeks ) {
			// It's Valentine's Day
			headerImage.src = "/assets/images/header-valentines.gif";
		} else {
			headerImage.src = "/assets/images/header.gif";
		}
	}
}

function Easter(Y) {
    var C = Math.floor(Y/100);
    var N = Y - 19*Math.floor(Y/19);
    var K = Math.floor((C - 17)/25);
    var I = C - Math.floor(C/4) - Math.floor((C - K)/3) + 19*N + 15;
    I = I - 30*Math.floor((I/30));
    I = I - Math.floor(I/28)*(1 - Math.floor(I/28)*Math.floor(29/(I + 1))*Math.floor((21 - N)/11));
    var J = Y + Math.floor(Y/4) + I + 2 - C + Math.floor(C/4);
    J = J - 7*Math.floor(J/7);
    var L = I - J;
    var M = 3 + Math.floor((L + 40)/44);
    var D = L + 28 - 31*Math.floor(M/4);
		
		var easter = new Date();
		easter.setFullYear(Y,(M-1),D);

    return easter;
}