// <![CDATA[

function addEvent(elm, evType, fn, useCapture)
// cross-browser event handling for IE5+, NS6+ and Mozilla/Gecko
// By Scott Andrew
{
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture); 
		return true; 
	} else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn); 
		return r; 
	} else {
		elm['on' + evType] = fn;
	}
}
  
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

/*
 * Clear Default Text: functions for clearing and replacing default text in
 * <input> elements.
 */
addEvent(window, 'load', init, false);

function init() {
    var formInputs = document.getElementsByTagName('input');
    for (var i = 0; i < formInputs.length; i++) {
        var theInput = formInputs[i];
        
        if (theInput.type == 'search' && theInput.className.match(/\bcleardefault\b/)) {  
            /* Add event handlers */          
            //addEvent(theInput, 'focus', clearDefaultText, false);
            //addEvent(theInput, 'blur', replaceDefaultText, false);
            
            /* Save the current value */
            if (theInput.value != '') {
                theInput.defaultText = theInput.value;
            }
        }
    }
}

function clearDefaultText(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    if (target.value == target.defaultText) {
        target.value = '';
    }
}

function replaceDefaultText(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    if (target.value == '' && target.defaultText) {
        target.value = target.defaultText;
    }
}

// show external links in new window
function externalLinks() {
    if (!document.getElementsByTagName) {
        // do nothing
    } else {
        var anchors = document.getElementsByTagName("a");
        for(var i=0; i<anchors.length; i++) {
            var anchor = anchors[i];
            if (anchor.getAttribute("rel") == "external") {
                anchor.target = "_blank";
            }

            if (anchor.getAttribute("rel") == "webImage") {
                anchor.onclick = imageWindow;
            }
        }
    }
 }
addEvent(window, "load", externalLinks, false);

// show and hide comparinator tabs
var cmp = {	  
	expandFirst: function() {
		if (!document.getElementById || !document.getElementsByTagName) { return; }
  		if (!document.getElementById('comparinator')) { return; }
		var comparinatorContent = document.getElementById('cmp-content');
		var comparinatorContainers = comparinatorContent.getElementsByTagName('dl');
		var links = document.getElementById("cmp-tabs").getElementsByTagName("a");
		var firstTab = links[0];
		comparinatorContainers[0].style.display = 'block';
		firstTab.parentNode.className = 'active';
	},
	
    hideContent: function() {
    	if (!document.getElementById || !document.getElementsByTagName) { return; }
  		if (!document.getElementById('comparinator')) { return; }
    	var comparinatorContent = document.getElementById('cmp-content');
		var comparinatorContainers = comparinatorContent.getElementsByTagName('dl');
		var links = document.getElementById("cmp-tabs").getElementsByTagName("a");	
        for (var i=0; i<comparinatorContainers.length; i++) {
            comparinatorContainers[i].style.display = 'none';
            links[i].parentNode.className = '';            
		}
	},
    
   clickedTab: function() {
   		if (!document.getElementById || !document.getElementsByTagName) { return; }
  		if (!document.getElementById('comparinator')) { return; }
   		var comparinatorContent = document.getElementById('cmp-content');
		var comparinatorContainers = comparinatorContent.getElementsByTagName('dl');
		var links = document.getElementById("cmp-tabs").getElementsByTagName("a");
        for (var i=0; i<links.length; i++) {		            
            eval("links[i].onclick = function() { cmp.hideContent(); links["+i+"].parentNode.className = 'active'; comparinatorContainers["+i+"].style.display = 'block'; return false;}");            
   		} 
	}  
}
addLoadEvent(cmp.hideContent);
addLoadEvent(cmp.clickedTab);
addLoadEvent(cmp.expandFirst);

// footnotes and citation links for print style
//var lnk = {
	//footnoteLinks: function() {
	  //if (!document.getElementById ||
		  //!document.getElementsByTagName ||
		  //!document.createElement) return false;
	  //if (!document.getElementById('content') ||
		  //!document.getElementById('links')) return false;
	  //var container = document.getElementById('content');
	  //var target    = document.getElementById('links');
	  //var h2        = document.createElement('h2');
	  //addClass.apply(h2,['printOnly']);
	  //var h2_txt    = document.createTextNode('Links');
	  //h2.appendChild(h2_txt);
	  //var coll = container.getElementsByTagName('*');
	  //var ol   = document.createElement('ol');
	  //addClass.apply(ol,['printOnly']);
	  //var myArr = [];
	  //var thisLink;
	  //var num = 1;
	  //for (var i=0; i<coll.length; i++) {
		//var thisClass = coll[i].className;
		//if ( (coll[i].getAttribute('href') ||
			  //coll[i].getAttribute('cite')) &&
			  //(thisClass == '' ||
			   //thisClass.indexOf('ignore') == -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;
	//}
