function $() 
{
	var e;
	var ee = new Array();
	var n = arguments.length;
	for (var i = 0; i < n; i++) 
	{
		e = arguments[i];
		if (typeof e == 'string') e = document.getElementById(e);
		if (n == 1) return e;
		ee.push(e);
	}
	return ee;
}

var $A = Array.from = function(o) 
{
	if (!o) return [];
	if (o.toArray) return o.toArray();
  	else 
  	{
  		var n = o.length;
    	var a = [];
		for (var i = 0; i < n; i++)
			a.push(o[i]);
    	return a;
	}
}
function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}

var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();
addEvent(window,'unload',EventCache.flush);

function getEventSource(e)
{
	if (!e) var e = window.event;
	if (e.target) 
		return e.target;
	return e.srcElement;
}

function getParent(e, t)
{
	var ee = e;
	var tt = t.toUpperCase();
	while (ee.parentNode && (!ee.tagName || (ee.tagName.toUpperCase() != tt)))
		ee = ee.parentNode;
	return ee;
}

function arrayShift(a)
{
	var result = a[0];
	var n = a.length - 1;
    for (var i = 0; i < n; i++)
      a[i] = a[i + 1];
    a.length--;
    return result;
}

function getInnerText(o)
{
	if ((typeof o == "string") || (typeof o == "undefined")) return o;
	if (o.innerText) return o.innerText;	//Not needed but it is faster
	var s = "";
	var a = $A(o.childNodes);
	var n = a.length;
	for(i=0; i<n; i++)
	{
		switch(a[i].nodeType)
		{
			case 1: s += getInnerText(a[i]); break;
			case 3: s += a[i].nodeValue; break;
		}
	}
	return s;
}

function getElementsByClassName (name, node, tag)
{
	if(!node) node = document;
	if(!tag) tag = '*';
	var els = node.getElementsByTagName(tag);
	var n = els.length;
	var pattern = new RegExp("(^|\s)"+name+"(\s|$)");
	var result = new Array();
	for(var i = 0; i < n; i++)
		if(pattern.test(els[i].className))
			result.push(els[i]);

	return result;
}

function toggle() 
{
	for ( var i=0, n= arguments.length; i < n; i++ )
		$(arguments[i]).style.display = ($(arguments[i]).style.display != 'none' ? 'none' : '' );
	return false;
}


function targetExternalLinks() 
{
	var link, icon;
    var links = document.getElementsByTagName("a");
    for (var i = 0, j=links.length; i < j; i++) 
    {
 
        link = links[i];
		if ((link.href)  && (link.href.indexOf("mailto")  != -1 || link.href.indexOf(".pdf")  != -1 || link.href.indexOf(".doc")  != -1 || (link.href.indexOf("pcschools.org") == -1) &&  (link.href.indexOf("portlandchristianschools.com") == -1) &&  (link.href.indexOf("portlandchristianschools.org") == -1) && (link.href.indexOf("javascript") == -1)))
      	{
			link.target = "_blank";
			if(link.href.indexOf("labsix") == -1)
			{
				icon = document.createElement('img');
				icon.alt='external link';
				icon.className='icon';
				
				if (link.href.indexOf(".pdf")  != -1)
					icon.src = 'pub/theme/image/pdf.gif';
				else if (link.href.indexOf(".doc")  != -1)
					icon.src = 'pub/theme/image/doc.gif';
				else if (link.href.indexOf("mailto")  != -1)
					icon.src = 'pub/theme/image/mail.gif';
				else
					icon.src = 'pub/theme/image/external.gif';

				link.appendChild(icon);
			}
		}
    }
}

function addDOMLoadEvent(func) 
{
   if (!window.__load_events) 
   {
      var init = function () 
      {
          if (arguments.callee.done) return;
          arguments.callee.done = true;
          if (window.__load_timer) 
          {
              clearInterval(window.__load_timer);
              window.__load_timer = null;
          }
          for (var i=0;i < window.__load_events.length;i++)
              window.__load_events[i]();
          window.__load_events = null;
      };
   
      if (document.addEventListener)
          document.addEventListener("DOMContentLoaded", init, false);
      
      // for Internet Explorer
      /*@cc_on @*/
      /*@if (@_win32)
          document.write("<scr"+"ipt id=__ie_onload defer src=javascript:void(0)><\/scr"+"ipt>");
          var script = document.getElementById("__ie_onload");
          script.onreadystatechange = function() {
              if (this.readyState == "complete") {
                  init(); // call the onload handler
              }
          };
      /*@end @*/
      
      // for Safari
      if (/WebKit/i.test(navigator.userAgent)) { // sniff
          window.__load_timer = setInterval(function() {
              if (/loaded|complete/.test(document.readyState)) {
                  init(); // call the onload handler
              }
          }, 10);
      }
      
      window.onload = init;
	window.__load_events = [];
   }
   window.__load_events.push(func);
}

