﻿/*******************************************
* JavaScript: Ashgrove Program Library
* Develop: 2006.02.22 By: Sitepoint
* Created: 2006.08.30 By: Lee Eschen
*	Version: 2006.09.11	No:	1.0
* Updated: 2008.04.02 By: Lee Eschen
* Changed: Minor cleanup, nothing functional
********************************************
* W3C Event Handling Functions
*******************************************/

function stopDefaultAction(event)
{
  event.returnValue = false;
  if (typeof event.preventDefault != "undefined")
  {
    event.preventDefault();
  }
  return true;
}

function stopEvent(event)
{
  if (typeof event.stopPropagation != "undefined")
  {
    event.stopPropagation();
  }
  else
  {
    event.cancelBubble = true;
  }
  return true;
}

function getEventTarget(event)
{
  var targetElement;

  if (typeof event.target != "undefined")
  {
    targetElement = event.target;
  }
  else if (typeof event.srcElement != "undefined")
  {
    targetElement = event.srcElement;
  }
  else
  {
		alert( "No event found" );
  	return null;
  }
  while ( targetElement.nodeType == 3 && targetElement.parentNode !== null )
  {
    targetElement = targetElement.parentNode;
  }

  return targetElement;
}

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

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

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

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

function detachEventListener(targetElement, eventType, functionRef, capture)
{
  if (typeof targetElement.removeEventListener != "undefined")
  {
    targetElement.removeEventListener(eventType, functionRef, capture);
  }
  else if (typeof targetElement.detachEvent != "undefined")
  {
    targetElement.detachEvent("on" + eventType, functionRef);
  }
  else
  {
    targetElement["on" + eventType] = null;
  }
  return true;
}

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

function engage(attrRef)
{
  var attrValue = this.getAttribute(attrRef);

  alert("Engage: " + attrRef + " = " + attrValue);

  return true;
}

/* END of javascript */