//}
//addLoadEvent(lnk.footnoteLinks);

function inArray(needle) { for (var i=0; i < this.length; i++) { if (this[i] === needle) { return i; } } return false; } Array.inArray = inArray;
function addClass(theClass) { if (this.className != '') { this.className += ' ' + theClass; } else { this.className = theClass; } } Object.addClass = addClass;

// text utilities
function replaceText(el, text) {
  if (el != null) {
	clearText(el);
	var newNode = document.createTextNode(text);
	el.appendChild(newNode);
  }
}

function clearText(el) {
  if (el != null) {
	if (el.childNodes) {
	  for (var i = 0; i < el.childNodes.length; i++) {
		var childNode = el.childNodes[i];
		el.removeChild(childNode);
	  }
	}
  }
}

function appendText(node, text) {
   var newTextNode = document.createTextNode(text);
   node.appendChild(newTextNode);
}

function getText(el) {
  var text = "";
  if (el != null) {
	if (el.childNodes) {
	  for (var i = 0; i < el.childNodes.length; i++) {
		var childNode = el.childNodes[i];
		if (childNode.nodeValue != null) {
		  text = text + childNode.nodeValue;
		}
	  }
	}
  }
  return text;
}

/*
 * Dynamic Menu
 * Written by Andy Peatling - http://www.cssdev.com/
 * April 1, 2006.
 */

addLoadEvent(collapseMenu);
addLoadEvent(prepareMenu);

function collapseMenu(node) {
	if (!document.getElementById) return false;
	if (!document.getElementById("menu")) return false;
	if (!node) node = document.getElementById("menu");

	if (node.childNodes.length > 0) {
		for (var i=0; i<node.childNodes.length; i++) {
			var child = node.childNodes[i];
			if (child.nodeName == "UL") {
					child.style.display = "none";
			}
			collapseMenu(child);
		}		
	}

}

function prepareMenu() {
	if (!document.getElementById || !document.getElementsByTagName) return false;
	if (!document.getElementById("menu")) return false;
	
	var links = document.getElementById("menu").getElementsByTagName("a");
	for (var i=0; i<links.length; i++) {
		links[i].onclick = function() {
			toggleMenu(this.parentNode.getElementsByTagName("UL")[0], this.href);
		}
		// addEvent(links[i], "blur", hideAll, false);
	}
}

/* function hideAll() {
	lists = document.getElementById('menu').getElementsByTagName('UL');
	for (var i=0; i<lists.length; i++) {
		lists[i].style.display = 'none';
	}
} */

function toggleMenu(node, link) {
	if (!document.getElementById) return false;
	if (!link || !node) return false;

	// Collapse all nodes, and only show clicked node (when clicking top level of menu)
	if (node.parentNode.parentNode.id == "menu") {
		hideTopLevels();
	}
	
	if (node.style.display == "") {
		node.style.display = "none"
	} else {
		node.style.display = ""
	}
}

function hideTopLevels() {
	if (!document.getElementById) return false;
	if (!(node = document.getElementById("menu"))) return false;	
	
	if (node.childNodes.length > 0) {
		for (var i=0; i<node.childNodes.length; i++) {
			var child = node.childNodes[i];
			for(var j=0; j<child.childNodes.length; j++) {
				var grandchild = child.childNodes[j];
				if (grandchild.nodeName == "UL") {
					if (grandchild.style.display == '') {
						grandchild.style.display = "none";
					}
				}
			}
		}		
	}
}

// curvy corners for ticker on homepage and throughout site
function tickerCorners() {
	if (!document.getElementById) return;
	if (!document.getElementById('ticker')) return;
	settings = {
		tl: { radius: 8 },
		tr: { radius: 8 },
		bl: { radius: 8 },
		br: { radius: 8 },
		antiAlias: true,
		autoPad: false
    }
    var divObj = document.getElementById("ticker");
    var cornersObj = new curvyCorners(settings, divObj);
    cornersObj.applyCornersToAll();
}
addLoadEvent(tickerCorners);

// ]]>