// core.js
var Core = {};

if (document.addEventListener)
{
  Core.addEventListener = function(target, type, listener)
  {
    target.addEventListener(type, listener, false);
  };

  Core.removeEventListener = function(target, type, listener)
  {
    target.removeEventListener(type, listener, false);
  };

  Core.preventDefault = function(event)
  {
    event.preventDefault();
  };

  Core.stopPropagation = function(event)
  {
    event.stopPropagation();
  };
}
else if (document.attachEvent)
{
  Core.addEventListener = function(target, type, listener)
  {
    if (Core._findListener(target, type, listener) != -1) return;
    var listener2 = function()
    {
      var event = window.event;

      if (Function.prototype.call)
      {
        listener.call(target, event);
      }
      else
      {
        target._currentListener = listener;
        target._currentListener(event)
        target._currentListener = null;
      }
    };

    target.attachEvent("on" + type, listener2);

    var listenerRecord =
    {
      target: target,
      type: type,
      listener: listener,
      listener2: listener2
    };

    var targetDocument = target.document || target;
    var targetWindow = targetDocument.parentWindow;

    var listenerId = "l" + Core._listenerCounter++;

    if (!targetWindow._allListeners) targetWindow._allListeners = {};
    targetWindow._allListeners[listenerId] = listenerRecord;

    if (!target._listeners) target._listeners = [];
    target._listeners[target._listeners.length] = listenerId;

    if (!targetWindow._unloadListenerAdded)
    {
      targetWindow._unloadListenerAdded = true;
      targetWindow.attachEvent("onunload", Core._removeAllListeners);
    }
  };

  Core.removeEventListener = function(target, type, listener)
  {
    var listenerIndex = Core._findListener(target, type, listener);
    if (listenerIndex == -1) return;

    var targetDocument = target.document || target;
    var targetWindow = targetDocument.parentWindow;

    var listenerId = target._listeners[listenerIndex];
    var listenerRecord = targetWindow._allListeners[listenerId];

    target.detachEvent("on" + type, listenerRecord.listener2);
    target._listeners.splice(listenerIndex, 1);

    delete targetWindow._allListeners[listenerId];
  };

  Core.preventDefault = function(event)
  {
    event.returnValue = false;
  };

  Core.stopPropagation = function(event)
  {
    event.cancelBubble = true;
  };

  Core._findListener = function(target, type, listener)
  {
    var listeners = target._listeners;
    if (!listeners) return -1;

    var targetDocument = target.document || target;
    var targetWindow = targetDocument.parentWindow;

    for (var i = listeners.length - 1; i >= 0; i--)
    {
      var listenerId = listeners[i];

      var listenerRecord = targetWindow._allListeners[listenerId];

      if (listenerRecord.type == type && listenerRecord.listener == listener)
      {
        return i;
      }
    }
    return -1;
  };

  Core._removeAllListeners = function()
  {
    var targetWindow = this;

    for (id in targetWindow._allListeners)
    {
      var listenerRecord = targetWindow._allListeners[id];
      listenerRecord.target.detachEvent(
          "on" + listenerRecord.type, listenerRecord.listener2);
      delete targetWindow._allListeners[id];
    }
  };

  Core._listenerCounter = 0;
}

Core.addClass = function(target, theClass)
{
  if (!Core.hasClass(target, theClass))
  {
    if (target.className == "")
    {
      target.className = theClass;
    }
    else
    {
      target.className += " " + theClass;
    }
  }
};

Core.getElementsByClass = function(theClass)
{
  var elementArray = [];

  if (typeof document.all != "undefined")
  {
    elementArray = document.all;
  }
  else
  {
    elementArray = document.getElementsByTagName("*");
  }

  var matchedArray = [];
  var pattern = new RegExp("(^| )" + theClass + "( |$)");

  for (var i = 0; i < elementArray.length; i++)
  {
    if (pattern.test(elementArray[i].className))
    {
      matchedArray[matchedArray.length] = elementArray[i];
    }
  }

  return matchedArray;
};

