/*------------------------------------------------------------------------------
Function:       footnoteLinks()
Author:         Aaron Gustafson (aaron at easy-designs dot net)
Creation Date:  8 May 2005
Version:        1.3.3
Homepage:       http://www.easy-designs.net/code/footnoteLinks/
License:        Creative Commons Attribution-ShareAlike 2.0 License
                http://creativecommons.org/licenses/by-sa/2.0/
Note:           If you change or improve on this script, please let us know by
                emailing the author (above) with a link to your demo page.
------------------------------------------------------------------------------
April 2006 - Liana Thomas
* Changed footnoteLinks to take an array of IDs to traverse.
* Made a fix so that in IE images aren't counted. (checks that the 'href' and 'src' attribute are
	not equal which works because 'src' won't be set for non-image link tags)
* Changed classes from .printOnly to printonly and .ignore to .ignore-footnotes
------------------------------------------------------------------------------*/
function footnoteLinks(containerIDs,targetID) {
	if (!document.getElementById || !document.getElementsByTagName || !document.createElement) return false;

	var target = document.getElementById(targetID);
	var h2 = document.createElement('h2');
	addClass.apply(h2,['printonly']);
	var h2_txt = document.createTextNode('Links');
	h2.appendChild(h2_txt);
	var ol = document.createElement('ol');
	addClass.apply(ol,['printonly']);
	var num = 1;
	var myArr = [];

	for (z = 0;z < containerIDs.length;z++){
		if (!document.getElementById(containerIDs[z]) || !document.getElementById(targetID)) return false;

		var container = document.getElementById(containerIDs[z]);
		var coll = container.getElementsByTagName('*');
		var thisLink;

		for (var i=0; i<coll.length; i++) {
			var thisClass = coll[i].className;

			if ( ((coll[i].getAttribute('href') && coll[i].getAttribute('src') != coll[i].getAttribute('href')) || coll[i].getAttribute('cite'))
				&& (thisClass == '' || thisClass.indexOf('ignore-footnotes') == -1)) {
				thisLink = coll[i].getAttribute('href') ? coll[i].href : coll[i].cite;
				var note = document.createElement('sup');
				addClass.apply(note,['printonly']);
				var note_txt;
				var j = inArray.apply(myArr,[thisLink]);
				if ( j || j===0 ) {
					note_txt = document.createTextNode(j+1);
				} else {
					var li = document.createElement('li');
					var li_txt = document.createTextNode(thisLink);
					li.appendChild(li_txt);
					ol.appendChild(li);
					myArr.push(thisLink);
					note_txt = document.createTextNode(num);
					num++;
				}
				note.appendChild(note_txt);
				if (coll[i].tagName.toLowerCase() == 'blockquote') {
					var lastChild = lastChildContainingText.apply(coll[i]);
					lastChild.appendChild(note);
				} else {
					coll[i].parentNode.insertBefore(note, coll[i].nextSibling);
				}
			}
		}
	}
	target.appendChild(h2);
	target.appendChild(ol);
	addClass.apply(document.getElementsByTagName('html')[0],['noted']);
	return true;
}


function printFootNotesLoad() {
	ids = new Array("column2","column3");
  	footnoteLinks(ids,'print-links');
}

addLoadEvent(printFootNotesLoad);

/*------------------------------------------------------------------------------
Excerpts from the jsUtilities Library
Version:2.1
Homepage:   http://www.easy-designs.net/code/jsUtilities/
License:Creative Commons Attribution-ShareAlike 2.0 License
http://creativecommons.org/licenses/by-sa/2.0/
Note:   If you change or improve on this script, please let us know.
------------------------------------------------------------------------------*/
if(Array.prototype.push == null) {
  Array.prototype.push = function(item) {
this[this.length] = item;
return this.length;
  };
};
// ---------------------------------------------------------------------
//  function.apply (if unsupported)
//   Courtesy of Aaron Boodman - http://youngpup.net
// ---------------------------------------------------------------------
if (!Function.prototype.apply) {
  Function.prototype.apply = function(oScope, args) {
var sarg = [];
var rtrn, call;
if (!oScope) oScope = window;
if (!args) args = [];
for (var i = 0; i < args.length; i++) {
  sarg[i] = "args["+i+"]";
};
call = "oScope.__applyTemp__(" + sarg.join(",") + ");";
oScope.__applyTemp__ = this;
rtrn = eval(call);
oScope.__applyTemp__ = null;
	return rtrn;
  };
};
function inArray(needle) {
  for (var i=0; i < this.length; i++) {
if (this[i] === needle) {
  return i;
}
  }
  return false;
}
function addClass(theClass) {
  if (this.className != '') {
this.className += ' ' + theClass;
  } else {
this.className = theClass;
  }
}
function lastChildContainingText() {
  var testChild = this.lastChild;
  var contentCntnr = ['p','li','dd'];
  while (testChild.nodeType != 1) {
testChild = testChild.previousSibling;
  }
  var tag = testChild.tagName.toLowerCase();
  var tagInArr = inArray.apply(contentCntnr, [tag]);
  if (!tagInArr && tagInArr!==0) {
testChild = lastChildContainingText.apply(testChild);
  }
  return testChild;
}