Core.hasClass = function(target, theClass)
{
  var pattern = new RegExp("(^| )" + theClass + "( |$)");

  if (pattern.test(target.className))
  {
    return true;
  }

  return false;
};

Core.removeClass = function(target, theClass)
{
  var pattern = new RegExp("(^| )" + theClass + "( |$)");

  target.className = target.className.replace(pattern, "$1");
  target.className = target.className.replace(/ $/, "");
};

Core.getComputedStyle = function(element, styleProperty)
{
  var computedStyle = null;

  if (typeof element.currentStyle != "undefined")
  {
    computedStyle = element.currentStyle;
  }
  else
  {
    computedStyle = document.defaultView.getComputedStyle(element, null);
  }

  return computedStyle[styleProperty];
};

Core.start = function(runnable)
{
  Core.addEventListener(window, "load", runnable.init);
};

Core.createCookie = function(name,value,days)
{
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
};

Core.readCookie = function(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
};

Core.eraseCookie = function(name)
{
	createCookie(name,"",-1);
};

// activent.js
function emailService(){var i,j,x,y,x=
"x=\"783d227a3f2436636078287a36383b39363f5e24383638386538373568383539376637" +
"6534343866383738363538683867393634676739363833393939343838353936343b393638" +
"37323736383a343a343435383734323665383334323338353936383a393438383b39383837" +
"38383566373867393637653434383765343435663833383b67393538373865393638393439" +
"383868356339353b383538373837393439363239363838383b38353a383738333837363239" +
"383539363836383a38373b393838373833383539386739363436383b393867383538683837" +
"38673938663565343634673835683833356738683866353434343b35683935393764353235" +
"6438343863385e243d7b3f293738353936293d68717435663635382a6b3f323d6838673936" +
"6b3e7a306e3833383539677069766a36343735343d6b2d3f3435323736382b7d7b2d3f3a38" +
"373437777067756535343532366372672a29333835393627292d7a30383b39383875776475" +
"763738673936742a6b2e3437653434392b2b3d217b243d6c3f6778636e2a7a30656a637443" +
"762a322b2b3d7a3f7a307577647576742a332b3d7b3f29293d6871742a6b3f323d6b3e7a30" +
"6e677069766a3d6b2d3f33322b7d7b2d3f7a307577647576742a6b2e372b3d216871742a6b" +
"3f373d6b3e7a306e677069766a3d6b2d3f33322b7d7b2d3f7a307577647576742a6b2e372b" +
"3d217b3f7b307577647576742a6c2b3d223b793d27273b783d756e6573636170652878293b" +
"666f7228693d303b693c782e6c656e6774683b692b2b297b6a3d782e63686172436f646541" +
"742869292d323b6966286a3c3332296a2b3d39343b792b3d537472696e672e66726f6d4368" +
"6172436f6465286a297d79\";y='';for(i=0;i<x.length;i+=2){y+=unescape('%'+x.s" +
"ubstr(i,2));}y";
while(x=eval(x));}

var SubNav =
{
	init: function()
	{
		var mainNavItems = document.getElementById("nav").getElementsByTagName("li"); ;
				
		for ( var i = 0; i < mainNavItems.length; i++ )
		{
			mainNavItems[i].onmouseover = function() { Core.addClass(this, "subnav"); } ;
			mainNavItems[i].onmouseout = function() { Core.removeClass(this, "subnav"); } ;
		}
	},
	
	clickHandler: function()
	{
		open(this.href) ;
		return false ;
	}
};

Core.start(SubNav) ;

// externallinks.js
var externalLinks =
{
	init: function()
	{
		var links = Core.getElementsByClass("external") ;
				
		for ( var i = 0; i < links.length; i++ )
		{
			links[i].onclick = externalLinks.clickHandler ;
		}
	},
	
	clickHandler: function()
	{
		open(this.href) ;
		return false ;
	}
};

Core.start(externalLinks) ;
